Part II: Fold bot-bottle-orchestrator into this repo #322
Open
didericis-claude
wants to merge 7 commits from
fold-orchestrator-subpackage into main
pull from: fold-orchestrator-subpackage
merge into: didericis:main
didericis:main
didericis:firecracker-consolidated-launch
didericis:lazy-backend-imports
didericis:orchestrator-agent-compose
didericis:orchestrator-gateway-ca
didericis:orchestrator-consolidated-launch
didericis:orchestrator-gateway-provision
didericis:orchestrator-gateway-network
didericis:orchestrator-client
didericis:orchestrator-gateway-net
didericis:orchestrator-gitgate-provision
didericis:orchestrator-registration
didericis:orchestrator-lifecycle
didericis:orchestrator-supervise-writers
didericis:orchestrator-supervise-multitenant
didericis:orchestrator-gitgate-multitenant
didericis:orchestrator-rename-gateway
didericis:orchestrator-slice8
didericis:orchestrator-slice7
didericis:orchestrator-slice6
didericis:prd-orchestrator
didericis:orchestrator-slice5
didericis:orchestrator-slice4
didericis:orchestrator-slice3
didericis:orchestrator-slice2
didericis:ci-kvm-runner
didericis:firecracker-backend
didericis:issue-330-cached-images
didericis:forge-native-integration
didericis:prd-smolmachines-linux
didericis:claude-forward-host-credentials
didericis:prd-egress-control-plane
didericis:manifest-break-import-cycle
didericis:dlp-supervise-quality-fixes
didericis:table-drive-dlp-tests
didericis:fix-integration-test-failures
didericis:fix/macos-container-relative-dockerfile
didericis:prd-0054-install-script
didericis:commit-bottle-state
didericis:pr-211
didericis:move-codex-auth-to-contrib
didericis:feat/pipelock-skip-scan-extensions
didericis:prd-0049-named-labelled-agents
didericis:harden-git-gate-shell-rendering
No Reviewers
Labels
Clear labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Breaking change that won't be backward compatible
Something is not working
Documentation changes
Improve existing functionality
New functionality
This is security issue
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Low
4
The priority is low
Priority
Medium
3
The priority is medium
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: didericis/bot-bottle#322
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "fold-orchestrator-subpackage"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #321.
PRD: prd-new-fold-orchestrator-subpackage.md
Summary
bot_bottle/orchestrator/as a first-class subpackagebot_bottle/contrib/forge/base.py(ScopedForge),bot_bottle/contrib/gitea/client.py(GiteaClient,GiteaForge), andbot_bottle/contrib/gitea/forge_state.py(ForgeState,SqliteForgeStateStore) — the forge integration layer that belongs in the main packagetests/unit/orchestrator/python -m bot_bottle.orchestrator run; no change to HTTP surface, webhook protocol, or env-var configPRD: Fold bot-bottle-orchestrator into this repoto Part II: Fold bot-bottle-orchestrator into this repoScope additions — fold in from the PRD 0070 consolidation work
The per-host orchestrator (PRD 0070, shipped as the #367–#379 stack) and this forge orchestrator should be one unified orchestrator — one
python -m bot_bottle.orchestratorprocess that does both per-host bottle management (registry / attribution //resolve/ gateway) and the forge webhook + run-loop. Both currently land inbot_bottle/orchestrator/with the same entry point, so unifying them requires refactoring (dispatch: bare = control-plane serve,run= forge loop, etc.). Folding the following into this PR's scope:Rename the
sidecarsimage →gateway. Finish the sidecar→gateway retirement deferred in #364 (kept the names then to avoid rebuild churn):Dockerfile.sidecars,bot-bottle-sidecars,BOT_BOTTLE_SIDECAR_IMAGE→gateway. (Independent of the unification.)Dedicated lean orchestrator image. Its own
Dockerfile.orchestrator(python-slim + control plane, no mitmproxy), dropping the current shortcut of running thebot-bottle-sidecarsbundle image with the repo bind-mounted. Keeps the control/data-plane image boundary (orchestrator carries no byte-parsing machinery).iroh transport for the remote web UI. Bundle iroh into the orchestrator image as a separate proxy process (terminates the p2p link, forwards to the stdlib Python control plane over
127.0.0.1) so the Python side stays zero-runtime-deps. A remote web UI then reaches the orchestrator with no inbound firewall port and node-key auth for free.Long-poll / pull-model launcher. A host-side launcher that pulls launch intents from the orchestrator (host→container), so the web UI can drive launches without any container→host traffic (the NixOS firewall drops container→host on the docker bridge — see the 0070 cut-over notes). The poll response is the structured launch request.
DB-as-volume was considered and dropped — 0067's storage work is merged and the docker bind-mount is fine; only a firecracker-VM orchestrator would revisit it.
Context / prior art: the whole 0070 consolidation stack (containerized orchestrator + shared multi-tenant gateway,
test_sandbox_escapegreen on real docker) is the monster PR that this unifies with.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.