@alexanderfortin/pi-token-usage
v0.3.0
Published
Pi coding agent extension for analyzing token usage and cost across session files
Maintainers
Readme
pi-token-usage
A Pi coding agent extension that
- analyzes token usage and cost across your session files
- prunes old sessions files on demand
Installation
# NPM (recommended)
pi install npm:@alexanderfortin/pi-token-usage
# Git
pi install git:github.com/shaftoe/pi-token-usage
# Or quick-test without installing
pi -e ./pi-token-usage/src/index.tsUsage
Report Command
/token-report Report all sessions (table in TUI)
/token-report 7 Last 7 days
/token-report /path/to/dir Specific directory or file
/token-report --format csv CSV to stdout
/token-report --format csv --save report.csv Save CSV to file
/token-report 7 --format json JSON to stdout
/token-report --format md Markdown to stdout
/token-report --format markdown --save out.md Save Markdown to file
/token-report --format=csv --save=out.csv Equals-sign syntax also worksPrune Command
/token-prune 30 Delete sessions older than 30 days
/token-prune 30 --dry-run Show what would be deleted without actually deleting
/token-prune 60 --path /custom/dir Prune a specific directory
/token-prune 100 --force Skip confirmation prompt for large deletionsReport Arguments
| Argument | Description |
|----------|-------------|
| [days] | Number — show sessions from the last N days |
| [path] | Path to a .jsonl file or directory (default: ~/.pi/agent/sessions, or $PI_CODING_AGENT_DIR/sessions when set) |
| --format, -f | Output format: table (default), csv, json, markdown (alias: md) |
| --save, -s | Write output to file instead of stdout/TUI |
Prune Arguments
| Argument | Description |
|----------|-------------|
| <days> | Number (required) — delete sessions older than N days |
| --dry-run, -d | Preview what would be deleted without actually deleting |
| --force, -f | Skip confirmation prompt when deleting many files |
| --path, -p | Path to a directory (default: ~/.pi/agent/sessions, or $PI_CODING_AGENT_DIR/sessions when set) |
Prune Behavior
The prune command performs two operations:
- Old session deletion: Removes
.jsonlsession files whose modification time is older than the specified number of days - Empty file cleanup: Removes any
.jsonlfiles that are empty (0 bytes), regardless of age
Safety features:
- Dry-run mode lets you preview what will be deleted
- If more than 100 files would be deleted, you must use
--forceto confirm (unless in dry-run mode) - Only
.jsonlfiles are affected; other files are ignored
Output Formats
Table (default) — interactive TUI overlay with styled columns.
CSV — machine-readable spreadsheet format. Includes metadata as # comment lines.
Model,Provider,Turns,Input Tokens,Output Tokens,...
claude-sonnet-4-20250514,anthropic,10,50000,12000,...
TOTAL,,15,70000,20000,...JSON — structured output with meta, models, and totals sections. Pipe to jq for queries.
Markdown — pipe-delimited table for notes, PRs, or documentation.
Development
cd pi-token-usage
bun install # Install dependencies
bun run check # Type-check with tsc
bun run lint # Lint with eslint
bun run format:check # Verify formatting
bun run format # Auto-format with Prettier
bun test # Run tests
bun test:coverage # Run tests and show coverage statsHow It Works
Report Generation
- Scans
~/.pi/agent/sessions(or$PI_CODING_AGENT_DIR/sessionswhen set, or a given path) for.jsonlsession files - Parses each file, extracting
assistantmessages withusagedata - Aggregates token counts and costs per model+provider
- Renders in the requested format
Session Pruning
- Scans the target directory (recursively) for
.jsonlsession files - Checks each file's modification time and size
- Deletes files older than the specified days (or empty files)
- Reports total files deleted, space freed, and any errors encountered
Releasing
This project uses automated publishing to NPM via GitHub Actions. The workflow will:
- Run all CI checks
- Build the package
- Publish to NPM with provenance (signed) via trusted publishing
License
See LICENSE
