Deploy the Fabric dashboard from the registry image #67

Merged
scruffydude merged 2 commits from ai-fabric-registry-image into main 2026-10-14 15:32:32 -04:00
Collaborator

Switches the ai_fabric role from building on channel66 to pulling git.scruffydude.net/scruffydude/homelab-fabric, the same way astr and comfy-gallery deploy.

Blocked, do not merge yet. This needs a HomelabFabric release with a published image:

  1. Merge #66 (buildx on the runner). It's already deployed to optibcc.
  2. Merge scruffydude/HomelabFabric#1. Add the REGISTRY_TOKEN Actions secret there if it's missing (a scruffydude token with write:package, the same as astr).
  3. Tag HomelabFabric v0.2.0 and wait for the build-and-push run.
  4. On this branch, run scripts/sync_fabric.sh v0.2.0 and commit. That bumps both the vendored code and the image tag. Then drop WIP: and merge.
  5. Run deploy_ai_fabric.yml.

Changes

  • Image tag: ai_fabric.image is homelab-fabric:{{ ai_fabric_version }}, read from scripts/agents/FABRIC_VERSION. One sync bumps code and image together, so they can't drift apart. sync_fabric.sh now warns if the release's image isn't in the registry yet.
  • Pulling: uses pull: missing. That's enough because the tag is a pinned release, and it keeps the role idempotent. No registry login is needed; anonymous pulls work, as they do for astr.
  • Config: comes from the image's AI_FABRIC_* env defaults, which already match today's deployment. ai_fabric.environment: {} holds any overrides. I dropped the now-redundant internal_port, repo_root_in_container, job_dir_in_container, cost_per_million_tokens and import_interval_seconds vars. Mounts (/data, /repo, /root/.ssh) and init: true are unchanged.
  • Removed: Dockerfile.j2, the app-file copy, the on-host build task, and the compose build: block. A cleanup task deletes the old Dockerfile and app/ from /opt/stacks/ai-fabric.
  • Wait-for-ready bug fixed: the role probed /api/summary without a Remote-Groups header. That endpoint returns 403 for non-admins, so the probe could never get a 200. The role now waits for the image's own HEALTHCHECK to report healthy.
  • AGENTS.md and scripts/agents/README.md describe the updated release flow.

Verified

  • Syntax checks pass, and ai_fabric.image resolves to ...homelab-fabric:v0.1.0 from FABRIC_VERSION.
  • The compose file renders with and without environment overrides.
  • The new registry check in sync_fabric.sh finds an existing image (astr:latest) and reports a missing one (homelab-fabric:v0.1.0).
  • Not deployed: no image has been published yet.

🤖 Generated with Claude Code

