🐜 trailant
Ants don't remember paths. They lay a trail as they move, and follow the strongest trail back.
trailant does the same for your work. It doesn't hold state of its own — it reads the trails
your tools already leave behind (Claude Code, Codex CLI, and other AI coding sessions) and
reconstructs where you were, so you can answer:
- "Where was I?" — resume the right session, in the right project, without hunting through directories or scrollback.
- "What did I actually do today / this week?" — a reconstructed activity view, useful for timesheets, standups, or just your own sanity.
- "Am I pacing myself sustainably?" — a cadence view of your own velocity over time, so a burnout trajectory shows up as data instead of only as hindsight.
No cloud, no telemetry, no account. Everything lives in plain, append-only JSONL files on your own
machine, so you can cat them, grep them, or check them into your own private git repo if you
want history on your history.
Why not just use claude --resume / codex resume?
Those work fine within one vendor. trailant exists for the parts they don't cover: a single view
across multiple AI coding tools, a way to reconstruct what a session or day was actually about
after the fact, and a lightweight trend view over weeks — none of which any single vendor's CLI is
trying to solve.
Design principles
- Transparent over opaque. The source of truth is plain JSONL — the same format Claude Code and Codex already use for their own session logs. No database holds unique data.
- Cache, never store, derived state. Any local index (e.g. SQLite) is a disposable accelerator, rebuildable at any time from the JSONL. Delete it whenever — nothing is lost.
- Supervised, not autonomous.
trailantnever sends anything (a log, an email) without showing you the draft first. It's meant to make a human-in-the-loop workflow faster, not to replace the human in the loop. - Vendor-agnostic via adapters. Each AI coding tool gets a small adapter that normalizes its session format into one internal shape. Adding a new vendor is a self-contained addition.
See docs/technical-overview.md for the full design spec.
Mascot: the Trail Ant 🐜 — doesn't remember, just reads the trail.
Install
git clone https://github.com/semanticintent/trailant.git
cd trailant
pip install -e .
Quickstart
trailant reindex # walk configured source directories, build the trail index
trailant resume # list recent sessions across all vendors, ranked by recency
trailant today # reconstructed view of today's activity
trailant log "debugging the retry logic in the ingest job" # manual entry, no editor needed
trailant cadence # velocity trend vs. your own baseline
trailant cadence --html # same data as a static HTML report (also on `resume`)
trailant diff # what changed in the index since the last `diff` run
trailant resume --print-command # also print the exact `claude --resume <id>` / `codex resume <id>`
Configuration lives at ~/.trailant/config.yaml and is created with sane defaults on first run.
See config.example.yaml in this repo for the full set of options.
Example output
--html on resume/cadence writes a static, screenshot-ready report instead of printing to
the terminal (--output PATH implies --html). These are real renders — synthetic demo data, but
the actual command output, not a mockup:
Status
Early / pre-alpha. The Claude Code and Codex adapters are functional against the documented
session formats; other vendors are not yet implemented. Interfaces may change. Contributions and
adapters for other tools (Cursor, Gemini CLI, etc.) are very welcome — see
CONTRIBUTING.md.
License
MIT — see LICENSE.
Metadata
Release files for trailant 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| trailant-0.5.2.tar.gz | 39.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| trailant-0.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.1 kB
Release files / trailant-0.5.2.tar.gz
| Download URL | trailant-0.5.2.tar.gz |
|---|---|
| Size | 39.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a97d5f9b4fed5ecb538b5e4755d1997b2bef3efe874f1b9d640b222198e72b44
|
|
BLAKE2b-256 checksum How to use checksums |
984d9cedcfa84b3ea0e1106d77dc06ea7a32f8ed2b2c505130ab60a5a19f0e46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.
Transparency logRelease files / trailant-0.5.2-py3-none-any.whl
| Download URL | trailant-0.5.2-py3-none-any.whl |
|---|---|
| Size | 32.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d113b1141a605d404ad43ede7bf3054eb04669c3c81ce7e0480db44ffc4334d6
|
|
BLAKE2b-256 checksum How to use checksums |
3410cde42df77070c7297c83d5f766e5f5f23e6c58ea60fceea80e4544335907
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.
Transparency log