{"id":50463763,"url":"https://github.com/paperboytm/spool","last_synced_at":"2026-06-03T05:00:42.413Z","repository":{"id":347469758,"uuid":"1193364497","full_name":"paperboytm/spool","owner":"paperboytm","description":"Your local AI session library. Collects sessions from Claude Code, Codex CLI, Gemini CLI (and more) — browsable and ⌘K-searchable.","archived":false,"fork":false,"pushed_at":"2026-05-28T07:47:18.000Z","size":5953,"stargazers_count":536,"open_issues_count":3,"forks_count":37,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T08:07:52.520Z","etag":null,"topics":["ai-agents","claude-code","codex","codex-cli","developer-tools","electron","full-text-search","gemini-cli","linux","local-first","macos","mcp","open-source","opencode","privacy","productivity","security"],"latest_commit_sha":null,"homepage":"https://spool.pro","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paperboytm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-27T06:24:44.000Z","updated_at":"2026-05-28T08:06:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/paperboytm/spool","commit_stats":null,"previous_names":["spool-lab/spool","paperboytm/spool"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/paperboytm/spool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperboytm%2Fspool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperboytm%2Fspool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperboytm%2Fspool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperboytm%2Fspool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paperboytm","download_url":"https://codeload.github.com/paperboytm/spool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperboytm%2Fspool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33848862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","claude-code","codex","codex-cli","developer-tools","electron","full-text-search","gemini-cli","linux","local-first","macos","mcp","open-source","opencode","privacy","productivity","security"],"created_at":"2026-06-01T06:00:30.975Z","updated_at":"2026-06-03T05:00:42.408Z","avatar_url":"https://github.com/paperboytm.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Spool\n\nYour local AI session library.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/spool-v1.png\" alt=\"Spool\" width=\"720\"\u003e\n\u003c/p\u003e\n\nSpool collects every Claude Code, Codex CLI, Gemini CLI, and OpenCode session you've ever had into a sidebar of projects you can browse, pin, and revisit. Press ⌘K to search across the whole archive.\n\n\u003e **Early stage.** Spool is under active development — expect rough edges. Feedback, bug reports, and ideas are very welcome via [Issues](https://github.com/paperboytm/spool/issues) or [Discord](https://discord.gg/aqeDxQUs5E).\n\n## Install\n\n```bash\ncurl -fsSL https://spool.pro/install.sh | bash\n```\n\nOr grab the prebuilt DMG (macOS arm64) / AppImage (Linux x86_64) directly from the [Releases page](https://github.com/paperboytm/spool/releases/latest). Or build from source:\n\n```bash\npnpm install\npnpm build\n# DMG is in packages/app/dist/\n```\n\n## What it does\n\nSpool turns the pile of AI sessions sitting on your disk into a browsable library.\n\n- **Library shell** — sidebar of projects (derived from working-dir paths across agents) and a main pane that shows recent + pinned sessions for whatever you've selected\n- **Session indexing** — watches Claude/Codex/Gemini session dirs and OpenCode's SQLite database in real time, including profile-based paths like `~/.claude-profiles/*/projects`, `~/.codex-profiles/*/sessions`, Gemini's project temp dirs under `~/.gemini/tmp/*/chats`, and `~/.local/share/opencode/opencode.db`\n- **Pin** — keep important sessions on top of their project and on the global Library Home\n- **⌘K search** — fast full-text search scoped to All or the current project; AI mode synthesizes answers across fragments\n- **Agent search** — a `/spool` skill inside Claude Code (and any ACP agent) feeds matching fragments back into your conversation\n- **Security Scan** (default on, v0.5.0+) — always-on local scanner surfaces leaked API keys, tokens, and PII across every session; one-click rotate-at-source for major vendors, cross-session blast radius, and \"purge everywhere\" to wipe a value from your archive\n\nEverything stays on your machine. Nothing leaves.\n\n\u003e Looking for connectors (Twitter / GitHub / Reddit / etc.)? They now live in **[Spool Daemon](https://spool.pro/daemon)**, a sibling app focused on syncing platform data.\n\n## Architecture\n\n```\npackages/\n  app/      Electron app (React + Vite + Tailwind) — macOS + Linux\n  core/     Indexing engine (SQLite + FTS5)\n  cli/      CLI interface (`spool search ...`)\n  redact/   Secret-detection regex library (published as @spool-lab/redact)\n  landing/  spool.pro website\n```\n\n## Development\n\n```bash\npnpm install\npnpm exec electron-rebuild -f -w better-sqlite3   # rebuild native modules for Electron\npnpm dev          # starts app + landing in dev mode\npnpm test         # runs all tests\n```\n\n\u003e **Note:** The `electron-rebuild` step is required whenever you run `pnpm install` or switch Node.js versions. Without it, the Electron app will crash at launch with a `NODE_MODULE_VERSION` mismatch error from `better-sqlite3`.\n\nIf you switch between **Node-side tests** and **Electron app/e2e runs**, rebuild `better-sqlite3` for the matching runtime:\n\n```bash\npnpm run rebuild:native:node      # before @spool/core / Node-based tests\npnpm run rebuild:native:electron  # before launching the Electron app or e2e tests\n```\n\n### Dev DB isolation\n\n`pnpm dev` points Spool at `~/.spool-dev/` instead of your real `~/.spool/`,\nso iterating on schema migrations or destructive maintenance never touches the\ndatabase you actually use. The dev DB starts empty; seed it from your real one\nonly when you want realistic data:\n\n```bash\npnpm --filter @spool/app dev:seed-from-prod   # copies ~/.spool/ → ~/.spool-dev/\npnpm --filter @spool/app dev:reset-db         # wipes ~/.spool-dev/\n```\n\nOverride the dev location with `SPOOL_DATA_DIR=/some/path pnpm dev`. The\nisolation kicks in automatically in dev mode; production builds always use the\nreal `~/.spool/`.\n\n## Release\n\n```bash\n./scripts/release.sh        # bump version, push tag, dispatch CI release workflow\n```\n\nBuild + signing happen in GitHub Actions (see `.github/workflows/release.yml`) so\nreleases are never tied to a local developer certificate. The script blocks\nuntil CI finishes; artifacts appear on the release page when it returns.\n\nTo test a local build without cutting a release, use `pnpm --filter @spool/app build:mac`.\n\n## License\n\nMIT\n\n## Trademark\n\n\"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](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaperboytm%2Fspool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaperboytm%2Fspool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaperboytm%2Fspool/lists"}