ACE Sidecar
Local developer observability for AI coding agents — see what your Claude Code and Antigravity sessions actually cost.
What it does · Requirements · Install · Quickstart · Features · Who builds this · Configuration · Endpoints · Development · License
What it does
ACE Sidecar runs a proxy on your machine in front of the model provider, recording what each turn costs — tokens in and out, what came from cache, how long you waited. It also reads your existing transcripts (~/.claude/projects, ~/.gemini/antigravity/brain), so there is history to show from the first run.
Nothing leaves your machine: no account, no upload. Metrics live in a local SQLite file you can delete.
Built by ACE Fleet — see Who builds this.
Requirements
- Python 3.12+ — the one hard requirement. Check with
python3 --version. - macOS, Linux, or Windows. No admin rights needed.
- A coding agent you already use. Claude Code and Google Antigravity are supported today. However you pay for it — subscription or API key — is how it stays paid; the sidecar adds no account of its own.
Need a newer Python? brew install python@3.12 (macOS), sudo apt install python3.12 (Debian/Ubuntu), sudo dnf install python3.12 (Fedora), python.org (Windows), or uv python install 3.12 (anywhere).
Install
uv tool install ace-sidecar # or: pipx install ace-sidecar
Both give ace its own isolated environment and put it on your PATH. With plain pip, use a virtual environment:
python3.12 -m venv ~/.venvs/ace && source ~/.venvs/ace/bin/activate
pip install ace-sidecar
If install fails with Could not find a version that satisfies the requirement ace-sidecar, your Python is older than 3.12. The message blames the package, but the package is fine — the interpreter is too old.
If ace: command not found after installing, run uv tool update-shell or pipx ensurepath, then open a new terminal.
Quickstart
ace up
Then point your agent at it and open the dashboard:
eval "$(ace env)" # exports ANTHROPIC_BASE_URL
open http://127.0.0.1:8787/dashboard
Use your coding agent as normal — turns appear live, with your transcript history already loaded.
On a Claude subscription, start with ace up --no-key (Claude Code sends its own credential and the sidecar relays it), or put {"no_key": true} in ~/.ace/config.json. ace up --help lists every flag.
Antigravity needs no setup and no base URL: it is read from its transcripts on disk, so its sessions appear in the dashboard whether or not the sidecar was running at the time. Only Claude Code routes through the proxy.
Features
Unified view across agents. Claude Code and Antigravity in one place, with per-agent cost, sessions, turns and models. Pick one agent and the page scopes to it.
Real spend against published prices. Per-turn cost from a versioned rate catalog — input, output, cache-read, and derived cache-write rates — with the source and the date it was checked. Cache savings shown as a counterfactual.
Recommendations off a measured threshold. Each one fires on a number from your own transcripts and carries its saving, its cost, and its risk.
Workflow skill miner. Repeated command sequences become reusable SKILL.md rules, installable into .agents/skills/<id>/ in one click.
Where the time goes. Wall clock split across model generating, tool execution, human composing, and idle — including time parked on approval prompts.
Prometheus exporter. 15 metrics in standard text exposition format at GET /metrics, for Prometheus, Grafana Alloy, OpenTelemetry Collector, VictoriaMetrics, or Datadog. See docs/PROMETHEUS_METRICS.md.
Who builds this
ACE Sidecar is built by ACE Fleet.
ACE Fleet is a middleware proxy for companies scaling AI applications. It sits between their services and the model providers and reduces what they spend on inference as that usage grows — across every workload in the business, not one team's tooling. That is the product.
This sidecar is one vertical of it, open-sourced on its own: the same accounting, pointed at a single developer's coding agents.
| ACE Sidecar (this repo) | ACE Fleet | |
|---|---|---|
| Scope | One developer's machine | An organisation's whole inference bill |
| Workload | Coding agents — Claude Code, Antigravity | Any AI application in production |
| What it does | Measures. Records and explains the spend | Acts. Reduces the spend in the request path |
| Where it runs | Loopback on your machine; nothing leaves it | Managed middleware between your services and the providers |
| License | Open source, AGPL-3.0 | Commercial |
The two answer different questions. The sidecar answers where is my money going on the machine in front of you, at a scale small enough to check by hand. Fleet answers what do we do about it once that question is being asked of an entire company's traffic.
Open-sourcing the coding-agent slice is deliberate: it is the part a developer can run in one command, on their own data, without talking to anyone — and the clearest way to show how the larger system reasons about cost. If it is useful at your desk, we would like to hear about it.
Configuration
Settings resolve in order: CLI flags → ~/.ace/config.json → environment variables → defaults.
{ "no_key": true, "port": 8787, "log_level": "warning" }
| Path | Holds |
|---|---|
~/.ace/telemetry.db |
Turn telemetry — local SQLite, never uploaded |
~/.ace/config.json |
Your settings |
~/.claude/projects, ~/.gemini/antigravity/brain |
Agent transcripts — read only |
Delete ~/.ace/ to remove everything recorded.
Endpoints
| Endpoint | Purpose |
|---|---|
POST /v1/messages |
The relay your agent talks to |
GET /dashboard |
The dashboard above |
GET /healthz |
Liveness and config state, without leaking your key |
GET /api/stats |
The dashboard's numbers as JSON |
GET /metrics |
Prometheus exposition |
Binds loopback and refuses non-local callers; a public bind needs --allow-remote.
Development
git clone https://github.com/ACE-Engineering/ace-sidecar.git && cd ace-sidecar
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e ".[test]"
pytest # 40 unit tests
python scripts/e2e_test.py # live route verification
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ace_sidecar-0.1.1.tar.gz.
File metadata
- Download URL: ace_sidecar-0.1.1.tar.gz
- Upload date:
- Size: 138.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88fc9edb468f697139fbf6cccbb7a90fec7a7b9c18634076821fdbc582aaf8fc
|
|
| MD5 |
5d0f6cd4b211f897131d1da34a01d840
|
|
| BLAKE2b-256 |
4da436d9ba2b3c19d357a3dfa43c0306fc1163b3c6cfb87fa9643231b7130c8a
|
Provenance
The following attestation bundles were made for ace_sidecar-0.1.1.tar.gz:
Publisher:
publish.yml on ACE-Engineering/ace-sidecar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ace_sidecar-0.1.1.tar.gz -
Subject digest:
88fc9edb468f697139fbf6cccbb7a90fec7a7b9c18634076821fdbc582aaf8fc - Sigstore transparency entry: 2479943937
- Sigstore integration time:
-
Permalink:
ACE-Engineering/ace-sidecar@4068bb0ff641b8cbb3cdc2709d47cb1da840b2b5 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ACE-Engineering
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4068bb0ff641b8cbb3cdc2709d47cb1da840b2b5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ace_sidecar-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ace_sidecar-0.1.1-py3-none-any.whl
- Upload date:
- Size: 167.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96966c39527dcdd04da32a605ceb3c7d8a4ffb71d0607bfb211f79d27679df01
|
|
| MD5 |
e500fb7b80720fe0058d83e6a1dee5ec
|
|
| BLAKE2b-256 |
1828c5894171db0b911c36a60338ecca7896a17ffaa50f9f906c031050fef97f
|
Provenance
The following attestation bundles were made for ace_sidecar-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on ACE-Engineering/ace-sidecar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ace_sidecar-0.1.1-py3-none-any.whl -
Subject digest:
96966c39527dcdd04da32a605ceb3c7d8a4ffb71d0607bfb211f79d27679df01 - Sigstore transparency entry: 2479944491
- Sigstore integration time:
-
Permalink:
ACE-Engineering/ace-sidecar@4068bb0ff641b8cbb3cdc2709d47cb1da840b2b5 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ACE-Engineering
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4068bb0ff641b8cbb3cdc2709d47cb1da840b2b5 -
Trigger Event:
push
-
Statement type: