Expand description
Bootstrap module — first-run setup for the Spool desktop app.
Responsible for the “install once, AI tools just work” experience:
- Release embedded binaries to
~/.spool/bin/ - Create standard data directory layout under
~/.spool/ - Add
~/.spool/binto user’s shell PATH - Register MCP integration for detected AI tools (Claude Code, Cursor, etc.)
- Install Claude Code hooks (Stop, SessionStart, etc.)
- Mark first-run complete via
~/.spool/version.json
The Tauri desktop app calls run_bootstrap_if_needed on startup.
Subsequent launches detect the version marker and skip the heavy work.
§Directory layout
~/.spool/
├── bin/ ← Released binaries (added to PATH)
│ ├── spool
│ ├── spool-mcp
│ └── spool-daemon
├── data/ ← Ledger, projection cache, config
│ ├── memory-ledger.jsonl
│ ├── memory-ledger.latest-state.json
│ └── config.toml
├── plugins/ ← Future: Pro plugins (.dylib/.so/.dll)
├── version.json ← Bootstrap state + service version
└── license.json ← Future: Pro license (absent in OSS)Re-exports§
pub use auto_configure::AutoConfigureReport;pub use auto_configure::ClientConfigReport;pub use auto_configure::auto_configure_clients;pub use layout::SpoolLayout;pub use orchestrator::BootstrapReport;pub use orchestrator::is_first_run;pub use orchestrator::run_bootstrap;pub use orchestrator::run_bootstrap_with_layout;pub use path_config::PathConfigReport;pub use path_config::configure_path;pub use state::BootstrapState;pub use state::ServiceVersion;pub use updater::UpdateApplyReport;pub use updater::UpdateCheckReport;pub use updater::apply_update;pub use updater::check_for_update;
Modules§
- auto_
configure - Auto-configure AI tools after binary release.
- layout
- Standard
~/.spool/directory layout. - orchestrator
- Bootstrap orchestration — runs the full first-run / upgrade flow.
- path_
config - Shell PATH integration.
- release
- Binary release — copies bundled binaries from the Tauri app bundle into
~/.spool/bin/. - state
- Bootstrap state management —
~/.spool/version.json. - updater
- Service-side update channel.