See what your AI coding agents are doing right now, and keep a searchable record of what they did, how many tokens they used, and which files they changed. One tool for seven agent CLIs, on one machine or several. Nothing starts and nothing uploads unless you ask.
Each agent keeps its own history, in its own format, in its own folder. Firekeeper reads them all and gives you one view. Use the parts you want.
A keyboard-driven terminal UI finds your agent processes, groups each with its children, and shows state, model, working directory, Git branch, and tokens.
Press s to focus the terminal holding a session. Supports Ghostty, Terminal.app, and iTerm2 on macOS, plus Herdr panes.
Press c on any session to read its prompts and replies right in the terminal. Read locally and read-only, following new messages live.
Codex limits, and token history by model for Codex, Copilot CLI, Kimi, and Claude Code in the terminal. The web dashboard charts daily use by model and project with an estimated cost from published list prices.
Run a dashboard server you own. Browse every session, read full transcripts, and run full-text search across all of them and all your machines.
Each session shows the commit it started on and a Files changed panel built from Git, or from the agent's edit tool calls outside a repository.
Link a laptop, desktop, and dev box to one account with a browser approval, not a pasted token. A Machines page shows which are online.
Export HTML saves a session as one standalone page that loads nothing from the network, with search, role filters, and links to single events.
backfill imports the sessions already on your machine in one pass. The daemon keeps the dashboard current from then on.
Prebuilt binaries for macOS (Apple Silicon and Intel) and Linux (amd64 and arm64). No Go toolchain needed.
brew install DanBradbury/tap/firekeeper firekeeper
Upgrade later with brew upgrade. Firekeeper also offers to update itself when a new release is out.
curl -fsSL https://raw.githubusercontent.com/DanBradbury/firekeeper/main/install.sh | sh firekeeper
Installs to ~/.local/bin (override with FIREKEEPER_INSTALL_DIR), never uses sudo, and verifies the download against the release's SHA-256 checksums. Pin a release with sh -s -- --version vX.Y.Z.
go install github.com/DanBradbury/firekeeper@latest firekeeper
Requires Go 1.26 or newer. Builds from source report their version as dev and never check for updates.
# from a checkout of the repository docker compose up -d # dashboard at http://127.0.0.1:7777/
Runs the dashboard server only, with data in a named volume. Create an account or token first thing. See self-hosting for TLS and backups.
herdr plugin install DanBradbury/firekeeper herdr plugin action invoke firekeeper.dashboard.open-dashboard
Runs Firekeeper as a dashboard tab inside Herdr 0.8.0 or newer. The plugin builds locally, so it needs Go 1.26 or newer.
Start with the terminal dashboard. Add a dashboard server when you want history. Every step up is a separate command you run on purpose.
firekeeper
Watch running sessions, read their chat, check usage, and jump to their terminal.
firekeeper serve
A web UI on 127.0.0.1 with sessions, transcripts, search, and usage charts. Fill it with report, backfill, or the daemon.
firekeeper login --server https://…
Run serve on a host you control behind HTTPS, then link each machine with a browser approval.
Process discovery works without any integration. Each provider also has an adapter that reads its local session data, read-only.
| Provider | Process discovery | State & metadata | Usage tab | Transcript upload |
|---|---|---|---|---|
| Codex | Yes | Yes | Limits and history | Yes |
| GitHub Copilot CLI | Yes | Yes | Local history and plan details | Yes |
| Claude Code | Yes | Yes | Token history | Yes |
| Kimi Code | Yes | Metadata | Token history | Yes |
| OpenCode | Yes | Yes | No | Yes |
| Gemini CLI | Yes | Yes, no NEEDS INPUT | No | Yes |
| Cursor CLI | Yes | Yes, no NEEDS INPUT | No | Yes, no timestamps or tokens |
States describe the latest event Firekeeper can see, not ground truth. Provider data formats can change between CLI releases, and adapters evolve with them. macOS is the main target; Linux is best effort.
From the terminal dashboard to a searchable archive in five steps. Stop at any step.
Start an agent in another terminal and it appears within a couple of seconds.
firekeeper
With no account it runs in local mode, with no sign-in, and offers once to start reporting this machine. Anything but y changes nothing.
firekeeper serve
The dry run reads and redacts transcripts and prints counts without opening a connection. Then name the providers you allow.
firekeeper report --dry-run firekeeper report --provider codex --provider claude
Bring in the history already on your machine, in one pass.
firekeeper backfill --all --dry-run firekeeper backfill --all
Install the daemon as a per-user service. It detects your agent CLIs and reports them in the background.
firekeeper daemon install --dry-run firekeeper daemon install
Firekeeper is built to run on hardware you control and to do nothing you did not ask for.
An unconfigured report or daemon sends nothing. You name each provider you allow.
Every event passes through redaction before it leaves the machine, and again on HTML export.
A repository containing .firekeeper-ignore, or an excluded directory, is never read.
Firekeeper never changes your agents' databases, logs, or launch commands.
On 127.0.0.1 or on a host you control. Accounts, scoped tokens, and per-account isolation are built in.
Plain firekeeper opens the dashboard. Everything else is an explicit subcommand.
firekeeperTerminal dashboard: Processes and Usagefirekeeper serveWeb dashboard at http://127.0.0.1:7777/firekeeper reportUpload the sessions running right nowfirekeeper backfill --allImport past sessions from local historyfirekeeper daemon installReport in the background from loginfirekeeper login --server URLLink this machine with a browser approvalfirekeeper whoamiServer, account, and machine this one reports asfirekeeper logoutRevoke and remove this machine's tokenfirekeeper snapshot --jsonPrint discovered sessions as JSONfirekeeper config showMerged configuration, token masked