feat: cf-orch Docker image + Forgejo CI pipeline (v0.6.0) #20

Closed
pyr0ball wants to merge 0 commits from feature/docker-ci into main
Owner

Summary

  • Dockerfile.orch — two-mode image: coordinator (port 7700) and agent (connects to coordinator)
  • docker/orch-entrypoint.sh — routes to correct CLI command based on CMD
  • .forgejo/workflows/docker.yml — publishes ghcr.io/circuit-forge/cf-orch:latest + version tag on every vN.N.N push
  • Bumps to v0.6.0

Test plan

  • docker build -f Dockerfile.orch . succeeds locally
  • CI triggers on next version tag
  • docker run cf-orch coordinator starts coordinator on port 7700
  • docker run -e CF_COORDINATOR_URL=... cf-orch agent registers with coordinator

Closes #19

## Summary - `Dockerfile.orch` — two-mode image: `coordinator` (port 7700) and `agent` (connects to coordinator) - `docker/orch-entrypoint.sh` — routes to correct CLI command based on `CMD` - `.forgejo/workflows/docker.yml` — publishes `ghcr.io/circuit-forge/cf-orch:latest` + version tag on every `vN.N.N` push - Bumps to v0.6.0 ## Test plan - [ ] `docker build -f Dockerfile.orch .` succeeds locally - [ ] CI triggers on next version tag - [ ] `docker run cf-orch coordinator` starts coordinator on port 7700 - [ ] `docker run -e CF_COORDINATOR_URL=... cf-orch agent` registers with coordinator Closes #19
pyr0ball added 2 commits 2026-04-03 09:10:58 -07:00
LLMRouter env-var auto-config:
- No llm.yaml required — auto-configures from ANTHROPIC_API_KEY,
  OPENAI_API_KEY, or OLLAMA_HOST on first use
- Bare-metal self-hosters can run any CF product with just env vars
- Falls back to FileNotFoundError with actionable message only when
  no env vars are set either

CFOrchClient auth:
- Reads CF_LICENSE_KEY env var (or explicit api_key param)
- Sends Authorization: Bearer <key> on all allocation/release requests
- Required for the hosted public coordinator; no-op for local deployments

HeimdallAuthMiddleware (new):
- FastAPI middleware for cf-orch coordinator
- Enabled by HEIMDALL_URL env var; self-hosted deployments skip it
- 5-min TTL cache (matching Kiwi cloud session) keeps Heimdall off the
  per-allocation hot path
- /api/health exempt; free-tier keys rejected with 403 + reason
- 13 tests covering cache TTL, tier ranking, and middleware gating
Dockerfile.orch — multi-mode image (coordinator | agent):
- coordinator: runs cf-orch coordinator on $CF_ORCH_PORT (default 7700)
- agent: connects to $CF_COORDINATOR_URL, serves $CF_AGENT_GPU_IDS

.forgejo/workflows/docker.yml — publishes on every vN.N.N tag:
- ghcr.io/circuit-forge/cf-orch:latest
- ghcr.io/circuit-forge/cf-orch:vX.Y.Z
- Layer cache via GHA cache backend

Closes #19. Bumps to v0.6.0.
Author
Owner

All commits from this branch (cb51ba72, 3deae056) are already present in main — they were pulled in when feature/affiliates-module was cut from this branch and then merged via PR#25. Closing as already merged; no changes would be added by a merge commit.

All commits from this branch (`cb51ba72`, `3deae056`) are already present in `main` — they were pulled in when `feature/affiliates-module` was cut from this branch and then merged via PR#25. Closing as already merged; no changes would be added by a merge commit.
pyr0ball closed this pull request 2026-04-04 19:16:17 -07:00

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/circuitforge-core#20
No description provided.