Team Setup
The new Bitloops model separates team-shared repo policy from machine-specific daemon configuration.
Recommended Split
Each developer has:
- their own global daemon config
- their own daemon data, cache, and state directories
- their own provider credentials
The repository can carry:
.bitloops.tomlfor shared capture policy- optional imported knowledge TOML files
Each developer may also keep:
.bitloops.local.tomlfor personal overrides
Team Onboarding Flow
1. Fastest onboarding path
The fastest way to get started from inside the repository is:
bitloops init --install-default-daemon --sync=true
That single command bootstraps the default daemon service if needed, creates .bitloops.local.toml, installs hooks, and follows the initial current-state sync. Use the explicit bitloops start --create-default-config path below when someone needs to inspect or customise their daemon config before bootstrapping the repo.
bitloops start --create-default-config
On a fresh machine, use --create-default-config once. That writes the default global daemon config and creates the default local SQLite, DuckDB, and blob-store paths.
Interactive bitloops start can also prompt to create the default config when it is missing. During that first bootstrap, Bitloops asks for telemetry consent unless you pass --telemetry, --telemetry=false, or --no-telemetry.
2. Configure machine-specific stores and credentials
[stores.relational]
sqlite_path = "/Users/alex/.local/share/bitloops/stores/relational/relational.db"
[stores.events]
duckdb_path = "/Users/alex/.local/share/bitloops/stores/event/events.duckdb"
[knowledge.providers.github]
token = "${GITHUB_TOKEN}"
3. Bootstrap a project locally
From the repository root or a subproject directory:
bitloops init --install-default-daemon --sync=true
bitloops init --sync=true
The fastest default path is bitloops init --install-default-daemon --sync=true. Use plain bitloops init when the daemon is already running, or when a developer has already bootstrapped their daemon separately.
This creates .bitloops.local.toml, adds it to .git/info/exclude, and installs or reconciles hooks.
When you use bitloops init --install-default-daemon and embeddings are not already configured, interactive init asks whether to use Bitloops cloud, the local runtime, or skip embeddings for now. Bitloops cloud is the recommended default, and the managed local runtime still downloads and warms asynchronously when that local option is selected.
In an interactive terminal, plain bitloops init also asks whether you want to install that same default local embeddings setup when embeddings are still unconfigured.
bitloops init can also queue an initial DevQL current-state sync after hooks are installed. Use --sync=true to run it immediately, or --sync=false to skip it. If you omit --sync in an interactive terminal, Bitloops asks after hook setup whether you want to sync the codebase.
In non-interactive mode, bitloops init requires --sync=true or --sync=false.
bitloops init still does not run DevQL ingest. Use bitloops devql tasks enqueue --kind ingest when you want to populate checkpoint, commit, and event history.
Use --agent <name> repeatedly when a team wants to pin the supported agent set during bootstrap. For example:
bitloops init --sync=false --agent claude-code --agent codex
If telemetry consent later becomes unresolved for an existing daemon config, interactive bitloops init can ask again. Non-interactive runs require an explicit telemetry flag.
4. Commit shared project policy when you need it
[capture]
enabled = true
strategy = "manual-commit"
[watch]
watch_debounce_ms = 750
watch_poll_fallback_ms = 2500
[imports]
knowledge = ["bitloops/knowledge.toml"]
One simple workflow is to start from the generated .bitloops.local.toml, rename or copy the relevant sections into .bitloops.toml, and commit the shared file.
5. Open the dashboard or keep using the daemon
bitloops dashboard
Local Overrides
Personal overrides go in .bitloops.local.toml, which bitloops init ensures is ignored through .git/info/exclude.
Example:
[capture]
enabled = false
Use bitloops enable and bitloops disable to toggle [capture].enabled in the nearest discovered project policy without reinstalling hooks.
Use bitloops enable --install-embeddings or bitloops daemon enable --install-embeddings when a developer also needs the default local embeddings profile added to the effective daemon config. Interactive bitloops enable offers that setup automatically with a default-yes [Y/n] prompt when embeddings are not already configured.
If telemetry consent is unresolved for an existing daemon config, interactive bitloops enable can ask before it edits project policy.
What Not To Commit
Do not commit:
- provider secrets
- machine-specific store paths unless your team explicitly standardises them
- daemon runtime state
Those belong to each developer’s daemon config or local environment.