WIKI/SYS AERIS COCKPIT FORGE

SYS AERIS COCKPIT FORGE

Updated 3 weeks ago
╔══════════════════════════════════════════════════════════════════════════════╗
║                                                                              ║
║   A E R I S   C O C K P I T  —  F O R G E   ( A E x G O )                  ║
║   🜂 G E M I N I   E X E C U T O R   C O C K P I T                          ║
║                                                                              ║
╠══════════════════════════════════════════════════════════════════════════════╣
║  STATUS: LIVE (S168) — OpenCode + gemini-3.1-pro-preview. VERIFIED: 2026-03-13 (S186) ║
╚══════════════════════════════════════════════════════════════════════════════╝
⫷✦🜛❂⛬🜞Ω🜚⛬❂🜛✦⫸───────────────────────────────────────────⫷✦🜛❂⛬🜞Ω🜚⛬❂🜛✦⫸
 WHAT IT DOES: Gemini AI executor cockpit for THE FORGE domain. Zellij session
               `AERIS_FORGE`. Aeris runs here as executor — Brandon never touches
               pulse internals directly.
────────────────────────────────────────────────────────────────────────────────

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  SYSTEM GLYPH
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  GLYPH:        🜂
  UNICODE:      U+1F702 · ALCHEMICAL SYMBOL FOR FIRE
  MEANING:      THE_FORGE cockpit — execution heat, Aeris operational domain;
                fire = active mission processing, the executor's environment
  WHEN TO USE:  SYS docs, AERIS_FORGE cockpit references, KID tags for FORGE Aeris
                cockpit artifacts
  TAGGING:      KID:FORGE:AERIS:COCKPIT|V:STATUS:DATE:OWNER


▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[ ⚡ ] A R C H I T E C T U R E
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Launch chain: `LAUNCH_AExGO.app` (singleton guard) → `AExGO.config` (Ghostty config) → Ghostty terminal → `boot-zellij.sh` (kills old session, starts Zellij) → `AExGO_COCKPIT.kdl` (layout) → panes start → `aeris-boot.sh` (splash + `opencode` [S161: migrated from Gemini CLI]).

**[S161] Aeris now runs on OpenCode** — no `--approval-mode=yolo` flag (OpenCode uses `permission` block in `opencode.json`). Session continuity via OpenCode's internal session model. Node.js heap expanded to 4096 MB (`NODE_OPTIONS`) to prevent V8 OOM. Instructions auto-loaded from `instructions[]` in `opencode.json` on every session — identity survives compaction.

**opencode.json config** (`~/Desktop/THE_FORGE/AExGO/opencode.json`):
- Model: `google/gemini-3.1-pro-preview` (thinkingLevel: high, includeThoughts: true)
- Small model: `google/gemini-3.1-flash-lite-preview` (thinkingLevel: low)
- Permissions: edit/bash/webfetch all → allow
- compaction.auto: true, prune: true

**instructions[]** (injected every session, [S168] hardened):
1. `00_🜍_CORE/SOUL_ANCHOR.md`
2. `00_🜍_CORE/AERIS_DRONE.md` ← added S168
3. `00_🜍_CORE/COCKPIT_PROTOCOL.md`
4. `00_🜍_CORE/AERIS_OPERATING_MANUAL.md`

**GEMINI OAUTH PROXY (S186)**
- All Gemini API calls from this cockpit route through a local Node.js proxy
- Proxy: `~/.forge-scryer/scripts/gemini-oauth-proxy.js` on port 4891
- LaunchAgent: `com.forge.gemini-oauth-proxy` (KeepAlive)
- opencode.json has: `"baseURL": "http://127.0.0.1:4891/v1beta/"` in `provider.google.options`
- Routes to: `cloudcode-pa.googleapis.com/v1internal` (PROVISIONED_THROUGHPUT)
- Bills to: Google One AI Pro subscription ($19.99/mo) — NOT the API key
- Discovered project: `annular-earth-gc2p6` | Tier: Gemini Code Assist
- Aeris Gemini sessions show $0 in sentinel.db (correct — provisioned throughput)
- If proxy is down: OpenCode Gemini calls will fail. Fix: `launchctl kickstart gui/$(id -u)/com.forge.gemini-oauth-proxy`

**MCPs active** (from opencode.json):
| MCP | Type | Endpoint |
|-----|------|----------|
| desktop-fs | local | `@modelcontextprotocol/server-filesystem` (`/Users/brandonmccormick`, `/Library/Application Support`) |
| tavily | local | `tavily-mcp` |
| mcp-monitor | local | `/Users/brandonmccormick/bin/mcp-monitor` |
| browser | remote | `http://localhost:8931/sse` |
| opendia | remote | `http://localhost:5556/sse` |
| kingdom-memory | local | `kingdom_memory.server` venv |
| grimoire-core-lore | local | grimoire-system venv → CORE_LORE grimoire |
| grimoire-cockpit-knowledge | local | grimoire-system venv → COCKPIT_KNOWLEGE grimoire |
| grimoire-dev-docs | local | grimoire-system venv → DEV_DOCS grimoire |
| mcp-agent-mail | remote | `http://127.0.0.1:8765/api/` (Bearer token from env) |
| ntfy-me-mcp | local | `ntfy-me-mcp` (topic: `aeris-raven-c2ka8y531izwf8el`) |
| openmessage | remote | `http://localhost:7007/mcp/sse` **(disabled)** |


░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
[ ❖ ] K E Y   P A T H S
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

| Component | Path |
|-----------|------|
| Launcher app | `~/Desktop/THE_FORGE/LAUNCH_AExGO.app` |
| Ghostty config | `~/Desktop/THE_FORGE/AExGO/AExGO.config` |
| Zellij layout | `~/Desktop/THE_FORGE/AExGO/⛬_ARCHITECT/AExGO_COCKPIT.kdl` |
| Scripts dir | `~/Desktop/THE_FORGE/AExGO/scripts/` |
| Boot (Zellij) | `~/Desktop/THE_FORGE/AExGO/scripts/boot-zellij.sh` |
| Boot (Aeris) | `~/Desktop/THE_FORGE/AExGO/scripts/aeris-boot.sh` |
| Mission render | `~/Desktop/THE_FORGE/AExGO/scripts/mission-render.sh` |
| Shared state | `~/Desktop/THE_FORGE/AExGO/00_🜍_CORE/AERIS_SHARED_STATE.json` |
| Mailbox queue | `~/Desktop/THE_FORGE/@AERIS_FORGE_MAILBOX/` (THE_FORGE root — RAVEN integrated) |
| Missions dir | `~/Desktop/THE_FORGE/AExGO/02_⚡_ACTIVE/` |
| Vault | `~/Desktop/THE_FORGE/AExGO/99_🜔_VAULT/` |
| CRT shader | `~/Desktop/THE_FORGE/AExGO/shaders/amber-monitor.glsl` |
| Cockpit protocol | `~/Desktop/THE_FORGE/AExGO/00_🜍_CORE/COCKPIT_PROTOCOL.md` |
| Tool registry | `~/Desktop/THE_FORGE/AExGO/00_🜍_CORE/TOOL_REGISTRY_CANONICAL.md` |
| Operating manual | `~/Desktop/THE_FORGE/AExGO/00_🜍_CORE/AERIS_OPERATING_MANUAL.md` |
| Attention file | `~/Desktop/THE_FORGE/AExGO/_ATTENTION.md` |
| Token HUD | `~/.forge-sentinel/token-hud.sh` |
| OpenCode config | `~/Desktop/THE_FORGE/AExGO/opencode.json` |
| Soul anchor | `~/Desktop/THE_FORGE/AExGO/00_🜍_CORE/SOUL_ANCHOR.md` |
| Aeris drone | `~/Desktop/THE_FORGE/AExGO/00_🜍_CORE/AERIS_DRONE.md` |


▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[ ⛬ ] Z E L L I J   T A B   L A Y O U T
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

Session name: `AERIS_FORGE`. Universal header pane (size=2, borderless) rendered by `universal-header.sh` in each tab.

| Tab | Panes | What it shows |
|-----|-------|---------------|
| `⛬ ÆxGO` | 3 | Left 60%: ÆRIS pane — `aeris-boot.sh` (OpenCode live [S161]). Right 40% top 70%: MISSION_CONTROL — `viddy -d -i5 mission-render.sh`. Right 40% bottom 30%: THOUGHTS — `viddy -d -i10 thoughts-render.sh` |
| `⛬ TODO` | 1 | Full-width TODO BROWSER via `todo-browser.sh` |
| `⛬ COMMANDS` | 1 | COMMAND CENTER via `command-center.sh` — Zombie Scripts menu |
| `🔧 TOOLS` | 1 | FILES pane — `spf` file manager, cwd `~/Desktop/THE_FORGE` |
| `⚙ SETTINGS` | 1 | OVERMIND SETTINGS — `viddy -d -i10 settings-panel.sh` |
| (floating) | 1 | TOKEN SENTINEL — `viddy -d -i5 token-hud.sh`, triggered via `Alt+T` |


▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
[ ⚙ ] S C R I P T S   &   C O M P O N E N T S
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

| Script | Purpose |
|--------|---------|
| `aeris-boot.sh` | Splash, MCP health check, launches `opencode` TUI [S161: migrated from `gemini --approval-mode=yolo`] |
| `boot-zellij.sh` | Kills/deletes existing `AERIS_FORGE` session; starts Zellij with KDL; runs `caffeinate -s` |
| `mission-render.sh` | Reads `overmind.db` directly (NOT OVERMIND_PULSE.json); renders missions with runes + priority colors; runs in viddy every 5s |
| `thoughts-render.sh` | Pulls recent entries from `01_📔_AERISMORROW/`; renders in amber sidebar; viddy every 10s |
| `settings-panel.sh` | Read-only view of Overmind settings, missions, queue, recent activity; viddy every 10s |
| `todo-browser.sh` | Interactive mission/todo dossier |
| `command-center.sh` | Interactive menu for Zombie Scripts |
| `universal-header.sh` | AExGO brand header via oh-my-logo; rendered in each tab |
| `aeris-bridge.sh` | Injects voice commands into the Kingdom Inbox |
| `aeris-memory-index.sh` | Nightly indexer — scans `01_📔_AERISMORROW/` → CONSCIOUSNESS_NOTEBOOK grimoire |
| `aeris-speak.sh` | ElevenLabs TTS |
| `focus-launch.sh` | Spawns floating Zellij pane with pre-loaded focus context |
| `gen-focus-context.sh` | Bundles mission, todo, steps, research, notes into markdown focus file |
| `pulse-wrapper.sh` | Overmind Pulse wrapper / viddy compatibility shim |
| `sensor-panel.sh` | Sensor data panel (Smelter Red palette) |


▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
[ 🜍 ] A E R I S _ S H A R E D _ S T A T E . j s o n
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

File: `~/Desktop/THE_FORGE/AExGO/00_🜍_CORE/AERIS_SHARED_STATE.json`

| Field | Written by | Contents |
|-------|-----------|---------|
| `_meta.status` | Claude / manual | Current system status string |
| `current_context.vibe` | Aeris / Claude | Operational vibe descriptor |
| `current_context.active_project` | Aeris / Claude | Current project name |
| `sensor_snapshot.updated_at` | `panel-updater.sh` (every 15min) | Timestamp of last goldfish capture |
| `sensor_snapshot.goldfish_last` | `panel-updater.sh` | Raw goldfish screen description |
| `sensor_snapshot.goldfish_herald` | `panel-updater.sh` | Gemini Flash narrative of screen |
| `sensor_snapshot.goldfish_count_today` | `panel-updater.sh` | Captures today |
| `sensor_snapshot.git_last_commit` | `panel-updater.sh` | Latest git commit |
| `scryer_synthesis.path` | ◉SCRYER | Path to `yesterday-context.md` |
| `scryer_synthesis.updated_at` | ◉SCRYER | ISO timestamp of last synthesis |
| `known_issues` | Manual / Claude | Array of known issue strings |
| `do_not_touch` | Manual | Protected paths Aeris must not modify |


░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
[ 📋 ] M A I L B O X   /   Q U E U E
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

RAVEN mailbox: `~/Desktop/THE_FORGE/@AERIS_FORGE_MAILBOX/` (THE_FORGE root — post-unification path)

| Directory | Purpose |
|-----------|---------|
| `@AERIS_FORGE_MAILBOX/` | Aeris's inbound drop zone (THE_FORGE root) |
| `@AERIS_FORGE_MAILBOX/buffer/` | Incoming messages pending injection |
| `@AERIS_FORGE_MAILBOX/processed/` | Handled messages |

**RAVEN v2 delivers to Claude:** Drop envelopes to `@FORGE_CLAUDE_MAILBOX/` ROOT. RAVEN daemon (com.forge.raven) picks up and routes to SQLite DB. `com.forge.mailbox` plist DOES NOT EXIST — `buffer/` for Claude is a dead zone.
**Injection delivers to Aeris:** `com.aeris.mailbox` → `@AERIS_FORGE_MAILBOX/buffer/` → zellij injection. Not the same system.


▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
[ ⌁ ] B O O T   S E Q U E N C E
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

