# Copy to /etc/orchestra/orchestra.env (chmod 600, owned by the orchestra # user) and fill in the values you need. Referenced by orchestra.service via # EnvironmentFile=. Every var below is read directly from os.Getenv in # cmd/orchestra/main.go and the packages it wires up — grep ORCHESTRA_ in the # repo if this list ever needs re-deriving. # --- Core --- ORCHESTRA_DATA=/var/lib/orchestra/data ORCHESTRA_PORT=9145 # Static project/machine/herdr topology (registry.Load). Required for # routing across more than one machine; validated at startup. ORCHESTRA_CONFIG=/etc/orchestra/config.json # --- Git worktrees (global default; per-project repo/worktree_root in # ORCHESTRA_CONFIG overrides this per project — see registry.Project) --- ORCHESTRA_REPO=/var/lib/orchestra/repo.git ORCHESTRA_WORKTREE_ROOT=/var/lib/orchestra/worktrees # Protocol version fallback for herdrs that don't set "protocol" in # ORCHESTRA_CONFIG. Prefer setting it per-herdr in the config; only use this # if every herdr on the fleet truly matches. #ORCHESTRA_HERDR_PROTOCOL=1 # Hard rotation occupancy threshold (0 < x < 1). Default 0.75 if unset/invalid. ORCHESTRA_OCCUPANCY_HARD=0.75 # --- Providers --- # Local JSONL task ingestion (baseline adapter). #ORCHESTRA_JSONL=/var/lib/orchestra/tasks.jsonl # Gitea issue ingestion + terminal-state reflection. # # Multiple repos (one per project) — preferred if you have more than one # Gitea-backed project. Points at a JSON array of # {project,base_url,owner,repo,token,webhook_secret}; project is the # registry project id ingested tasks are tagged with. Each source gets its # own webhook path: /v1/providers/gitea/webhook/{project}. #ORCHESTRA_GITEA_CONFIG=/etc/orchestra/gitea.json # # Single repo (legacy) — all four required together. Ignored if # ORCHESTRA_GITEA_CONFIG is set. Webhook path is the unprefixed # /v1/providers/gitea/webhook. Ingested tasks are tagged with project = # ORCHESTRA_GITEA_REPO. #ORCHESTRA_GITEA_URL=https://gitea.example.internal #ORCHESTRA_GITEA_TOKEN= #ORCHESTRA_GITEA_OWNER= #ORCHESTRA_GITEA_REPO= #ORCHESTRA_GITEA_WEBHOOK_SECRET= # --- Delivery (notify-only surfaces) --- # Telegram: both required together. #ORCHESTRA_TELEGRAM_BOT_TOKEN= #ORCHESTRA_TELEGRAM_CHAT_ID= # ntfy: topic required, token/url optional (self-hosted ntfy). #ORCHESTRA_NTFY_TOPIC= #ORCHESTRA_NTFY_TOKEN= #ORCHESTRA_NTFY_URL=https://ntfy.sh # --- Bus authorization tokens (bearer auth per surface; a surface with no # token set has no auth requirement — set these once you have real clients) --- #ORCHESTRA_TUI_TOKEN= #ORCHESTRA_WEB_TOKEN= #ORCHESTRA_MCP_TOKEN= #ORCHESTRA_MAVEN_TOKEN= # Telegram/ntfy tokens above double as their surface auth tokens # (ORCHESTRA_TELEGRAM_TOKEN is the inbound bearer token if you also expose an # endpoint they poll, separate from the bot token used to send messages). #ORCHESTRA_TELEGRAM_TOKEN=