Version history and rollback
LinkMesh keeps your collector configuration in a git repository on the server. There is no separate “deploy” step: a change is live the moment you save it, and every save is recorded as a version. Settings → History lists the versions: who changed what, and when. Expand a version to see the files it changed, and a file to see its diff.
Saving is live
Section titled “Saving is live”When you save a route, a source or destination activation, a pipeline, an extension or a collector’s settings, your collectors get the new configuration:
| Runtime | When a saved change arrives |
|---|---|
| Grafana Alloy | On its next poll — 60 seconds by default |
| otelcol-contrib (OpAMP) and agent-managed collectors | Pushed when you save routes, activations, sources, destinations and extensions; other changes arrive with the next push or reconnect |
If a change does not seem to arrive, see Config not applying after save.
Every save is a version
Section titled “Every save is a version”Each save becomes exactly one version, however many collectors it touches — a route saved on a collector group is one version, not one per member. A version records:
- who made the change — the user or service account that saved it;
- what changed, as a short message such as Update route ‘errors-to-loki’ on group ‘edge’, plus the files and their diffs;
- when.
Changes the server makes on its own — the default configuration a new collector starts with, removing the configuration of a deleted collector, migrations at upgrade — are versions too, authored by LinkMesh System.
The live version
Section titled “The live version”The newest version is marked live. It is what your collectors run: Alloy collectors after their next poll, pushed collectors as soon as the push lands. There is exactly one live version at any time.
The same version is shown as Live version on Settings → GitOps and
Settings → Live, and returned as liveSha by GET /api/v1/settings/git.
What a version contains
Section titled “What a version contains”A version records the wiring of your fleet:
- which sources and destinations are activated on each collector and collector group, including the settings you override on that one activation
- routes
- pipelines and their processors
- collector extensions and the collector’s own settings
What a version does not contain
Section titled “What a version does not contain”Two things are not part of the version history, and a rollback leaves them as they are now:
- Source and destination settings — the endpoint, authentication and template fields you set on the source or destination itself. These are stored in the server’s database and read when a collector’s config is generated.
- Secret values — the history holds
${secret:name}references, never the values behind them. See Destination secrets.
So if you change a destination’s endpoint and then roll back to an earlier version, the routes and activations return to that version, but the destination keeps its new endpoint. To undo a settings change, edit the source or destination again.
The same notice appears on Settings → History and in the rollback confirmation.
Rolling back
Section titled “Rolling back”To undo a change, choose Rollback on the version you want to return to. Any version in the history can be chosen.
A rollback does not rewind the history. It adds a new version whose configuration is identical to the one you chose, and that new version becomes live. Nothing is deleted: the version you rolled back from stays in the history, so a rollback can itself be rolled back. The new configuration is pushed to every active collector right away, and Alloy collectors pick it up on their next poll.
Re-pushing the live configuration
Section titled “Re-pushing the live configuration”Settings → Live → Re-push current config to all collectors sends the live version to every active collector again. It is for recovery — a collector that missed a push — and changes nothing about what is live. It creates no version.
Over the API, POST /api/v1/config-as-code/publish re-pushes to every
active collector and POST /api/v1/config-as-code/publish/{collectorId} to
one; both return the live version as liveSha.
Changes that are live but not recorded
Section titled “Changes that are live but not recorded”If the server writes your change but cannot record it as a version, the save fails with an error saying so. The change is live on your collectors all the same. A branch indicator then appears in the top bar with the number of unrecorded changes; open it, review the changes and choose Record to make them a version. Record them before you roll back.
In normal operation this indicator is hidden: every save is recorded.
A connected Git repository
Section titled “A connected Git repository”Every version is pushed to a connected repository, which is a read-only mirror of this history. See Mirror config to a Git repository.
See also
Section titled “See also”- Destination — what a destination’s own settings cover
- Source — what a source’s own settings cover
- Destination secrets — how credentials stay out of git