Switches the `ai_fabric` role from building on channel66 to pulling `git.scruffydude.net/scruffydude/homelab-fabric`, the same way astr and comfy-gallery deploy. **Blocked, do not merge yet.** This needs a HomelabFabric release with a published image: 1. Merge #66 (buildx on the runner). It's already deployed to optibcc. 2. Merge scruffydude/HomelabFabric#1. Add the `REGISTRY_TOKEN` Actions secret there if it's missing (a scruffydude token with write:package, the same as astr). 3. Tag HomelabFabric `v0.2.0` and wait for the build-and-push run. 4. On this branch, run `scripts/sync_fabric.sh v0.2.0` and commit. That bumps both the vendored code and the image tag. Then drop `WIP:` and merge. 5. Run `deploy_ai_fabric.yml`. ## Changes - **Image tag:** `ai_fabric.image` is `homelab-fabric:{{ ai_fabric_version }}`, read from `scripts/agents/FABRIC_VERSION`. One sync bumps code and image together, so they can't drift apart. `sync_fabric.sh` now warns if the release's image isn't in the registry yet. - **Pulling:** uses `pull: missing`. That's enough because the tag is a pinned release, and it keeps the role idempotent. No registry login is needed; anonymous pulls work, as they do for astr. - **Config:** comes from the image's `AI_FABRIC_*` env defaults, which already match today's deployment. `ai_fabric.environment: {}` holds any overrides. I dropped the now-redundant `internal_port`, `repo_root_in_container`, `job_dir_in_container`, `cost_per_million_tokens` and `import_interval_seconds` vars. Mounts (`/data`, `/repo`, `/root/.ssh`) and `init: true` are unchanged. - **Removed:** `Dockerfile.j2`, the app-file copy, the on-host build task, and the compose `build:` block. A cleanup task deletes the old `Dockerfile` and `app/` from `/opt/stacks/ai-fabric`. - **Wait-for-ready bug fixed:** the role probed `/api/summary` without a `Remote-Groups` header. That endpoint returns 403 for non-admins, so the probe could never get a 200. The role now waits for the image's own HEALTHCHECK to report `healthy`. - `AGENTS.md` and `scripts/agents/README.md` describe the updated release flow. ## Verified - Syntax checks pass, and `ai_fabric.image` resolves to `...homelab-fabric:v0.1.0` from `FABRIC_VERSION`. - The compose file renders with and without `environment` overrides. - The new registry check in `sync_fabric.sh` finds an existing image (`astr:latest`) and reports a missing one (`homelab-fabric:v0.1.0`). - Not deployed: no image has been published yet. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Deploy the Fabric dashboard from the registry image
All checks were successful
CI Pipeline / Validate Ansible Syntax (pull_request) Successful in 3m27s
CI Pipeline / Test Ansible Playbooks (Syntax Only) (pull_request) Successful in 1m37s
CI Pipeline / Python Tests (pull_request) Successful in 23s
4651cd88b8
ai_fabric now pulls git.scruffydude.net/scruffydude/homelab-fabric instead
of rendering a Dockerfile and building on channel66, matching astr and
comfy-gallery. The image is built multi-arch by HomelabFabric's CI.

- The image tag comes from scripts/agents/FABRIC_VERSION, so
  `scripts/sync_fabric.sh vX.Y.Z` bumps the vendored code and the deployed
  image in one step. The script now warns if that image isn't published yet.
- Config goes through the image's AI_FABRIC_* env defaults, which already
  match this deployment; ai_fabric.environment carries any overrides. Drops
  the now-redundant internal_port/repo_root/job_dir/interval/cost vars.
  Mounts and init: true are unchanged.
- Removes Dockerfile.j2, the app-file copy and on-host build tasks, and the
  old build context on channel66.
- Fixes the wait-for-ready task: it probed /api/summary without a
  Remote-Groups header, which returns 403 for non-admins, so it could
  never see a 200. It now waits on the image's HEALTHCHECK.

Requires a HomelabFabric release with a published image before deploying.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nimby force-pushed ai-fabric-registry-image from 4651cd88b8
All checks were successful
CI Pipeline / Validate Ansible Syntax (pull_request) Successful in 3m27s
CI Pipeline / Test Ansible Playbooks (Syntax Only) (pull_request) Successful in 1m37s
CI Pipeline / Python Tests (pull_request) Successful in 23s
to 64298e905c
All checks were successful
CI Pipeline / Validate Ansible Syntax (pull_request) Successful in 1m34s
CI Pipeline / Test Ansible Playbooks (Syntax Only) (pull_request) Successful in 52s
CI Pipeline / Python Tests (pull_request) Successful in 25s
CI Pipeline / Validate Ansible Syntax (push) Successful in 1m29s
CI Pipeline / Test Ansible Playbooks (Syntax Only) (push) Successful in 56s
CI Pipeline / Python Tests (push) Successful in 24s
2026-10-14 13:39:49 -04:00
Compare
scruffydude changed title from WIP: Deploy the Fabric dashboard from the registry image to Deploy the Fabric dashboard from the registry image 2026-10-14 15:32:27 -04:00
scruffydude deleted branch ai-fabric-registry-image 2026-10-14 15:32:33 -04:00
Sign in to join this conversation.
No reviewers
No labels
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
scruffydude/homelab!67
No description provided.