Automated, AI-powered CLI snippet manager — auto-captures shell commands, describes them, and finds them by meaning.
Project description
Recall
Automated, AI-powered CLI snippet manager. Stop re-googling that one
ffmpegincantation — Recall captures your long shell commands, describes them in plain English, and lets you find them again by meaning, not exact wording.
What it does
- Auto-captures long / complex terminal commands via a shell hook (after you run them — zero manual effort).
- Describes them automatically using a local LLM (Ollama, free & offline) or, optionally, the Claude API.
- Stores everything in a single portable SQLite file you can copy or sync.
- Finds commands semantically — search "clean up docker space" and get
back
docker rm $(docker ps -aq)even if you never used those words.
Everything runs locally and free by default. No account, no cloud, no
telemetry. The single recall.db file is the whole product — copy it to a new
machine and you are done.
Free by default
The AI description step is pluggable:
| Provider | Cost | Needs | Default |
|---|---|---|---|
ollama |
Free, offline | Ollama installed | ✅ yes |
heuristic |
Free, offline | nothing | fallback |
claude |
Paid (API) | ANTHROPIC_API_KEY |
opt-in |
If no provider is reachable, Recall falls back to a heuristic description and keeps working — the tool never breaks because an LLM is unavailable.
Install
Requires uv and Python 3.11+.
One-step install (checks Python, installs uv if missing, installs the
recall command globally, and wires the shell hook):
git clone https://github.com/Surge77/recall
cd recall
./scripts/install.sh
Manual / development install:
git clone https://github.com/Surge77/recall
cd recall
uv sync
uv run recall version
Optional extras (installed on demand):
uv sync --extra ai # Ollama / Claude description providers
uv sync --extra semantic # local semantic search (ChromaDB + embeddings)
Usage
recall install # install the shell hook (zsh / bash)
# ... run a long command normally; it is captured silently ...
recall search "docker cleanup" # semantic search, copies top hit to clipboard
recall list --tag docker # browse saved snippets
recall add "<cmd>" --tags net # manual add (auto-describes if no --desc)
recall delete 12 # remove a snippet
recall redescribe # regenerate AI descriptions (all, or one id)
recall sync --path ~/Dropbox/recall.db # symlink the DB for cross-machine sync
Platform note: the auto-capture hook supports zsh, bash and PowerShell (7+, via PSReadLine). On Windows you can run Recall natively in PowerShell, or use WSL / Git Bash. All other commands work on every platform.
Configuration
A config.toml is created on first run (location is per-OS via platformdirs,
e.g. %LOCALAPPDATA%\recall\config.toml on Windows). Relevant capture knobs:
[capture]
min_command_length = 40 # skip anything shorter
trivial_commands = ["cd", "ls", "pwd", "exit", "clear", "history"] # never captured
A command is auto-captured only if it is ≥ min_command_length characters,
its first word is not in trivial_commands, it is not a comment or a
recall … call, and it is not already stored. Add your own noise commands
(git, npm, clear, …) to trivial_commands to skip them.
Uninstall
uv tool uninstall recall-snippets
Then remove the hook block (marked # recall auto-capture hook) from your
~/.zshrc or ~/.bashrc. Your snippets live in a single data file; delete it
only if you want to discard them:
# Linux: ~/.local/share/recall/recall.db
# macOS: ~/Library/Application Support/recall/recall.db
# Windows: %LOCALAPPDATA%\recall\recall.db
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file recall_snippets-0.2.0.tar.gz.
File metadata
- Download URL: recall_snippets-0.2.0.tar.gz
- Upload date:
- Size: 266.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c301d67ea1721ee0504664ad5b52087b7a1bc2497394d6c2a30eb10998a33cae
|
|
| MD5 |
fb9be969a17e44d5e0068ba5b41fdf6b
|
|
| BLAKE2b-256 |
9357095f98e7974f886800a398c75edebca8935cc3d6c4dd5ab6340c1dd59544
|
Provenance
The following attestation bundles were made for recall_snippets-0.2.0.tar.gz:
Publisher:
publish.yml on Surge77/recall
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
recall_snippets-0.2.0.tar.gz -
Subject digest:
c301d67ea1721ee0504664ad5b52087b7a1bc2497394d6c2a30eb10998a33cae - Sigstore transparency entry: 1691274663
- Sigstore integration time:
-
Permalink:
Surge77/recall@247894b8f83910c017a89f9794e2500fd988e474 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Surge77
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@247894b8f83910c017a89f9794e2500fd988e474 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file recall_snippets-0.2.0-py3-none-any.whl.
File metadata
- Download URL: recall_snippets-0.2.0-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
223ffbeafff786fda7700bff63244ff423357054e13a1d8cd65d8d6bf573a8da
|
|
| MD5 |
b6083a0a5f869b9c04f239d18d5aba1d
|
|
| BLAKE2b-256 |
a16505ef1dbfbf333ae84219c72fa6357e6c202839481f44435877470aca9d89
|
Provenance
The following attestation bundles were made for recall_snippets-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on Surge77/recall
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
recall_snippets-0.2.0-py3-none-any.whl -
Subject digest:
223ffbeafff786fda7700bff63244ff423357054e13a1d8cd65d8d6bf573a8da - Sigstore transparency entry: 1691274721
- Sigstore integration time:
-
Permalink:
Surge77/recall@247894b8f83910c017a89f9794e2500fd988e474 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Surge77
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@247894b8f83910c017a89f9794e2500fd988e474 -
Trigger Event:
workflow_dispatch
-
Statement type: