Docs
Self-hosting
The Community edition is the same product, free and open source (AGPL server, MIT collector), with no limits: one Rust binary, SQLite to try it and Postgres for production.
Install
cargo build --release ./target/release/trace init # choose where Trace keeps its data ./target/release/trace serve # prints a one-time link for the first account
trace init asks which database to use, checks it, creates the tables and saves the choice as TRACE_DB in trace.env. To run it in Docker, see the Dockerfile and deploy/README.md in the repository.
SQLite or Postgres
| When | TRACE_DB | |
|---|---|---|
| SQLite | Trying Trace, development, a few small websites. Nothing to install. | trace.db |
| Postgres | A server other people rely on. Needs Postgres 10 or newer. | postgres://trace:PASSWORD@localhost/trace |
createuser trace --pwprompt && createdb trace --owner trace trace init --database postgres --db postgres://trace:PASSWORD@localhost/trace
Settings
| Variable | Default | |
|---|---|---|
TRACE_ADDR | 127.0.0.1:4318 | Listen address |
TRACE_ALLOW_SIGNUP | off | Let anyone create an account |
TRACE_RETENTION_DAYS | 90 | Delete raw events older than this |
TRACE_DEFAULT_PLAN | unlimited | Plan for new accounts |
Then point the tag and your agent at your own address: https://trace.example.com/d.js and https://trace.example.com/mcp.
Backups and upgrades
Back up SQLite with Litestream or sqlite3 trace.db ".backup backup.db", and Postgres with its own tools. Upgrades add columns and tables on start and never remove any, so keep a backup before each one.
Moving from hosted
It is the same software. Your tag and trace.json stay the same; only the server address changes. The code is on GitHub.