Your terminal has perfect memory.
Install • Quick Start • Features • Commands • Architecture • Contributing
Recall is a local-first, fully offline, privacy-first CLI tool that eliminates Command Amnesia — the #1 flow-state killer for developers and engineers.
It doesn't just search your history. It understands intent.
$ recall "find large files over 100mb"
╭─ Best Match (confidence: 97%) ──────────────────────────╮
│ find . -type f -size +100M -exec ls -lh {} \; │
│ │
│ 📂 Used 14 times in ~/projects/ │
│ 🕐 Last used: 3 days ago │
│ 🏷️ Tags: find, disk, cleanup │
│ │
│ [Enter] Execute [e] Edit [c] Copy [Tab] More results │
╰──────────────────────────────────────────────────────────╯No internet. No API keys. No subscriptions. Nothing ever leaves your machine.
Every developer does this 12–25 times per day:
1. Deep in flow, building something important
2. Need a command — can't remember the exact syntax
3. Ctrl+R... nope
4. Open browser → Google → Stack Overflow → scroll past ads → copy-paste
5. Paste back into terminal
6. Flow state: DESTROYED. Cost: 5–23 minutes per interruption.
That's 60–120 minutes of productive time lost every day. Over a year, an entire month of engineering time — gone to Google.
Existing tools don't fix this:
| Tool | Why It Fails |
|---|---|
tldr |
You must already know the command name |
fzf + Ctrl+R |
Dumb string matching — no intent understanding |
| Warp / Copilot CLI | Cloud-dependent, $15/mo, sends your history to servers |
man pages |
4,000 lines of text for a one-line answer |
cheat.sh |
Requires internet. Generic. Doesn't know YOUR patterns |
Recall fills the gap. The only tool that is:
- ✅ 100% offline — zero network calls, ever
- ✅ Intent-aware — understands "kill node process", not just
kill - ✅ Personal — learns YOUR commands and YOUR patterns
- ✅ Contextual — knows your cwd, git branch, project type
- ✅ Instant — <10ms response time on local SQLite+FTS5
- ✅ Zero-config — works immediately after
recall init
brew tap Om-Rohilla/tap
brew install recallcurl -sSf https://raw.githubusercontent.com/Om-Rohilla/recall/main/scripts/install.sh | shmacOS users: Binary is not yet notarized (planned for v1.1). The installer automatically removes the Gatekeeper quarantine flag. If you install manually, run:
xattr -d com.apple.quarantine /usr/local/bin/recall
Pre-built binaries for every platform are on the Releases page:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | recall_*_macOS_arm64.tar.gz |
| macOS (Intel) | recall_*_macOS_x86_64.tar.gz |
| Linux (x86_64) | recall_*_linux_x86_64.tar.gz |
git clone https://github.com/Om-Rohilla/recall.git
cd recall
CGO_ENABLED=1 go build -tags sqlite_fts5 -o recall .
sudo mv recall /usr/local/bin/- macOS 11+ or Linux (kernel 4.x+)
- Bash 4.0+, Zsh 5.0+, or Fish 3.0+
- ~30MB disk space
- No internet connection required — ever
# 1. Initialize (installs shell hook, creates encrypted vault)
recall init
# 2. Restart your shell (or source your rc file)
source ~/.zshrc # or ~/.bashrc / ~/.config/fish/config.fish
# 3. Start using it immediately
recall "compress a folder to tar.gz"
recall "undo last git commit"
recall "docker remove all stopped containers"
recall "find and kill process on port 3000"Tip: After
recall init, every command you run is automatically captured and indexed in the background — you don't need to do anything.
Don't remember the exact command? Just describe it:
$ recall "find files modified in the last 24 hours"
╭─ Best Match (confidence: 94%) ──────────────────────────╮
│ find . -type f -mtime -1 │
╰──────────────────────────────────────────────────────────╯Interactive TUI lets you navigate, preview, copy, or execute results directly.
~/myapp (git:feature/auth) $ recall "undo last commit"
╭─ Context: Git repo · branch: feature/auth ──────────────╮
│ git reset --soft HEAD~1 │
│ │
│ ⚠️ Soft reset — keeps changes staged │
│ 💡 You're on a feature branch (safe to reset) │
╰───────────────────────────────────────────────────────────╯Uses your current directory, git state, project type, and recent command history to surface the most relevant result.
Every command you run is silently captured, parsed for secrets, and stored in an encrypted SQLite vault:
$ recall vault # Opens interactive TUI browser
📊 12,847 commands | 342 unique patterns | 🔒 Encrypted
🔥 Most used this week: git commit, docker compose up, kubectl get pods
💎 Rare but valuable: that openssl command from 3 months agoBrowse, filter, and manage your history by category, project, frequency, or recency.
Backup tip: The vault is a single SQLite file (default
~/.local/share/recall/vault.db). In WAL mode, a complete backup requires copying bothvault.dband anyvault.db-walfile while Recall is not running. Userecall exportfor a safe, encrypted backup.
$ recall explain "find . -name '*.log' -mtime +30 -delete"
find . ← search current directory
-name '*.log' ← files ending in .log
-mtime +30 ← modified more than 30 days ago
-delete ← ⚠️ DELETE matching files permanently
⚠️ DESTRUCTIVE: This permanently deletes files.
💡 Remove -delete and add -print first to preview.$ recall suggest-aliases
You type this 23×/week:
docker compose -f docker-compose.dev.yml up -d
→ Suggested alias: dcdev
[a] Accept all [s] Select [i] IgnoreGuided wizard for constructing complex commands from parts.
$ recall stats # Usage stats, streaks, top commands
$ recall wrapped # Weekly Terminal Wrapped — your CLI story
$ recall roast # AI-style playful roast of your CLI habits$ recall share "git log --oneline --graph --all"
✅ SVG card generated → ./recall_share_git_log.svgGenerates a gorgeous, shareable SVG image of any command for tweets, blog posts, or documentation.
$ recall sync # Sync vault across all your machinesUses GitHub Gists as a zero-infrastructure backend. Your vault is encrypted before it leaves your device — even GitHub cannot read your data.
| Shortcut | Action |
|---|---|
Ctrl+Space |
Inline search — never leave your prompt |
Ctrl+E |
Explain command at current prompt |
Ctrl+K |
Open vault browser |
Extend Recall without touching your file system or network:
recall plugin install my-plugin.wasm
recall plugin list
recall plugin run my-pluginPlugins run in a pure WebAssembly (WASI) sandbox via wazero. Zero file system access. Zero network access. Zero environment variable leakage.
Recall was designed from the ground up to be privacy-first. Here's exactly how:
| Guarantee | Implementation |
|---|---|
| Nothing leaves your machine | Zero network calls in core binary. recall sync uses E2E encryption before upload. |
| Vault encrypted at rest | AES-256-GCM via SQLCipher. Key stored in OS keyring with file-based fallback. |
| Secrets never stored | 50+ pattern filter blocks password=, token=, JWTs, API keys, PATs, Stripe keys, hex strings, env exports. |
| FTS5 injection hardened | All search queries sanitized — operator injection is not possible. |
| Crash-safe | SIGTERM/SIGINT handlers wipe any in-memory sensitive data before exit. |
| Rate limited | 50ms minimum capture interval prevents flood/DoS from scripts. |
| Plugin isolation | WASM sandbox — plugins cannot access FS, network, or env vars. |
| Open source | Every line is auditable at github.com/Om-Rohilla/recall. |
| Command | Description |
|---|---|
recall "query" |
Search by intent (main command) |
recall explain "cmd" |
Break down any command with safety warnings |
recall vault |
Browse your personal command vault (interactive TUI) |
recall stats |
Usage statistics, streaks, and top patterns |
recall wrapped |
Weekly Terminal Wrapped summary |
recall roast |
Playful roast of your CLI habits |
recall share "cmd" |
Generate a shareable SVG card of a command |
recall suggest-aliases |
Get smart alias suggestions from your patterns |
recall compose |
Interactively build complex commands |
recall sync |
E2E encrypted cross-device sync via GitHub Gists |
recall init |
First-time setup — vault creation + shell hook install |
recall import-history |
Import existing shell history into vault |
recall export |
Export vault backup (encrypted) |
recall import |
Import vault backup |
recall config |
View and edit configuration |
recall plugin list|install|run |
Manage WASM plugins |
recall version |
Show version and build info |
recall completion |
Generate shell completion scripts |
Run recall --help or recall <command> --help for full flag reference.
Recall uses a 4-stage local scoring pipeline — no LLM, no API, no cloud:
Query: "find big files"
↓
1. Intent Extraction — tokenize, expand synonyms, detect category
↓
2. Candidate Fetch — FTS5 full-text search across vault + 500+ knowledge base entries
↓
3. Multi-Signal Scoring:
• Text relevance (30%) — TF-IDF + trigram matching
• Intent match (25%) — does it accomplish the stated goal?
• Personal freq (20%) — how often YOU use this command
• Context match (15%) — same project/directory/git branch?
• Recency (10%) — recently used commands rank higher
↓
4. Rank → Present top result with confidence score
Response time: <10ms. Everything runs locally against an embedded SQLite database with FTS5 full-text search. No model inference. No API round-trips.
| Component | Technology |
|---|---|
| Language | Go 1.24+ |
| CLI framework | Cobra |
| TUI | Bubbletea + Lipgloss |
| Storage | SQLite + FTS5 (via go-sqlcipher, AES-256) |
| Encryption | AES-256-GCM (SQLCipher) + Argon2id (exports) |
| Key storage | OS keyring (zalando/go-keyring) |
| Sync backend | GitHub Gists (E2E encrypted) |
| Plugin runtime | wazero (pure WASM/WASI) |
| Config format | TOML |
| Shell hooks | Bash / Zsh / Fish |
| Release | GoReleaser + Homebrew tap |
Single static binary. No runtime dependencies. No Docker. No daemons.
recall/
├── main.go # Entry point
├── cmd/ # All CLI commands (Cobra)
│ ├── search.go # Main intent search
│ ├── vault.go # TUI vault browser
│ ├── explain.go # Command explainer
│ ├── compose.go # Interactive composer
│ ├── share.go # SVG card generator
│ ├── sync_cmd.go # E2E encrypted sync
│ ├── stats.go # Usage statistics
│ ├── wrapped.go # Weekly wrapped
│ ├── roast.go # CLI habit roast
│ ├── suggest.go # Alias suggestions
│ ├── plugin_cmd.go # WASM plugin manager
│ └── ...
├── internal/
│ ├── capture/ # Shell hook → parse → secret-filter → store
│ ├── intelligence/ # Scoring engine + knowledge base
│ ├── vault/ # SQLite + FTS5 + AES-256 encryption
│ ├── context/ # Git, project, session detection
│ ├── explain/ # Command decomposition
│ ├── compose/ # Interactive wizard
│ └── ui/ # Bubbletea TUI components
├── pkg/
│ ├── shell/ # Hook generation & installation
│ ├── config/ # TOML configuration
│ ├── plugin/ # WASM sandbox runner
│ ├── logging/ # Structured logging
│ └── errors/ # Typed error handling
├── data/
│ └── knowledge.json # 500+ curated command knowledge base entries
├── scripts/
│ ├── install.sh # One-line installer
│ └── hooks/ # recall.bash / recall.zsh / recall.fish
├── tests/ # Integration + security test suite
└── .goreleaser.yaml # Multi-platform release configuration
HIGH PERSONALIZATION
▲
│
Recall ★ ← you are here
│
Navi ● │ ● Warp AI
│
──────────────────────┼──────────────────────►
OFFLINE / PRIVATE │ CLOUD / CONNECTED
│
tldr ● │ ● Copilot CLI
│
fzf ● │ ● cheat.sh
│
LOW PERSONALIZATION
| Feature | Recall | tldr | fzf | Warp | Copilot CLI |
|---|---|---|---|---|---|
| Search by intent | ✅ | ❌ | ❌ | ✅ | ✅ |
| 100% offline | ✅ | Partial | ✅ | ❌ | ❌ |
| Learns your patterns | ✅ | ❌ | ❌ | ✅ | ❌ |
| Context-aware | ✅ | ❌ | ❌ | Partial | ❌ |
| < 10ms response | ✅ | ✅ | ✅ | ❌ | ❌ |
| Free forever | ✅ | ✅ | ✅ | ❌ | ❌ |
| Privacy-first | ✅ | ✅ | ✅ | ❌ | ❌ |
| Encrypted vault | ✅ | ❌ | ❌ | ❌ | ❌ |
| Explain commands | ✅ | Partial | ❌ | ✅ | ✅ |
| Plugin system | ✅ | ❌ | ❌ | ✅ | ❌ |
Contributions are welcome! Here's how:
git clone https://github.com/Om-Rohilla/recall.git
cd recall
go mod tidy
go test -tags sqlite_fts5 ./...
CGO_ENABLED=1 go build -tags sqlite_fts5 -o recall .
./recall "test query"- Knowledge Base — Add entries to
data/knowledge.json(one entry = instant value for all users) - Secret Filter Patterns — Expand
internal/capture/filter.gowith new sensitive data patterns - Shell Hook Edge Cases — Improve
scripts/hooks/for unusual bash/zsh/fish configurations - Bug Reports — Open issues with exact reproduction steps and OS/shell version
- Go 1.24+
- GCC (for CGO / SQLCipher)
libsqlite3-dev(Linux only)
- Phase 1: CLI skeleton, vault, shell hooks, basic search
- Phase 2: Multi-signal scoring, context detection, 500+ knowledge base
- Phase 3: Explain mode, compose mode, interactive TUI
- Phase 4: Bubbletea TUI, hotkey integration, alias suggestions
- Phase 5: AES-256 encryption, export/import, Fish shell support
- Phase 6: GoReleaser CI/CD, Homebrew tap, multi-platform binaries
- Phase 7: Security hardening — FTS5 injection prevention, 50+ secret filter patterns, rate limiting, crash-safe signal handling
- Phase 8: Ghost Cloud Sync (E2E),
recall shareSVG cards,recall roast, zero-I/O DB locking, WASM plugin sandbox — v1.0 Production Release - Phase 9: Windows support,
ripgrep-based search fallback, plugin marketplace
MIT License — see LICENSE for details.
Stop Googling commands. Start recalling them.
Install Recall — it takes 30 seconds.
⬇️ Download Latest Release
|
🐛 Report a Bug
|
💬 Discussions