Skip to content

feat(make): add overlay-up-bus — NATS-only bring-up without CHIT passphrase - #1813

Merged
POWERFULMOVES merged 1 commit into
mainfrom
fix/overlay-up-bus-nats-only
Jun 15, 2026
Merged

POWERFULMOVES merged 1 commit into
mainfrom
fix/overlay-up-bus-nats-only

Conversation

@POWERFULMOVES

@POWERFULMOVES POWERFULMOVES commented Jun 15, 2026

Copy link
Copy Markdown
Owner

Problem

NATS is down fleet-wide because pmoves-kvm4-2 (the canonical NATS hub, nats.pmoves.ai) can't bring it up. make up-bus uses $(DC), which includes STACK_FILES (the monolith docker-compose.yml + GPU overlays). docker compose resolves every required variable across the whole merged project at parse time, so the fail-fast ${CHIT_PROD_PASSPHRASE:?...} guard on the CHIT app services (agent-zero, evo-controller, hi-rag-gateway-gpu) aborts even a single-service up -d nats on any node that doesn't hold the voice-activated CHIT passphrase — which kvm4-2 doesn't.

Why not just weaken the guard

The guard is a deliberate fail-fast on ~19 service definitions across 4 protected compose files. Converting :?:- would let CHIT services boot with an empty passphrase on any under-provisioned node — a fleet-wide security regression — to solve a node-local bring-up problem. Rejected.

Fix

Reuse the split-overlay system the repo already ships. OVERLAY_DC layers only docker-compose.base.yml + docker-compose.core.yml:

  • Neither file carries the ${CHIT_PROD_PASSPHRASE:?} guard (it lives only in the monolith + agents/media overlays).
  • core.yml's nats uses ${NATS_USER:-nats} / ${NATS_PASSWORD:-pmoves} defaults (fleet-consistent static creds).
  • base.yml provides the networks + the supabase-storage-data volume that broke earlier core-only attempts.

New target starts only nats + nats-init. The fleet-wide fail-fast guards are left fully intact.

Validation

From a fresh worktree with no real env files (only .example — an unprovisioned-node stand-in, no voice passphrase):

$ docker compose -f docker-compose.base.yml -f docker-compose.core.yml config --services
nats
nats-init        # exit 0 — no passphrase error

make -n overlay-up-bus expands to:

docker compose -p pmoves [...env-files...] -f docker-compose.base.yml -f docker-compose.core.yml up -d nats nats-init

Follow-up (not in this PR)

  • Run make overlay-up-bus on kvm4-2 once merged + pulled → NATS up on :4222, restoring the fleet bus (p7 launch / chit.signed / geometry bus / branch-trail emitter).
  • A CI cleanup step for orphaned buildx builders on the VPS runners (separate concern).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Added a new startup configuration option for independent NATS event bus initialization. This enables more granular control over service startup sequences while maintaining full compatibility with existing startup workflows.

@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d0548a9a-b37c-4c18-8528-25b58f08f2f5

📥 Commits

Reviewing files that changed from the base of the PR and between 8f3c8f5 and 01c57e4.

📒 Files selected for processing (1)
  • pmoves/Makefile

📝 Walkthrough

Walkthrough

A new Make target overlay-up-bus is added to pmoves/Makefile and registered in .PHONY. It starts only the nats and nats-init services using the split overlay compose files, intentionally excluding CHIT app services to avoid passphrase guard failures on hosts without the required CHIT passphrase.

Changes

NATS Bus-Only Overlay Target

Layer / File(s) Summary
overlay-up-bus target definition
pmoves/Makefile
Adds overlay-up-bus to the .PHONY list and defines its recipe to bring up only nats and nats-init via split overlay compose files, with inline comments documenting the intentional exclusion of CHIT app services.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐇 Hop, hop, the bus pulls in,
NATS spins up without a sin,
No passphrase guard to block the way,
Just nats and nats-init today!
The overlay rides the Make express ~

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description provides detailed context (problem, rationale, solution, validation), but the required sections (Summary, Testing, Required Checks, Review Coordination) are not structured according to the template. Reorganize the description to match the template structure with Summary, Testing, Required Checks, Review Coordination, and optional Follow-up Tasks sections.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title concisely and accurately describes the main change: adding a new Makefile target for bringing up NATS without requiring the CHIT passphrase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/overlay-up-bus-nats-only

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

