./scripts/operations-center.sh setup is the interactive local operator setup flow.
It prepares:
- local Plane API config
- local repo config
- provider readiness
- executor (TeamExecutor) install/verification
- repo target defaults
Setup writes (all gitignored):
config/operations_center.local.yaml.env.operations-center.localconfig/plane_task_template.local.mdconfig/managed_repos/local/*.yaml— per-repo managed repo entries
Local configs are backed up to ~/sync/platform/config/ via Syncthing.
Backup (run after any config change):
scripts/backup-secrets.shRestore on a fresh clone or new machine:
scripts/setup-secrets.shThis symlinks flat files and copies the managed_repos/local/ tree to the correct
target paths. Do not manually copy files — the paths are non-obvious and the
restore script gets them right.
# Option A — restore from SS backup (preferred if backup exists)
scripts/setup-secrets.sh
source .env.operations-center.local
# Option B — interactive setup from scratch
./scripts/operations-center.sh setup
source .env.operations-center.local- base URL
- workspace identifier
- project id
- API token
- optional live API verification
- provider
- optional HTTPS token
- bot author identity
- GitHub SSH bootstrap/verification
TeamExecutor is the multi-agent coding engine OperationsCenter uses for task execution.
See src/operations_center/backends/team_executor/ for the adapter implementation.
- install/verify
team-executorCLI - configure orchestrator defaults
- persist local execution settings
- detect Claude Code, Codex CLI, Gemini CLI, Cursor Agent
- install supported missing CLIs when possible
- verify login/auth readiness
- record preferred smart/fast provider choices
- clone URL
- default/base branch
- validation commands
- repo-local
.venvbootstrap behavior
Before the executor runs on a task, OperationsCenter bootstraps the repo's Python environment.
Default (Python repos): set bootstrap_enabled: true in the repo config.
OperationsCenter creates a venv at venv_dir and runs install_dev_command.
Custom bootstrap: set bootstrap_enabled: false and place a tools/bootstrap.sh
in the repo root. OperationsCenter auto-discovers and runs it — no bootstrap_commands
config needed. The script can set up any environment the repo requires; it runs
with the repo root as the working directory.
bootstrap_commands in the repo config can still override this for one-off cases,
but the preferred pattern for repos with their own setup process is tools/bootstrap.sh.
Validation commands run after the executor using full paths (e.g. .codebase-venv/bin/python -m pytest -q)
so they work regardless of which venv was activated during bootstrap.
Setup:
- checks whether
team-executoris onPATH - installs
uvif needed - installs TeamExecutor if missing
- verifies the install with
team-executor --help
Setup is intended to be idempotent: it does not reinstall the executor when the current install already works.
Advanced mode also exposes optional version pins for:
- Plane
- TeamExecutor
- supported provider CLIs
Pins are for reproducible local installs. They do not automatically trigger update checks during normal runs.
Some repos have CI checks that were failing before the PR was opened (pre-existing failures). Listing check name substrings in ci_ignored_checks tells the reviewer watcher to treat those checks as non-blocking:
repos:
my_repo:
await_review: true
ci_ignored_checks:
- "file-tag-linter" # pre-existing linter failure unrelated to PR changes
- "legacy-integration" # broken upstream check we don't ownWhen every failing check matches an entry in this list, the PR is auto-merged (with allow_unstable=True). This prevents orphaned PRs from being blocked indefinitely by broken CI that predates the PR. The merge is logged as reason: ci_ignored_checks_all_clear.
Substrings are matched case-sensitively against the GitHub check run name. Use the most specific prefix or suffix that uniquely identifies the check to avoid unintentional matches.
- The setup wizard is for local operator use, not production secret management.
- The local environment is still single-machine and polling-based after setup completes.
- Re-run readiness checks later with
providers-status,plane-doctor, ordependency-check.