adash
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.
What it shows
- Summary strip: active sessions, attention count, live burn/hour, today estimate, hottest context/quota, orphan count
- Ranked attention queue: title, project, model, ctx %, token total, estimated cost, burn/hour, age
- Inspector: overview, token/cost breakdown, recent trend, alerts, ports/subagents, and safe actions
- JSON snapshot output with raw sessions plus derived summary, alerts, and insights
Install
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
Usage
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
Keybindings
| 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 |
Claude rate limit hook setup
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
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.
Pricing overrides
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.json
File 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.
Data compatibility
adash reads the same session files as abtop:
- Claude sessions:
~/.claude/sessions/*.json+ transcripts in~/.claude/projects/ - Codex sessions:
~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
The transcript encoding rule (Claude): /, _, . → -.
Attribution
Inspired by graykode/abtop (MIT License). Data format, JSONL parsing logic, and session discovery strategy are derived from abtop.
License
MIT — see LICENSE.
Development
- CI runs the test suite on Linux and Windows to keep the collector and path-handling logic portable.
adash --jsonnow returns structured JSON errors with a non-zero exit code when collection fails, which makes automation safer than relying on a traceback.
Metadata
Release files for adash-cli 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| adash_cli-0.1.0.tar.gz | 44.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| adash_cli-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.4 kB
Release files / adash_cli-0.1.0.tar.gz
| Download URL | adash_cli-0.1.0.tar.gz |
|---|---|
| Size | 44.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6fbcf33087353d2557cc720886da40d04526894a29e20c301f5de06c0bdaf928
|
|
BLAKE2b-256 checksum How to use checksums |
de0f00d3bf7775f5190c7592fadc76ea4bf98331215f3f4f3c587ae8607a496f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / adash_cli-0.1.0-py3-none-any.whl
| Download URL | adash_cli-0.1.0-py3-none-any.whl |
|---|---|
| Size | 41.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d86d92620bb36eacbdc6265a2a920f304c997296b152f0b4665e73951e67e41
|
|
BLAKE2b-256 checksum How to use checksums |
35bb10a6a2bd5e3e2e08616d2b84e00401837f54c11a23a52927ea2d64c1cba3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for adash-cli 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.