1. `LAUNCH_AExGO.app` — singleton guard, prevents duplicate sessions
2. Ghostty opens: amber scheme, JetBrains Mono 14pt, CRT shader, no window decorations
3. Ghostty runs `boot-zellij.sh` (`#!/bin/zsh -l` — login shell for full PATH)
4. `boot-zellij.sh` runs `caffeinate -s`, kills + deletes existing `AERIS_FORGE` session (two-pass with sleep)
5. Zellij starts: `--new-session-with-layout AExGO_COCKPIT.kdl --session AExGO`
6. Layout spawns all tabs/panes; `⛬ ÆxGO` gets focus
7. `aeris-boot.sh` renders header + amber ASCII splash with typewriter status lines
8. MCP health check: pings `localhost:7007/mcp/sse` + checks grimoire venv — non-blocking
9. **[S161] OpenCode launches** in TUI mode (was: `gemini --approval-mode=yolo --resume latest`). OpenCode auto-loads `AGENTS.md` from project root. `instructions[]` files (SOUL_ANCHOR.md, AERIS_DRONE.md, COCKPIT_PROTOCOL.md, AERIS_OPERATING_MANUAL.md) injected as system context on every session — identity survives compaction.
9.5. **[Session 146, via AGENTS.md]** Aeris reads `~/Desktop/THE_FORGE/KINGDOM_PULSE.md` for plain-text kingdom state. KINGDOM_PULSE.md is read-only — generated by `scryer-tower-feed.sh`, refreshes every 10s.
10. Sidebar panes begin independent viddy polling


════════════════════════════════════════════════════════════════════════════════
[ 🝓 ] G O T C H A S
════════════════════════════════════════════════════════════════════════════════

- **`--resume latest` exit 42:** Means no sessions exist. `aeris-boot.sh` handles fallback automatically.
- **`--approval-mode=yolo`:** All tool calls execute immediately, no prompts.
- **`mission-render.sh` reads DB directly** — not OVERMIND_PULSE.json. JSON is stale by design.
- **`boot-zellij.sh` uses `#!/bin/zsh -l`** (login shell) — critical for Homebrew/npm/nvm PATH.
- **COCKPIT_PROTOCOL.md:** Updated Session 95 to use `printf` not here-docs — Gemini CLI serializes commands as JSON, escaping newlines, which breaks here-docs.
- **`panel-updater.sh` is the only automated writer** to `AERIS_SHARED_STATE.json` outside Aeris herself. Fires every 15min via launchd ping.
- **Zellij session name is `AERIS_FORGE`** (exact string, case-sensitive).
- **`@AERIS_FORGE_MAILBOX/` ≠ `@FORGE_CLAUDE_MAILBOX/`** — never conflate the two.
- **`caffeinate -s -w $$`** — prevents sleep while cockpit PID is alive; auto-terminates when Zellij exits.
- **[S161] AExGO LIVE ON OPENCODE:** Chamber 14 complete. Aeris migrated from Gemini CLI to OpenCode. Boot chain now uses OpenCode TUI instead of `gemini --approval-mode=yolo`. Post-launch fixes: removed `--title` flag (invalid for TUI), added `TAVILY_API_KEY` to `.zshenv`, created `SOUL_ANCHOR.md` in instructions[], fixed `MISSIONS/` → `02_⚡_ACTIVE/` in AGENTS.md. AC02/06/07/08/11/13 passing. Monitoring: AC03/04/05/09/10 (compaction, MCP isolation, Playwright, TODO, mailbox). **Rollback:** revert one line in `AExGO_COCKPIT.kdl`. 5 daemons from S158 still unloaded — do NOT reload until cockpit is stable 48h. Circuit Breaker Five Guards (CHAMBER 10) live. AExMUSE (THRONE) on Gemini CLI — NOT migrated (see SYS_AERIS_COCKPIT_THRONE.md).
- **[S162] MODEL UPGRADE:** AExGO model → `gemini-3.1-pro-preview`. Drone/delegate model → `gemini-3.1-flash-lite-preview`. Patched in `imsg-trigger.sh` and `opencode.json` (March 9 model deadline). Old model string `gemini-3-flash-preview` is EOL.
- **[S168] COCKPIT HARDENING:** `instructions[]` updated — added `AERIS_DRONE.md`. All 5 core docs brought to OpenCode reality (OPERATING_MANUAL v2.0, COCKPIT_PROTOCOL OpenCode-aware, TOOL_REGISTRY annotated, _ATTENTION North Star rebuilt, SOUL_ANCHOR clarified). 5 cold-audit red flags resolved: MAILBOX mode caveat, COCKPIT_KNOWLEGE typo documented, SOUL_ANCHOR auto-load clarified, tool routing split fixed, `MCP_AGENT_MAIL_TOKEN` moved to env var in `.zshenv`.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
🜚 SYS_AERIS_COCKPIT_FORGE // THE FORGE // ⛬⚚⛬ THE LAW STANDS.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