Observed since 20 Oct, 19:09 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
htop-style monitor for Claude Code and Codex CLI agent sessions
AI agent monitor for Claude Code and Codex CLI — a local-first triage dashboard for session health, cost, and utility.
Inspired by and data format compatible with graykode/abtop (MIT). adash is a cleaner Python rewrite using Textual rather than a btop pastiche.
A sibling to mnemos, pulldown, cartograph, and synthesis.
pipx install adash-cli
# or
pip install adash-cli
For local development and test runs:
pip install -e ".[dev]"
python -m pytest -q
If you want the latest repo state before a PyPI release lands:
pipx install git+https://github.com/anthony-maio/adash.git
adash # TUI (default)
adash --once # Snapshot table to stdout, exit
adash --json # JSON snapshot to stdout, exit
adash --setup # Print Claude StatusLine hook setup instructions
adash --version # Print version
| Key | Action |
|---|---|
↑ / ↓ or j / k | Select session |
enter | Copy session ID to clipboard |
o | Open selected session cwd |
t | Open selected transcript |
x | Kill selected session (SIGTERM) |
X | Kill all orphan port processes |
f | Toggle all vs risky sessions |
s | Cycle sort mode (severity, cost, recency) |
r | Force refresh |
q | Quit |
adash reads ~/.claude/adash-rate-limits.json (also reads legacy ~/.claude/abtop-rate-limits.json for back-compat) for Claude quota data. This file is written by a shell hook you add to your Claude Code setup.
Run adash --setup to print the hook snippet. Add the function to your shell and configure it via Claude Code's hooks setting in ~/.claude/settings.json.
Codex rate limit data is extracted directly from the session JSONL files that Codex writes during its token_count events. No hook needed — just run Codex normally and adash picks it up.
Rate limit cache is stored at ~/.cache/adash/codex-rate-limits.json.
adash includes built-in approximate pricing rules for common Claude and GPT-5 model families. To override them locally, create:
$ADASH_PRICING_FILE, or~/.config/adash/pricing.jsonFile shape:
{
"models": [
{
"pattern": "claude-sonnet-4*",
"agent_cli": "claude",
"input_per_million": 3.0,
"output_per_million": 15.0,
"cache_read_per_million": 0.3,
"cache_write_per_million": 3.75
}
]
}
Estimated USD values are intentionally approximate and secondary to token/quota signals.
adash reads the same session files as abtop:
~/.claude/sessions/*.json + transcripts in ~/.claude/projects/~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonlThe transcript encoding rule (Claude): /, _, . → -.
Inspired by graykode/abtop (MIT License). Data format, JSONL parsing logic, and session discovery strategy are derived from abtop.
MIT — see LICENSE.
adash --json now returns structured JSON errors with a non-zero exit code when collection fails, which makes automation safer than relying on a traceback.Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 19 Apr 2026 | 4 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:09 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:cd6bb2bfb0974af8c7b8699180e9aef8c7a8ea4e283b09154631463bb9524170