@alexanderfortin/pi-token-usage
Pi coding agent extension for analyzing token usage and cost across session files
Package details
Install @alexanderfortin/pi-token-usage from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@alexanderfortin/pi-token-usage- Package
@alexanderfortin/pi-token-usage- Version
0.3.0- Published
- May 22, 2026
- Downloads
- 1,039/mo · 84/wk
- Author
- alexanderfortin
- License
- MIT
- Types
- extension
- Size
- 91.3 KB
- Dependencies
- 1 dependency · 3 peers
Pi manifest JSON
{
"extensions": [
"./dist/index.js"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
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.ts
Usage
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 works
Prune 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 deletions
Report 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 stats
How 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