Background sync for your captures — bookmarks, stars, saved posts from GitHub, Hacker News, Reddit, X, Xiaohongshu, and any community connector on npm.
Sister product of Spool. Spool focuses on agent-session search; Spool Daemon focuses on external-source capture and search. Both are made by spool-lab.
Status: v0.1, local development. Not yet published to a public release channel.
- Pulls items from external sources via installable connector plugins
(GitHub stars, HN front page, Reddit saved/upvoted, X bookmarks,
Xiaohongshu notes, Typeless, plus anything you
pnpm addfrom npm). - Stores everything in a local SQLite database with full-text search.
- Surfaces results in a Spool-style search UI.
- Runs as a tray app — quietly syncing in the background on a schedule.
Everything stays on your machine.
packages/
app/ Electron app (React + Vite + Tailwind)
cli/ `spool-daemon` CLI for connector management
core/ Indexing engine + connector framework (SQLite + FTS5)
connector-sdk/ Public plugin contract (@spool-lab/connector-sdk)
connectors/ Six built-in connectors
DB lives at ~/Library/Application Support/Spool Daemon/spool-daemon.db.
Requires Node 22+, pnpm 10+, macOS Apple Silicon.
pnpm install
pnpm rebuild:native:electron # rebuild better-sqlite3 for Electron ABI
pnpm dev # starts the daemon in dev modeIf you switch between Node-side tests and Electron runs, rebuild
better-sqlite3 for the matching runtime:
pnpm rebuild:native:node # for vitest / core tests
pnpm rebuild:native:electron # for Electron apppnpm dev:install:mac # builds, installs to /Applications/Spool Daemon.app, launchesOr release a versioned local build:
pnpm release # bumps patch, builds DMG/ZIP, tags locally (does NOT push)@spool-lab/daemon-cli is a small companion CLI for managing connectors
without opening the app. Build from source and run via the package bin:
pnpm -F @spool-lab/daemon-cli build
node packages/cli/bin/spool-daemon.js --help| Command | Description |
|---|---|
search <query> |
Full-text search across captures (-n, -p, --since, --json) |
captures |
List recent captures (-n, -p, --json) |
show <uuid> |
Print one capture in full |
list [--json] |
List installed connectors |
status [id] |
Daemon status (omit id) or one connector's detailed status |
install <package> [-y] |
Install a connector plugin from npm |
uninstall <id> [-y] [-f] |
Uninstall a connector plugin (-f to proceed while the app is running) |
sync [id] [--reset] [--delay <ms>] |
Run a connector until fully synced (omit id to list available) |
update [id] [--apply] |
Check for connector updates on npm; --apply installs them |
Each subcommand has its own --help. The CLI shares the SQLite DB with the
app (~/.spool-daemon/spool-daemon.db), so reads (search, captures,
show, status, list) work while the app is running. Write commands
(install, uninstall, sync, update) generally expect the app to be
quit; uninstall -f is the explicit override.
The plugin contract is published as
@spool-lab/connector-sdk.
Plugin authoring docs and examples live in this repository under
packages/connector-sdk/README.md.
MIT
