Skip to content

feat(capabilities): dual-mode deployment — agent-per-node + squad-per-pod (#514) - #555

Merged
bradygaster merged 1 commit into
github:devfrom
tamirdresher:tamirdresher/520-dual-mode-capabilities
Mar 23, 2026
Merged

bradygaster merged 1 commit into
github:devfrom
tamirdresher:tamirdresher/520-dual-mode-capabilities

Conversation

@tamirdresher

Copy link
Copy Markdown
Collaborator

Summary

Extends PR #520's capability routing to support both deployment modes:

Mode Env Var Manifest Use Case
agent-per-node (default) none needed .squad/machine-capabilities.json One Ralph per K8s node
squad-per-pod SQUAD_POD_ID=pod-name .squad/machine-capabilities-{podId}.json Full Squad instance per pod

Changes

  • capabilities.ts: Pod-specific manifest loading with fallback chain
  • capabilities.test.ts: 6 new tests for dual-mode behavior
  • machine-capabilities.md: Updated docs with K8s downward API examples

Fallback chain (when SQUAD_POD_ID is set)

  1. .squad/machine-capabilities-{podId}.json (pod-specific)
  2. .squad/machine-capabilities.json (shared)
  3. ~/.squad/machine-capabilities.json (user home)
  4. null (opt-in - all issues pass through)

K8s Integration

env:
  - name: SQUAD_POD_ID
    valueFrom:
      fieldRef:
        fieldPath: metadata.name
  - name: SQUAD_DEPLOYMENT_MODE
    value: squad-per-pod

Closes #514

…uad-per-pod)

Adds SQUAD_POD_ID and SQUAD_DEPLOYMENT_MODE env vars for pod-specific
capability routing. Pod-specific manifests override shared manifests.

Closes github#514

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@bradygaster
bradygaster merged commit 2995b93 into github:dev Mar 23, 2026
2 checks passed
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.

feat: Machine Capability Discovery & Label-Based Issue Routing for Ralph

2 participants