Skip to main content

agent-session-manager

One terminal dashboard for everything Claude Code and Codex leave behind. See cost, browse sessions, and clean up ~/.claude and ~/.codex — side by side, with a Claude / Codex filter.

PyPI Python Built with Textual License Platform Status

asm · 한국어


⚠️ Heads up This is a personal tool that reads and edits the internal data of Claude Code and OpenAI Codex (~/.claude, ~/.codex). Every delete goes to the OS trash and is logged, but you should still back up before bulk operations. Not affiliated with Anthropic or OpenAI.


What it is

If you live in Claude Code and Codex, the two of them quietly fill ~/.claude and ~/.codex with session transcripts, cost logs, debug files, task lists, and snapshots. After a few weeks it's impossible to tell which projects burned the most tokens, or which files are orphaned and safe to delete.

agent-session-manager (asm) puts all of it in one terminal dashboard. Both agents show up together, and a single keystroke filters the view to All / Claude / Codex so you can compare spend or drill into one tool.

💡 Why it exists

  • Problem: cost and session data for two different coding agents live in two opaque directories with no shared view.
  • Solution: one TUI that reads both, prices every model accurately, and lets you clean up safely — to the trash, with recovery snapshots.

Demo

The combined dashboard (cost across both agents, source-tagged rows), then the same view filtered to Claude and to Codex:

asm demo

✨ Features

Combined dashboard

  • Cost across both agents with a source filter — click All / Claude / Codex or press s
  • Per-model token & cost breakdown (Opus / Sonnet / Haiku / GPT-5.x), each row tagged by source
  • Daily / weekly / monthly usage tables (one scan, all periods) and a Top-10 project cost chart
  • Accurate pricing fetched live from LiteLLM (15-min cache, offline fallback to the bundled table) — new models are priced correctly without waiting for a release, and the dashboard always shows which rate source was used
  • Persistent usage ledger (~/.asm/usage.db): sessions are parsed once and re-scanned only when they change, each one valued at the rates in effect when it was scanned (old sessions are never re-priced), and cost history survives even after Claude Code prunes old transcripts — Codex history is indexed in full, no recent-N cap

