Tracking the porting of orchestration features from external sources (OctoAlly, LLM Orchestra, LaneConductor, FORGE, Sandcastle, Concilium, LLMTrio) into opencodeR.
| Status | Meaning |
|---|---|
| 🟢 Done | Implemented, tested, merged |
| 🟡 In Progress | Active development on branch |
| 🔵 Planned | Spec written, not started |
| ⚪ Not Applicable | Out of scope for opencodeR |
| 🔴 Blocked | Dependency missing |
Sources: OctoAlly, LLM Orchestra
Orchestrator status: Done — dashboard.rs
opencodeR status: Partial — /api/session returns session info with tokens and cost fields.
Gap: No status field on sessions, no cost aggregation endpoint.
Plan:
- Add
statusfield toSessionInfoschema (active/archived/error) - Add
GET /api/session/statsendpoint for aggregated cost/token data - Update TUI dashboard with sessions table view
Sources: LLM Orchestra, LaneConductor
Orchestrator status: Done — StreamEvents gRPC
opencodeR status: ✅ GET /api/session/:id/event returns SSE with replay + live streaming.
Notes: Implemented via tokio::sync::broadcast. Session events pushed on create/prompt/switch.
Sources: FORGE, OctoAlly Orchestrator status: Proto defined, TUI not wired opencodeR status: ✅ pause/resume/freeze/terminate endpoints + SessionStatus live
- Add
statusfield to sessions (active/paused/frozen/terminated) - Wire TUI controls for session lifecycle
- Add
POST /api/session/:id/pause - Add
POST /api/session/:id/resume - Add
POST /api/session/:id/terminate - Add
POST /api/session/:id/freeze
Sources: LLM Orchestra, LLMTrio
Orchestrator status: Missing — only per-session total
opencodeR status: ✅ GET /api/cost/summary with by_provider/by_model (CostSummary)
Plan:
- Add
cost_breakdownfield toSessionInfo:struct CostBreakdown { by_provider: HashMap<String, f64>, by_model: HashMap<String, f64>, input_tokens: u64, output_tokens: u64, reasoning_tokens: u64, }
- Add
GET /api/cost/summary— aggregate costs across all sessions - Add
GET /api/cost/by-provider— costs grouped by provider - Add
GET /api/cost/by-model— costs grouped by model - Wire TUI cost panel
Sources: LLM Orchestra
Orchestrator status: Missing — proto has GetSessionLog
opencodeR status: Partial — GET /api/session/:id/message returns messages, GET /api/session/:id/event returns events
Plan:
- Add structured tool call tracing to session events
- Add
GET /api/session/:id/trace— full execution trace with tool calls, LLM requests/responses - Build TUI trace viewer panel (expandable message tree, tool call details)
- Support JSONL export of traces for debugging
Sources: Concilium, OctoAlly Orchestrator status: Missing — no I/O streaming in proto opencodeR status: Partial — PTY API exists, WebSocket connect stub works, no terminal UI Plan:
- Wire PTY process stdin/stdout to WebSocket in
connecthandler - Build a terminal widget in the TUI (or integrate with xterm.js via web)
- Add
POST /api/session/:id/terminal— create terminal for a session - Support terminal resize signals via WebSocket
Sources: LaneConductor, LLMTrio
Orchestrator status: Missing — working_directory field exists in Session
opencodeR status: Partial — group field + /api/session/groups + PATCH group endpoint exist
Plan:
- Add
group/workspacefield toSessionInfo - Add
GET /api/session?group=<id>filter - Add
PATCH /api/session/:id/group— move session to group - Build TUI kanban view (columns by status/group)
- Add drag-and-drop between columns (TUI via mouse events)
Sources: LaneConductor Orchestrator status: Missing opencodeR status: Missing Plan:
- Add batch endpoints:
POST /api/session/batch/archivePOST /api/session/batch/deletePOST /api/session/batch/exportPOST /api/session/batch/change-group
- Add multi-select mode to TUI sessions list (checkbox, space to toggle)
- Add batch action bar in TUI
Sources: Sandcastle, plan.md Sprint 2
Orchestrator status: Proto defined (GetSessionLog), TUI not wired
opencodeR status: Partial — GET /api/audit-log ✅; opencodeR export --format jsonl ✅; TUI audit viewer missing
Plan:
- Add
GET /api/session/:id/log?format=jsonl— streaming JSONL export - Add
opencodeR export --format jsonlflag - Add global audit log endpoint:
GET /api/audit-log - Add TUI audit log viewer (filterable by event type, session, time range)
Sources: Sandcastle, FORGE Orchestrator status: Missing opencodeR status: Missing Plan:
- Add
opencodeR command <natural language>— interpret and execute - Build TUI command palette (Ctrl+P / Cmd+P) with fuzzy search
- Supported commands: create session, switch agent, export, search, filter, kill
- Use LLM to parse natural language commands (optional, falls back to keyword matching)
Sources: FORGE Orchestrator status: Missing opencodeR status: Not applicable — opencodeR manages sessions in-process, not containers Notes: Would require container runtime integration (Docker/K8s). Out of scope for initial port.
Sources: (common) Orchestrator status: Missing opencodeR status: ✅ search filter live (title/id/agent/model, case-insensitive); monitor + chat TUIs filter Plan:
- Implement search filtering in
InMemorySessionService::list():- Full-text search on
title - Filter by
agent - Filter by
model - Filter by date range (
before,after) - Filter by status
- Full-text search on
- Add TUI search bar with real-time filtering
Sources: FORGE, LLMTrio Orchestrator status: Out of scope — orchestrator monitors, doesn't route opencodeR status: Out of scope — opencodeR sessions use the model they're configured with
Sources: LLMTrio Orchestrator status: Out of scope — opencode sessions are independent opencodeR status: Out of scope — parallel sessions are already independent
Sources: OctoAlly (36 agents) Orchestrator status: Out of scope — opencode is the agent opencodeR status: Out of scope — opencodeR is the agent runtime
The features are ordered by impact-to-effort ratio:
- Session search/filter (#12) — quick win, fills existing API contract
- Cost breakdown (#4) — moderate, enables cost visibility
- Session status + lifecycle (#3) — unlocks pause/freeze/kill
- Session trace viewer (#5) — builds on existing event stream
- Audit log + JSONL export (#9) — complements export feature
- Per-session terminal (#6) — completes PTY feature
- Multi-select + batch (#8) — productivity multiplier
- Kanban / workspace (#7) — advanced organization
- Omnibox / command palette (#10) — UX polish