> ## Documentation Index
> Fetch the complete documentation index at: https://filetrace.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Versions and release channels

> How Filetrace versions are numbered, what the stable and lts channels carry, how candidates and untagged builds are marked, and how installs follow them.

A Filetrace version tells you when its release line was cut, which patch of that line it is, and how far it is from the release before it. This page explains the version format, the `stable` and `lts` channels, release candidates and untagged builds, how the installer, the package repositories and Homebrew map to the channels, and what happens on an upgrade.

## Version format

A version reads `year.month.patch.build`. `26.11.1.80` is the first release of the line cut in November 2026, 80 commits after the release before it.

| Part | In `26.11.1.80` | Meaning |
| - | - | - |
| `year.month` | `26.11` | The release line, named after the month (UTC) in which it was cut. |
| `patch` | `1` | 1 for the release that opens the line, one more for each later release of the line. |
| `build` | `80` | The number of commits since the release this one follows. |

One line opens per month. A second release in the same month is a patch of that line.

## Tags and files

A release is tagged with its version and the channel of its line, such as `v26.11.1.80-stable`. Its files are published as the assets of the [GitHub release](https://github.com/OrlovEvgeny/filetrace/releases) and under `https://filetrace.eorlov.org/dist/<tag>/`:

| File | Contents |
| - | - |
| `filetrace-<version>-<os>-<arch>.tar.gz` | The programs, for `linux` or `darwin` on `amd64` or `arm64` |
| deb, rpm and apk packages | The programs, the configuration file and the service definitions |
| `install.sh` | The installer of this release |
| `SHA256SUMS` | The SHA-256 checksum of every other file |

A published release is never changed. A bad release is followed by a patch. [Security](https://filetrace.mintlify.site/reference/security.md#verifying-a-download) explains how to verify the files.

## Release lines and channels

Each release line is either a stable line or an lts line, an lts line being one that keeps receiving patches. The tags of its releases say which (`-stable` or `-lts`). The package repositories and the installer offer two channels built from them:

| Channel | Carries |
| - | - |
| `stable` | Every release, of stable and lts lines alike. Its newest release is the newest of all. |
| `lts` | Only the releases of lts lines. |

Fixes go into the newest release line and into the lts lines. Follow `lts` to receive only the releases of those lines, or `stable` to follow the newest release.

### Release candidates

A release tagged `-prestable` is a candidate. It is published as a GitHub pre-release and its files appear under `https://filetrace.eorlov.org/dist/<tag>/`, but it reaches no package repository, no Homebrew formula and no installer channel. The release that follows counts its build number as if the candidate were not there. To try a candidate, download its archive from the pre-release.

### Builds without a release tag

A build from a commit that carries no release tag reports the release before it and the distance from it: `26.11.1.80+5.gabc1234` is 5 commits after `26.11.1.80`, at commit `abc1234`. A build from a tree with no release in its history reports `0.0.0.<commits>+g<commit>`, and uncommitted changes add `dirty` after the `+`.

## Which version is installed

`filetrace version` prints the version of the command, and whether the agent is running:

```bash theme={null}
filetrace version
```

```text theme={null}
Filetrace 26.11.1.147

Platform:       Linux aarch64
Kernel:         7.0.14-linuxkit
Backend:        Linux eBPF
Compiler:       Clang 19.1.7
Build:          Release
Commit:         281c5aee6aaa
Agent:          Running
```

`filetrace-agent --version` prints the version of the agent binary, and the `version` field of `filetrace stats --json` that of the running agent.

## Channels by install method

| Method | Follows `stable` | Follows `lts` | Installs one version |
| - | - | - | - |
| Installer script | default | `--channel lts` | `--version 26.11.1.80` |
| apt | `Suites: stable` | `Suites: lts` | `sudo apt install filetrace=26.11.1.80` |
| dnf, yum | `baseurl=https://filetrace.eorlov.org/rpm/stable/$basearch` | `.../rpm/lts/$basearch` | `sudo dnf install filetrace-26.11.1.80` |
| zypper | `https://filetrace.eorlov.org/rpm/stable/$basearch` | `.../rpm/lts/$basearch` | `sudo zypper install filetrace=26.11.1.80` |
| apk | `https://filetrace.eorlov.org/apk/stable` | `.../apk/lts` | `apk add filetrace=26.11.1.80`, as root |
| Homebrew | `filetrace`, the newest release | | |
| Archives | | | `https://filetrace.eorlov.org/dist/<tag>/` |

The installer accepts `FILETRACE_CHANNEL` and `FILETRACE_VERSION` in place of `--channel` and `--version`:

```bash theme={null}
curl -fsSL https://filetrace.eorlov.org/install.sh | sudo sh -s -- --channel lts
```

The package version is the Filetrace version, so the package manager's own commands show and pin it. To move a host to another channel, change `stable` to `lts` (or back) in its repository definition, or run the installer again with `--channel`. [Installation](https://filetrace.mintlify.site/installation.md) shows the repository definitions in full.

### Homebrew

The tap `orlovevgeny/filetrace` has a formula `filetrace` for the newest release and a formula `filetrace@<line>` for each release line, which follows the releases of that line only and is keg-only:

```bash theme={null}
brew install orlovevgeny/filetrace/filetrace
brew install orlovevgeny/filetrace/filetrace@26.11
```

Homebrew installs the programs only, on macOS 15 or later and on Linux, without a service.

## Upgrades

* An upgrade never overwrites `/etc/filetrace/config.toml`.

* The command and the agent speak one protocol version, so an upgrade restarts a running agent. The deb, rpm and apk packages, and the installer when it upgrades an archive installation, first run `filetrace config validate`. If the new version does not accept the configuration file, they leave the running agent alone and warn:

  ```text theme={null}
  filetrace: /etc/filetrace/config.toml is not valid for this version, so filetrace-agent was not restarted
  ```

  Fix what `filetrace config validate` reports, then restart `filetrace-agent`.

* An upgrade does not start an agent that was stopped.

* A command that reaches an agent of another protocol version fails with exit code 1:

  ```text theme={null}
  The agent speaks a different protocol version. Upgrade filetrace and filetrace-agent together.
  ```

* Homebrew installs no service. Restart an agent that you run yourself after upgrading the formula.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.