Unified sessions (Claude + Codex)

  • One tree: Claude projects and Codex working directories together, each session tagged C / X
  • Expand a project to preview conversations from either agent; trash individual sessions
  • Edit instructions: per project, view/edit/create CLAUDE.md, CLAUDE.local.md, AGENTS.md, AGENTS.local.md in a built-in editor (Ctrl+S to save)
  • Move a Codex session to another working directory (rewrites its cwd, which is how codex resume --cd associates sessions)
  • Orphan cleanup: detect and bulk-clean Claude sessions, file-history, debug, and task entries with no matching project
  • Duplicate sessions: find the same session copied across projects and delete individual copies
  • Empty sessions: clean stub sessions that hold only a title/metadata and no conversation (can't be resumed)
  • Migration: copy Claude sessions between projects (originals preserved), with paths auto-rewritten

Artifacts

  • Browse every page you've published with Claude Code's Artifact tool — scanned straight out of your session history, newest first
  • Open in the browser (Enter/o) or copy the URL (c) without leaving the terminal; also available as asm artifacts (--json for scripts)

Safe by default

  • Every delete goes to the OS trash and is recorded in an audit log
  • Recovery snapshots are taken before trashing (Claude and Codex), with a size/age cap so they don't pile up
  • Backups and restore for Claude (config / settings / plugins / sessions / full) and Codex (sessions, excluding huge caches); restore is rollback-safe (the live dir is moved aside and put back if the copy fails), and credential-bearing backups are written owner-only (0600)

How it works

   ~/.claude  ┐
              ├──►  asm  ──►  one dashboard  ──►  filter: All / Claude / Codex
   ~/.codex   ┘              (cost · sessions · cleanup · backup)

asm reads both data directories directly — no daemon, no config. Claude data is grouped by project; Codex sessions are grouped by working directory. Pricing is computed from each session's recorded token usage.

Path What's there
~/.claude.json · ~/.claude/projects/ Claude projects, costs, session JSONL
~/.claude/file-history/ · debug/ · tasks/ Snapshots, debug logs, per-session task lists
~/.codex/sessions/ Codex rollout session files
~/.asm/backups/ · trash-log.jsonl · usage.db Backups (auto-migrated from old ~/.cc-tui), the deletion audit log, and the usage ledger

🛠️ Tech Stack

  • TUI: Textual + Rich
  • Safety: send2trash (OS trash, not rm)
  • Sessions: built-in JSONL parser — no heavy deps; optional claude-agent-sdk via pip install 'agent-session-manager[sdk]'
  • Python: 3.11+

🚀 Getting started

Install (recommended)

# uv
uv tool install agent-session-manager

# pip
pip install agent-session-manager

Both install a single asm command. On first run, data from the previous ~/.cc-tui location is migrated to ~/.asm automatically.

Run from source
git clone https://github.com/Bae-ChangHyun/agent-session-manager.git
cd agent-session-manager
uv sync && uv run asm

Usage

asm                       # Launch — shows Claude + Codex together
asm --source codex        # Start with the dashboard filtered to Codex
asm --path /your/project  # Limit to one Claude project
asm --lang ko             # Korean UI  (or set ASM_LANG=ko)
asm --no-update-check     # Skip the startup update check

Both sources are always available; --source only sets the dashboard's initial filter, which you change anytime with s.

Headless CLI

Every feature is also available as a subcommand — handy for scripts and AI agents. In a terminal you get rich tables; piped output is plain text, and --json gives machine-readable output.

# Read-only
asm cost --period weekly          # Cost/token stats per model & period
asm projects                      # All projects (Claude + Codex)
asm sessions --search "firewall"  # Search sessions by title
asm preview <session-id>          # Print a conversation
asm resume <session-id>           # cd into its project & resume (Claude/Codex)
asm artifacts                     # Pages published via the Artifact tool
asm backup list / asm recovery list

# Destructive — always confirms first (skip with --yes); everything goes
# through the OS trash + recovery snapshots, same as the TUI.
asm clean empty --dry-run         # empty | orphaned | debug | todos
asm trash <session-id>
asm backup create --type full     # config|full|settings|plugins|sessions|codex
asm backup restore <path> / asm recovery restore <id>
asm migrate /old/project /new/project

Keyboard

Key Action
F1–F7 Switch tabs
s / click Dashboard source filter (All / Claude / Codex)
Tab / Shift+Tab · 1 2 3 Dashboard period (Daily / Weekly / Monthly)
d / D Trash selected / all orphaned
Space · Enter Toggle selection · Preview conversation
r · q Refresh all · Quit

Staying up to date

When a newer release is on PyPI, asm offers a y/N upgrade prompt on startup (via uv tool or pip). It's skipped in non-interactive shells and when offline.


🗺️ Roadmap

  • Per-source disk-usage in the data overview
  • ruff + mypy in CI

⚠️ Status & scope

  • Personal / pre-release, under active development.
  • Operates directly on Claude Code and Codex internal data — back up before bulk deletes.
  • Deletes go to the OS trash with recovery snapshots; nothing is rm'd in place.
  • No warranty. Not affiliated with Anthropic or OpenAI.

📄 License

MIT


Made with Claude Code · and now Codex too

Metadata

Release files for agent-session-manager 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-session-manager 0.15.0
File Size Uploaded
agent_session_manager-0.15.0.tar.gz 166.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-session-manager 0.15.0
File Interpreter ABI Platform
agent_session_manager-0.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 274.3 kB

Release files / agent_session_manager-0.15.0.tar.gz

Download URL agent_session_manager-0.15.0.tar.gz
Size 166.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cb839f06804c3710d8bea43d9b710f761501beeed231366e36cce4f640aa0ae2
BLAKE2b-256 checksum
How to use checksums
34a4b9ee1f88a32e62eb1f811720ea464852a7b07a73cb80fe4b407d3ef4534f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release files / agent_session_manager-0.15.0-py3-none-any.whl

Download URL agent_session_manager-0.15.0-py3-none-any.whl
Size 108.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7bb5b057ba36e32803d95848573ecca17da4e44cf897e65bd5bae3b91def7e7d
BLAKE2b-256 checksum
How to use checksums
071355568469263eced59b18983f3af9e76072d56d0706dc1c510f52f9462bb6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

0.15.0 This release

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page