#shell-history #terminal #shell #productivity #cli

app shellcap

A passive terminal activity tracker that summarizes what you did in it

2 releases

0.1.1 Apr 12, 2026
0.1.0 Apr 12, 2026

#292 in Development tools

MIT license

60KB
1.5K SLoC

recap

A passive terminal activity tracker that summarizes what you did yesterday.

$ recap
── April 06 ──────────────────────────────────────

  14h  recap  ~/repos/recap  (43 sec)
    [edit]  src/main.rs · Cargo.toml
    [run]   cargo ×4 · git ×2

  16h  notgalerie  ~/repos/notgalerie  (12 sec)
    [edit]  index.html
    [run]   npm · git

No AI, no cloud, no telemetry. Just SQLite on your machine.

How it works

recap hooks into your shell and silently records every command — timestamp, working directory, exit code, and duration. When you run recap, it groups everything by project and hour so you can see what you worked on at a glance, without changing how you work.

Sensitive commands (passwords, tokens, secrets) are filtered automatically and never written to disk.

Install

Requirements: Rust (via rustup)

cargo install shellcap
recap --install
recap --import

Or from source:

git clone https://github.com/NOT16180/recap
cd recap
cargo install --path .
recap --install
recap --import

--install adds shell hooks to your config file and detects your shell automatically.
--import bootstraps from your existing shell history so you get data right away.

Usage

recap                        Yesterday's activity (default)
recap --yesterday            Yesterday's activity
recap --today                Today so far
recap --date <YYYY-MM-DD>    Activity for a specific date
recap --timeline             Hour-by-hour timeline for yesterday
recap --timeline --today     Hour-by-hour timeline for today
recap --timeline --date X    Hour-by-hour timeline for a specific date
recap --stats                This week's stats
recap --week <n>             Stats for n weeks ago
recap --streak               Current and longest activity streak
recap --search <query>       Search command history
recap --project <name>       Filter by project name
recap --export [json|csv]    Export all events (default: json)
recap --prune [days]         Delete events older than N days (default: 90)
recap --import               Import from shell history
recap --install              Set up shell integration
recap --uninstall            Remove shell integration
recap --version, -V          Show version
recap --help                 Show help

Configuration

Add custom aliases in ~/.config/recap/aliases.toml:

[aliases]
nv = "nvim"
g  = "git"
gp = "git push"
cb = "cargo build"

The following aliases are built in by default:

Alias Expands to
g git
ga git add
gc git commit
gp git push
gl git pull
gst git status
gd git diff
gco git checkout
gb git branch
nv nvim
v vim
cb cargo build
cr cargo run
ct cargo test

Data

Everything is stored locally:

  • ~/.local/share/recap/recap.db — SQLite database
  • ~/.local/share/recap/events.tsv — live buffer, flushed on each run
  • ~/.config/recap/hooks.zsh — zsh hooks installed by --install
  • ~/.config/recap/hooks.bash — bash hooks installed by --install
  • ~/.config/fish/conf.d/recap.fish — fish hooks installed by --install

No data leaves your machine.

Shell support

Shell Status
zsh Supported
bash Supported
fish Supported

License

MIT

Dependencies

~32MB
~587K SLoC