How Bitloops Works
Bitloops now follows a daemon-first architecture.
High-Level Flow
bitloops startlaunches the global daemon and, on a fresh machine, can prompt to create the default daemon config.- During that first default-config bootstrap,
bitloops startalso owns the first interactive telemetry consent prompt unless you pass an explicit telemetry flag. bitloops initbootstraps the current project or subproject, installs hooks, and runs the initial baseline sync.bitloops enableandbitloops disabletoggle capture in the nearest discovered project policy.- If telemetry consent later becomes unresolved for an existing daemon config, interactive
bitloops initandbitloops enablecan prompt again. - Hooks and the slim CLI resolve the nearest project policy locally.
- The daemon receives mutations and queries over the local transport.
- The daemon stores durable data in configured backends and serves the dashboard and DevQL.
Components
- Global daemon service:
com.bitloops.daemon - Thin CLI: lifecycle, hooks, DevQL, dashboard launcher
- Repo policy:
.bitloops.tomland optional.bitloops.local.toml - Global daemon config:
config.tomlin the platform config directory
Default Storage Categories
- Config directory: daemon config
- Data directory: SQLite, DuckDB, blob storage
- Cache directory: embedding downloads, dashboard bundle
- State directory: runtime metadata and hook scratch files
This separation is why repo-local runtime directories are no longer the default.