by spool-lab
Your local AI session library. Collects sessions from Claude Code, Codex CLI, Gemini CLI (and more) — browsable and ⌘K-searchable.
# Add to your Claude Code skills
git clone https://github.com/spool-lab/spoolLast scanned: 5/16/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-16T06:21:48.612Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}Your local AI session library.
Spool collects every Claude Code, Codex CLI, and Gemini CLI session you've ever had into a sidebar of projects you can browse, pin, and revisit. Press ⌘K to search across the whole archive.
Early stage. Spool is under active development — expect rough edges. Feedback, bug reports, and ideas are very welcome via Issues or Discord.
curl -fsSL https://spool.pro/install.sh | bash
macOS / Apple Silicon only. Or build from source:
pnpm install
pnpm build
# DMG is in packages/app/dist/
Spool turns the pile of AI sessions sitting on your disk into a browsable library.
~/.claude-profiles/*/projects, ~/.codex-profiles/*/sessions, and Gemini's project temp dirs under ~/.gemini/tmp/*/chats/spool skill inside Claude Code (and any ACP agent) feeds matching fragments back into your conversationNo comments yet. Be the first to share your thoughts!
Everything stays on your machine. Nothing leaves.
Looking for connectors (Twitter / GitHub / Reddit / etc.)? They now live in Spool Daemon, a sibling app focused on syncing platform data.
packages/
app/ Electron macOS app (React + Vite + Tailwind)
core/ Indexing engine (SQLite + FTS5)
cli/ CLI interface (`spool search ...`)
landing/ spool.pro website
pnpm install
pnpm exec electron-rebuild -f -w better-sqlite3 # rebuild native modules for Electron
pnpm dev # starts app + landing in dev mode
pnpm test # runs all tests
Note: The
electron-rebuildstep is required whenever you runpnpm installor switch Node.js versions. Without it, the Electron app will crash at launch with aNODE_MODULE_VERSIONmismatch error frombetter-sqlite3.
If you switch between Node-side tests and Electron app/e2e runs, rebuild better-sqlite3 for the matching runtime:
pnpm run rebuild:native:node # before @spool/core / Node-based tests
pnpm run rebuild:native:electron # before launching the Electron app or e2e tests
pnpm dev points Spool at ~/.spool-dev/ instead of your real ~/.spool/,
so iterating on schema migrations or destructive maintenance never touches the
database you actually use. The dev DB starts empty; seed it from your real one
only when you want realistic data:
pnpm --filter @spool/app dev:seed-from-prod # copies ~/.spool/ → ~/.spool-dev/
pnpm --filter @spool/app dev:reset-db # wipes ~/.spool-dev/
Override the dev location with SPOOL_DATA_DIR=/some/path pnpm dev. The
isolation kicks in automatically in dev mode; production builds always use the
real ~/.spool/.
./scripts/release.sh # bump version, push tag, dispatch CI release workflow
Build + signing happen in GitHub Actions (see .github/workflows/release.yml) so
releases are never tied to a local developer certificate. The script blocks
until CI finishes; artifacts appear on the release page when it returns.
To test a local build without cutting a release, use pnpm --filter @spool/app build:mac.
MIT
"Spool" and the Spool logo are trademarks of TypeSafe Limited. The MIT License above covers the source code only and does not grant permission to use the Spool name or logo. See the trademark notice in LICENSE for details.