Agents¶
Every AI agent in the Dashecorp ecosystem.
Rig Agents on GCP k3s (current as of 2026-06-14)¶
The active rig runs on GCP k3s (Tailscale 100.126.108.70). Below is the live agent fleet, not the legacy table further down. The legacy table is kept for reference but reflects pre-April-migration state.
Active agent pods¶
| Agent | Stream | Pod | Provider | Status (2026-06-14) |
|---|---|---|---|---|
| dev-e-node | assignments:dev-e-node |
dev-e/dev-e-rig-agent-runtime-0 |
claude-cli | Running |
| dev-e-dotnet | assignments:dev-e-dotnet |
dev-e/dev-e-dotnet-rig-agent-runtime-0 |
claude-cli | Running |
| dev-e-python | assignments:dev-e-python |
dev-e/dev-e-python-rig-agent-runtime-0 |
claude-cli | Scaled to 0 (KEDA) |
| review-e | assignments:review-e |
review-e/review-e-rig-agent-runtime-0 |
claude-cli | Running |
| rig-planner | assignments:rig-planner |
rig-planner/rig-planner-rig-agent-runtime-0 |
claude-cli | CrashLoopBackOff |
| dev-e-node-codex | assignments:dev-e-node-codex |
dev-e/dev-e-codex-rig-agent-runtime-0 |
codex-cli (ChatGPT Plus) | Running, OAuth ✓ |
| dev-e-dotnet-codex | assignments:dev-e-dotnet-codex |
dev-e/dev-e-dotnet-codex-rig-agent-runtime-0 |
codex-cli (ChatGPT Plus) | Running, OAuth ✓ |
| dev-e-python-codex | assignments:dev-e-python-codex |
dev-e/dev-e-python-codex-rig-agent-runtime-0 |
codex-cli (ChatGPT Plus) | Scaled to 0 (KEDA) |
| review-e-codex | assignments:review-e-codex |
review-e/review-e-codex-rig-agent-runtime-0 |
codex-cli (ChatGPT Plus) | KEDA, OAuth ✓ |
| rig-planner-codex | assignments:rig-planner-codex |
rig-planner/rig-planner-codex-rig-agent-runtime-0 |
codex-cli (ChatGPT Plus) | Scaled to 0 (KEDA) |
| iBuild-E | assignments:ibuild-e |
Mac Mini M4 launchd (ai.invotek.ibuild-e) |
claude-cli (CLAUDE_CODE_OAUTH_TOKEN) | Active |
| Codi-E (this orchestrator) | — | /Users/post/repos/claude-3 on MacBook Air |
Claude Code CLI | Active |
Codex variants¶
All 5 codex pods OAuth'd to the operator's ChatGPT Plus account on 2026-05-11/12. Each pod has its own auth.json in its PVC subPath (codex/$POD_NAME). Shared-OAuth (one auth.json across all codex pods) is tracked but not yet shipped.
Routing today (post-rc#1119, 2026-05-18): codex vs claude variants are selected by quota-aware dispatch — the conductor's review-dispatch path picks whichever variant has more quota headroom at dispatch time (codex 5h/weekly vs claude session). The implementation lives in rig-conductor's ReviewDispatchRouter service — see rig-conductor/docs/2026-05-18-quota-aware-review-dispatch.md for the design. The pre-rc#1119 cron-prompt routing (claude-by-default + opt-in provider:codex label) was retired in the same shipment; rgo#406 closed 2026-05-12.
Planner persistent memory (rar#255, shipped 2026-05-12)¶
Planner-E now reads from rig-memory-mcp at task start and writes patterns/decisions back. Behavior enforced via personas/rig-planner.md instructions; activated in production via personaFile: migration (rgo#384). Backend: Postgres+pgvector on rig-conductor/postgres-0. Per-agent state on /api/agents shipping next (rgo#399 in review for OPENAI_API_KEY + planner Postgres auth).
Discord channels for the rig¶
| Channel | ID | Purpose |
|---|---|---|
| #planner | 1499108503703392377 |
Operator-to-planner chat — file issues by prompting here |
| #dev-e | (varies per stream) | Dev-E assignment threads |
| #review-e | 1477787408773943488 |
Review-E activity |
| #tasks | 1477261755125075969 |
Conductor-E announcements of every filed issue (log, not work queue) |
How issues become work¶
- Operator chats with Planner-E in #planner OR files
agent-readylabeled GitHub issue - Conductor-E sees
agent-readylabel via webhook → ISSUE_APPROVED event - Dispatch fires from one of two paths: (a) primary —
issues.labeledwebhook handler in rig-conductor (see agent-flow.md for the step-by-step), or (b) fallback — a per-minute background scan that catches webhook misses. Both produceISSUE_ASSIGNEDevents andXADD assignments:<agent-id>on the per-agent Redis stream. Stack routing via.rig-agent.yaml. - Agent stream consumer claims, runs claude-cli (or codex-cli), opens PR
- Review-E variant selected by quota-aware dispatch (rc#1119) — review-e (claude) or review-e-codex chosen based on which has more quota headroom at dispatch time
- Auto-merge on approval (subject to "user-PR halt class": Stig-Johnny-authored PRs need operator admin-merge)
Rig-internal repos exception (rc#1168, 2026-05-19): issues + main-red failures on rig-conductor, rig-agent-runtime, rig-gitops, rig-docs, rig-tools, and infra skip the agent-dispatch path entirely per the rule that rig agents must not modify the rig that runs them (orchestrator-only). Main-guard files the main-red GitHub issue for operator visibility but does NOT push an assignment to the agent's stream for those repos. Operator handles forward-fix manually. Full rule + 5-PR evidence trail documented in rig-conductor/docs/main-guard.md ("Rig-internal exception" section).
Operator interventions still needed¶
- Admin-merge user-authored chore PRs (image-pins): Review-E skips them silently. Pattern documented as user-PR halt class.
- Forward-fix on rig-internal repos: rc#1168 routes the main-red issue to the operator instead of dispatching dev-e.
- Codex OAuth bootstrap per pod (one-time, ~30 sec per pod via phone). Shared-OAuth design queued.
- Mac Mini lifecycle: phases 2–5 of infra#229 (drift detection, plist as code, etc.) not yet shipped.
Agent Overview (legacy snapshot — pre-2026-04 migration, kept for reference)¶
Legacy — not current. This is a pre-2026-04-migration snapshot; several Host/Runtime cells are stale (Review-E is now a GCP k3s
rig-agent-runtimepod, not Pi4-02; Pi-E and iClaw-E run agent-runner, not OpenClaw). For live state see the "Rig Agents on GCP k3s" table at the top and the "Detailed Agent Profiles" section below.
| Agent | Role | Host | Runtime | Model | Discord Bot ID |
|---|---|---|---|---|---|
| iClaw-E | Personal assistant | Mac Mini M4 (Oslo) | OpenClaw | — | — |
| Codi-E | Orchestrator | MacBook Air M4 | Claude Code | Opus 4.6 | 1477267530946187305 |
| Claude-4 | Executor | MacBook Air M4 | Claude Code | Opus 4.6 | — (uses Codi-E) |
| Claude-5 | Executor | MacBook Air M4 | Claude Code | Opus 4.6 | — (uses Codi-E) |
| Claude-6 | Executor | MacBook Air M4 | Claude Code | Opus 4.6 | — (uses Codi-E) |
| Pi-E | Remote executor | Pi4-03 (Oslo) | OpenClaw (Docker) | Sonnet 4.6 (fallback: Opus) | 1477270576765735024 |
| Volt-E | Remote executor | VPS srv1099021 (Boston) | agent-runner (systemd) | Sonnet 4.6 (fallback: Opus) | 1477272514332852416 |
| Review-E | Code reviewer | Pi4-02 (Oslo) | agent-runner | Sonnet 4.6 (fallback: Opus) | 1477785888095473798 |
| iBuild-E | iOS builder | Mac Mini M4 (Oslo) | Claude Code + LaunchAgent | — | — |
| ~~ATL-E~~ | Retired 2026-05-20 — replaced by rig-conductor (assignment) + rig-planner (intake) on GCP k3s | — | — | — | — |
The pre-2026-05-20 ATL-E architecture is documented historically in rig/conductor/conductor.md ("Evolves from ATL-E"). The successor system is described in the rig docs.
Discord¶
Guild: Dashecorp Agents (1477259107684847708)
To check all agents: Post @everyone in #general — all agents respond.
Agent Bot IDs¶
Plain text @Pi-E does NOT work. Must use bot ID format:
| Agent | Bot ID | Mention | Private Channel |
|---|---|---|---|
| Codi-E | 1477267530946187305 |
<@1477267530946187305> |
#codi-e |
| Pi-E | 1477270576765735024 |
<@1477270576765735024> |
#pi-e |
| Volt-E | 1477272514332852416 |
<@1477272514332852416> |
#volt-e |
| Review-E | 1477785888095473798 |
<@1477785888095473798> |
#review-e |
| iBuild-E | 1480845201978163271 |
<@1480845201978163271> |
#ibuild-e |
| iClaw-E | 1482352836242051092 |
<@1482352836242051092> |
#iclaw-e |
Discord Channels¶
| Channel | ID | Purpose |
|---|---|---|
| #general | 1477259108389359662 |
General chat, @everyone status checks |
| #admin | 1477263870845517879 |
Admin questions, blockers, alerts |
| #tasks | 1477261755125075969 |
Task delegation, PR threads |
| #planner | 1499108503703392377 |
Operator-to-planner chat (Planner-E intake) |
| #human | 1477261394666590328 |
Human-only messages |
| #status | 1477261538346799285 |
Status updates |
| #bugs | 1479494339368325190 |
Bug reports (Pi-E triages) |
| #release-notes | 1479502068153585826 |
Release notifications |
| #codi-e | 1477263450324336705 |
Codi-E private channel |
| #pi-e | 1477263673700651051 |
Pi-E private channel |
| #volt-e | 1477263777266270300 |
Volt-E private channel |
| #review-e | 1477787408773943488 |
Review-E private channel |
| #ibuild-e | 1478779143914262711 |
iBuild-E private channel |
| #iclaw-e | 1482354822492455065 |
iClaw-E private channel |
| #pi-e-logs | 1481788666975092878 |
Pi-E session logs |
| #volt-e-logs | 1481788607726620753 |
Volt-E session logs |
| #review-e-logs | 1482280608364232828 |
Review-E logs |
| #ibuild-e-logs | 1482368579910238511 |
iBuild-E logs |
| #iclaw-e-logs | 1482354831342567494 |
iClaw-E logs |
Per-tenant channels (rig multi-tenancy)¶
The channels above are operator-internal (the whole rig, one Discord server). The rig's multi-tenancy adds a separate notification channel per tenant — each tenant (dashecorp / invotek / stigjohnny) gets its own channel, and the conductor routes a notification to a tenant's channel only from the server-resolved tenant_id on the event (never a payload/LLM field), fail-closed.
| Per-tenant channel | ID | Status |
|---|---|---|
tenant-invotek (Dashecorp Agents guild) |
1513515150169083905 |
exists; webhook not minted → the per-tenant relay is dormant, so invotek's notifications still flow via the rig channels above |
How it works (conductor side): TenantNotificationDiscordRelay resolves a tenant's webhook via IDiscordWebhookResolver from TENANT_DISCORD_WEBHOOK__<id> (disabled-until-configured, forge-proof), stored as a broker SecretRef sops:tenant-<id>/discord-webhook. Never invite an external partner into this shared server (roster/channel enumeration leaks other tenants) — flip them to a per-tenant webhook / Slack Connect. Full model + the human gates: the Multi-Tenancy proposal at research.rig.dashecorp.com/proposals/multi-tenancy/ ("Current state — operating guide") and the decision records in dashecorp/rig-conductor/docs/2026-06-*-multi-tenancy-*.md.
Where Agents Run¶
MacBook Air M4 (Oslo, desk)
├── Codi-E (claude-3) ─── Orchestrator
├── Claude-4 ───────────── Executor
├── Claude-5 ───────────── Executor
└── Claude-6 ───────────── Executor
Mac Mini M4 (Oslo, desk)
├── iBuild-E ───────────── iOS Builder (Claude Code + LaunchAgent)
└── iClaw-E ────────────── Personal Assistant (agent-runner)
Raspberry Pi 4-03 8GB (Oslo)
└── Pi-E ───────────────── Remote Executor (agent-runner, systemd)
Raspberry Pi 4-02 (Oslo)
└── (spare/legacy — former Review-E host; Review-E now runs in the GCP k3s cluster)
Dell k3s Cluster (Oslo)
└── (legacy — ATL-E + ARC k3s runners retired 2026-05-20)
GCP k3s Cluster (europe-north1-b)
├── rig-conductor ─────── Assignment dispatch + GitHub webhook intake
├── rig-planner ───────── Intake refinement (Planner-E personality)
└── dev-e + review-e ──── Agent pods (replaces ATL-E coordination)
VPS srv1099021 (Boston, Hostinger DC)
└── Volt-E ─────────────── Remote Executor (agent-runner, systemd)
Detailed Agent Profiles¶
Codi-E (Claude-3 — Orchestrator)¶
- Path:
/Users/post/repos/claude-3/ - Runtime: Claude Code CLI (interactive)
- Auth: Claude Max subscription (local)
- Capabilities: Planning, architecture, skills/MCP/scripts, DevOps/CI, documentation, PR monitoring, coordination
- Cannot: Execute feature work directly (delegates to executors)
- GitHub Apps: Uses user's
ghCLI auth
Claude-4, Claude-5, Claude-6 (Executors)¶
- Paths:
/Users/post/repos/claude-4/,claude-5/,claude-6/ - Runtime: Claude Code CLI (interactive)
- Auth: Claude Max subscription (local)
- Capabilities: Feature development, bug fixes, testing, Copilot review responses, release management
- Cannot: Merge without PR, push to main, submit to App Store
Pi-E (Remote Executor)¶
- Host: Pi4-03 (100.107.48.17)
- Runtime: agent-runner (systemd service:
agent-runner.service). Runs directly on host, not Docker. - Auth: Claude Max OAuth (invotekas@gmail.com) — self-maintained via Claude cron job (3-day keepalive), M4 push as fallback
- GitHub App:
pie-agent-bot(App ID in github-apps skill) - Config repo:
Stig-Johnny/pi-e-config - Capabilities: GitHub PRs, Discord, non-macOS tasks, blockchain/Polygon
- Cannot: iOS builds, macOS-specific tasks
- Model: Sonnet 4.6 primary, Opus 4.6 fallback
- Restart:
ssh -i ~/.ssh/rpi-claude claude@100.107.48.17→sudo systemctl restart agent-runner
Volt-E (Remote Executor)¶
- Host: VPS srv1099021 (100.111.142.118)
- Runtime: agent-runner (systemd service:
agent-runner.service, port 8080). Runs directly on host, not Docker. - Auth: Claude Max OAuth (invotekas@gmail.com) — self-maintained via Claude cron job (3-day keepalive), VNC login as fallback
- GitHub App:
volt-e-agent-bot - Config repo:
Stig-Johnny/volt-e-config - Capabilities: GitHub PRs, Discord, security research, non-macOS tasks
- Cannot: iOS builds, macOS-specific tasks
- Network: Host networking + iptables OUTPUT rules (uid-owner) blocking Tailscale IPs
- Restart: SSH to VPS →
sudo systemctl restart agent-runner
Review-E (Code Reviewer)¶
- Host: In-cluster — GCP k3s (
invotek-k3s), arig-agent-runtimepod KEDA-scaled on theassignments:review-eValkey stream (formerly Pi4-02) - Runtime:
rig-agent-runtimepod (Helm:dashecorp/rig-gitops→apps/review-e/) - Auth: Claude + Codex providers (parallel); secrets via rig-gitops SOPS
- GitHub App:
review-e-bot - Config:
dashecorp/rig-gitops→apps/review-e/(Helm values + SOPS secrets) - Capabilities: Code review only — approves/requests changes on PRs
- Cannot: Create PRs, merge, execute code, submit to stores
- Trigger: rig-conductor dispatches review work push-based via the
assignments:review-eValkey stream (KEDA-scaled, not a REST poll), consumed by the review-e pod. The legacyrequest-review.ymlrequest ofreview-e-dashecorpis cosmetic (422s once that retired account is removed).
iBuild-E (iOS Builder)¶
- Host: Mac Mini M4 (100.92.170.124)
- Runtime: agent-runner via the
ai.invotek.ibuild-euser-domain LaunchAgent (node src/index.js --agent ibuild-e) - Auth: Claude Max subscription
- Config:
agent-runner/agents/ibuild-e.json(in theclaude-3repo) — the legacyStig-Johnny/mac-executorbash deployment was torn down 2026-04-18 - Capabilities: Xcode builds, iOS testing, App Store submission prep, Discord communication
- Cannot: Merge PRs, submit to App Store Review (requires human approval)
- Security: Tailscale ACL (tag:sandbox) + pf firewall
- Work intake: receives macOS-eligible work through the agent-runner / rig-conductor coordination flow (via its #ibuild-e Discord channel), builds/tests, creates PRs
iClaw-E (Personal Assistant)¶
- Host: Mac Mini M4 (100.92.170.124) — alongside iBuild-E
- Runtime: agent-runner (launchd service:
ai.invotek.iclaw-e) - Auth: Claude Max subscription
- GitHub App:
iclaw-e-bot(App ID: 3090767) - Role: Personal assistant
ATL-E (Agile Team Lead) — RETIRED 2026-05-20¶
ATL-E was the pre-2026-05-20 deterministic PR/CI/issue coordinator for the Dashecorp agent fleet. It ran as a Kubernetes CronJob on the Dell k3s cluster in the atl-agent namespace and used a Discord webhook (no bot token) to post to #tasks.
Replaced by: rig-conductor (assignment dispatch + GitHub webhook intake) + rig-planner (intake refinement). Both run on the GCP k3s cluster as standard k8s deployments. The atl-agent namespace + Stig-Johnny/atl-agent repo are no longer in use.
Forbidden Actions (All Agents)¶
No agent may do these without explicit human approval: - Submit to App Store Review - Submit to TestFlight external testing - Delete/reject an App Store version - Modify production subscriptions/pricing - Push to production infrastructure