Skip to main content

Module bootstrap

Module bootstrap 

Source
Expand description

Bootstrap module — first-run setup for the Spool desktop app.

Responsible for the “install once, AI tools just work” experience:

  1. Release embedded binaries to ~/.spool/bin/
  2. Create standard data directory layout under ~/.spool/
  3. Add ~/.spool/bin to user’s shell PATH
  4. Register MCP integration for detected AI tools (Claude Code, Cursor, etc.)
  5. Install Claude Code hooks (Stop, SessionStart, etc.)
  6. 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.