Fainder is a tiny, local and read-only terminal app for finding and resuming your conversations.
It searches Codex, Claude Code, OpenCode, Hermes, Cursor, and GitHub Copilot histories from one place, then returns the right resume command. Agents can also inspect a conversation by turn and print bounded chronological context without starting another harness or calling an LLM.
brew install satelerd/tap/fainder
fainderTo update an existing install:
brew update
brew upgrade fainderHumans can open the TUI:
fainderFainder opens on your most recent conversations, newest first. Type a query,
pick a conversation, then press Enter to copy the resume command. A live line
under the search box always tells you exactly how your query is being matched.
Press Ctrl-s (or Tab) for a filter panel to pick providers, search mode, and
scope.
Find candidates:
fainder recent --limit 8
fainder search "SmartUp migration" --json --limit 8Inspect one conversation before reading a large transcript:
fainder inspect claude:cab15fb3 --role user --limit 40
fainder inspect claude:cab15fb3 --find "PR|commit|deploy" --regex
fainder inspect claude:cab15fb3 --around 96 --context 8Print a deterministic transcript window in chronological order:
fainder context claude:cab15fb3 --from-turn 90 --to-turn 130
fainder context codex:019dec17 --tail 80 --truncate-toolsLarge context views show a token estimate first and require --confirm.
The repo includes an optional Raycast extension that uses the Fainder CLI:
cd raycast
npm install --cache /private/tmp/fainder-npm-cache
npm run devNow you can find your conversations from Raycast.
The extension calls fainder recent --json before you type, then
fainder search <query> --json once you search. It lists conversations and lets
you copy or open the selected resume_command.
For Raycast-only usage, the extension needs to be published to the Raycast Store. The extension is prepared for that flow:
cd raycast
npm run build
npm run publishOnce Raycast approves and publishes it, install it from Raycast Store and run
Search Conversations. Fainder itself is still the local search engine, so the
extension will prompt you to install it with Homebrew if the fainder binary is
missing.
Fainder includes a portable agent skill at:
skills/fainder/SKILL.md
Agent harnesses that support skills can load that file to learn how to install, query, parse, and safely use Fainder.
- By default the query matches as one exact phrase (case-insensitive). For
example,
SmartUp agentsonly matches conversations with those words adjacent and in that order. wordsmode (Ctrl-min the TUI,--wordsin the CLI) requires every word independently in any order.regexmode lets you use patterns likeSmartUp|bedrock.- A single word behaves the same in every mode and searches titles, paths, recent messages, and transcript content.
- Search waits briefly after typing so it does not scan while you are still entering a query.
- Metadata is read live from native provider files.
- Uses
ripgrepfor fast transcript search. The Homebrew formula installs it automatically. - Full-text search uses live transcript scans and
rgcandidate discovery. - OpenCode is read from OpenCode's own SQLite database.
- Cursor and GitHub Copilot are read from VS Code-style
workspaceStorageSQLite databases. - Fainder does not require a background service or manual indexing step.
cargo test
cargo run
cargo run -- search SmartUp --limit 5
cargo run -- inspect codex:019dec17 --role user --limit 10
cargo run -- context codex:019dec17 --tail 20Release automation updates Cargo metadata, tags the repo, computes the Homebrew tarball SHA, updates the formula, and pushes the tap:
scripts/release.sh 0.1.3