# aether ### See the invisible.

Local, live observability for Claude Code and Codex.
See context, cost, latency, tools, code changes, compactions, and agents in one terminal.

Website  ·  Quick start  ·  Releases

GitHub stars Latest release MIT license Built with Rust macOS and Linux


Aether launch screen discovering local AI coding providers
https://github.com/user-attachments/assets/c550f7cc-3017-4a40-a6e3-76684fa2aa2a
A silent product tour, captured in a standard terminal.
--- Aether turns the native local traces from Claude Code and Codex into a live terminal dashboard. It groups chats by project, keeps agents inside their parent turn, and updates while work is happening. No SDK, API key, hook installation, or hosted dashboard required. ## Quick Start ```bash brew trust --formula connectchiragg/tap/aether brew install connectchiragg/tap/aether aether watch ``` Trust is a one-time Homebrew 6 requirement for third-party formulae. It applies only to Aether. Prebuilt bottles mean Aether does not compile locally or require Apple Command Line Tools. Without Homebrew: ```bash curl -fsSL https://raw.githubusercontent.com/connectchiragg/aether/master/install.sh | bash aether watch ``` `aether watch` automatically discovers every supported provider already present on the machine. ## What You See Aether synchronized terminal metrics dashboard | View | What it shows | |---|---| | **Synchronized graphs** | Context, duration, estimated cost, tokens, turn complexity, and code diff across the same turns | | **Input work** | What occupied the model input for the selected request | | **Agent detail** | Which agents ran, their instructions, responses, tools, cost, and outcome | | **Native telemetry** | Models, tools, searches, patches, compactions, cache use, and outcomes | | **Organized sessions** | Provider-native titles grouped by project, with live and present states | Move between turns once and every graph stays aligned, making spikes and correlations easy to inspect. ## Input Work Each turn includes a left-to-right attribution tree: ```text user request -> category -> named source ``` | Group | Includes | |---|---| | **Request** | User prompt | | **History** | Previous context and the active compacted summary | | **Execution** | Tools, MCPs, and agents | | **Injected context** | Hooks, memory, documents, and knowledge bases | | **Runtime** | Base instructions and provider-managed input | Nodes show tokens, percentage, estimated cost, and duration. Provider totals are exact when emitted; lower-level attribution is deterministic and marked `~`. Raw prompts, tool arguments, schemas, memory, and document contents are never shown. ## Agents Stay With Their Work Aether showing nested agents inside their parent Codex turn A collapsed turn shows how many agents ran; expand it to inspect each agent without losing the parent request. ## Provider Support | Provider | Native data understood | |---|---| | **Claude Code** | Projects, titles, models, tools, cache usage, thinking, agents, hooks, memory, attachments, edits, and compactions | | **Codex** | Projects, task titles, models, context windows, tools, reasoning, agents, hooks, memory, patches, attachments, and compactions | Aether reads `~/.claude/projects/` and `~/.codex/sessions/`. Provider files remain the source of truth and are never modified. ## Navigation | Key | Action | |---|---| | `Up` / `Down` | Move through sessions; scroll in the turn explorer | | `Left` / `Right` | Move through providers or turns | | `Enter` | Open the selected provider or session | | `Esc` | Go back | | `n` / `p` | Open the next or previous session | | `h` / `Home`, `l` / `End` | Jump to the first or latest turn | | `g`, number, `Enter` | Go to a specific turn | | `j` / `k`, mouse, or trackpad | Scroll the whole page | | `e` | Expand or collapse prompt, response, and agent details | | `r` | Rename a session locally | | `Ctrl-L` | Force a clean redraw | | `q` or `Ctrl-C` | Quit | ## Accuracy Known models are priced from the versioned catalog in [`src/model/pricing.json`](src/model/pricing.json). Cost is an API-equivalent estimate, not a provider invoice. Unknown models and incomplete pricing stay unavailable or `partial` instead of being guessed. The catalog was checked against official pricing on September 12, 2026. Where a price-change date is not published, updated rates apply from that verification date; earlier turns retain the previous catalog snapshot. Estimates use standard processing rates, not account discounts or fast-mode premiums. Turn complexity converts provider reasoning or thinking usage into a stable 0-100 comparison signal. It measures work, not answer quality. ## Local by Design - No hosted telemetry backend - No Claude or OpenAI API key - No additional model calls - No uploaded prompts, responses, files, or metrics - No changes to provider transcripts ## Troubleshooting | Problem | Fix | |---|---| | No sessions appear | Run Claude Code or Codex once so it creates a native session | | Terminal looks incomplete after sleep or resize | Press `Ctrl-L`; Aether also detects resume gaps automatically | | Cost is unavailable | The model ID or pricing entry is missing, so Aether leaves it unknown | ## Build and Remove Build from source: ```bash git clone https://github.com/connectchiragg/aether.git cd aether cargo build --release ./target/release/aether watch ``` Uninstall: ```bash brew uninstall aether ``` For a direct installation: ```bash curl -fsSL https://raw.githubusercontent.com/connectchiragg/aether/master/uninstall.sh | bash ``` ## Contributing Issues and pull requests are welcome, especially for new providers, native telemetry, pricing updates, parser fixtures, and terminal compatibility. Keep metrics deterministic and label estimates explicitly. ## License [MIT](LICENSE)

aether.haciensus.com

Built for people who want to understand what their agents are actually doing.