…phrase

`make up-bus` uses $(DC), which includes STACK_FILES (the monolith
docker-compose.yml + GPU overlays). docker compose resolves every required
variable across the whole merged project at parse time, so the fail-fast
${CHIT_PROD_PASSPHRASE:?...} guard on the CHIT app services (agent-zero,
evo-controller, hi-rag-gateway-gpu) blocks even a single-service `up -d nats`
on any node that does not hold the voice-activated CHIT passphrase (e.g.
kvm4-2, the canonical NATS hub — currently down fleet-wide for this reason).

Rather than weaken that fail-fast guard across ~19 service definitions in four
protected compose files (a fleet-wide security regression that would let CHIT
services boot with an empty passphrase), this reuses the existing split-overlay
system: OVERLAY_DC layers only docker-compose.base.yml + docker-compose.core.yml
(neither carries the passphrase guard; core.yml's nats uses
${NATS_USER:-nats}/${NATS_PASSWORD:-pmoves} defaults) and starts just
nats + nats-init.

Validated: `docker compose -f base -f core config` parses cleanly with NO real
env files present (only .example), i.e. without the voice passphrase — exit 0,
nats/nats-init present, no passphrase error. The fleet-wide fail-fast guards are
left fully intact.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@POWERFULMOVES
POWERFULMOVES force-pushed the fix/overlay-up-bus-nats-only branch from f36a85f to 01c57e4 Compare June 15, 2026 21:13
@POWERFULMOVES
POWERFULMOVES marked this pull request as ready for review June 15, 2026 21:14
@POWERFULMOVES
POWERFULMOVES merged commit 48bc44a into main Jun 15, 2026
13 of 14 checks passed
@POWERFULMOVES
POWERFULMOVES deleted the fix/overlay-up-bus-nats-only branch June 15, 2026 21:15

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 01c57e4632

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread pmoves/Makefile
# up cleanly with the fleet-wide fail-fast guards left fully intact.
overlay-up-bus: ## Start ONLY the NATS event bus via overlay (no CHIT passphrase / no app services)
@echo "📨 Starting NATS event bus via overlay (base+core, bus-only)..."
@$(OVERLAY_DC) $(OVERLAY_CORE) up -d nats nats-init

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make bus-only startup avoid required service env_files

On a clean/CHIT-less node that only has the .example env files, this command still aborts before starting NATS: docker-compose.core.yml has nats inherit service-level env_file: env.shared and env.tier-data (core.yml lines 11-14). The Makefile's --env-file env.shared.example only supplies Compose interpolation and does not satisfy those container env_file paths; Docker documents those entries as required by default (required: true # default), so up fails with a missing env-file error in exactly the fresh-worktree scenario this target is meant to support. Use an override that makes these env_files optional for the bus-only path or create/copy the real files before invoking Compose.

Useful? React with 👍 / 👎.

POWERFULMOVES added a commit that referenced this pull request Jun 16, 2026
… check-gate) (#1826)

Adds a manual deploy job that brings up / restarts the NATS event bus on the
canonical fleet hub (kvm4-2) without interactive SSH — sidestepping the Tailscale
check-mode re-auth gate (#1820) that now fronts all fleet SSH.

- Targets the kvm4-2 runner via the node-unique `kvm4-2` label just added to it
  (both VPS runners share `kvm4`, so that label alone can't pin the node).
- Operates on the durable /opt/PMOVES.AI checkout, reusing the env chain +
  pmoves_external network already provisioned there; NATS creds are static `:-`
  defaults so no secrets are needed.
- Idempotently ensures the external-declared pmoves_external network exists, then
  runs `make overlay-up-bus` (the guard-preserving target from #1813) and verifies
  varz over the node tailnet IP (NATS_BIND is mesh-only, not localhost).
- Uses only `run:` steps (no `uses:`) → exempt from the sha-pinning gate.

Companion to #1813 (overlay-up-bus) and #1824 (multi-home nats on pmoves_external).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant