Skip to content

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.

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.

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 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.

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

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.

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.

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.

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.

Every version is pushed to a connected repository, which is a read-only mirror of this history. See Mirror config to a Git repository.