OpenCode Multi-Agent Web Dashboard
Manage and monitor your AI agent team from a browser
Noctis Team screen — dispatch missions and monitor agent activity in real time
multi-agent-ff15 is the current browser-first application for FF15-inspired OpenCode workflows. It replaces the older desktop/Tauri app in this repository and turns a tmux-heavy multi-agent setup into a single browser surface for dispatching work, monitoring sessions, reviewing reports, and inspecting runtime state.
Built on: OpenCode · React Router 7 · TypeScript
- Run Noctis-led multi-agent workflows from a browser instead of living in tmux.
- See what agents actually did through live sessions, tool traces, and reports.
- Keep missions, projects, configuration, MCP state, and runtime health in one place.
The dashboard is organized around a human workflow rather than raw runtime internals:
Noctis Team: start work and watch party activityOpenCode Sessions: inspect session history, tool calls, models, and context/execution selectionReports: review long-form output after a mission finishesProjects: choose where work runs and launch the right workspaceConfig: edit app settings and bootstrap required local configMCPandServer: inspect MCP configuration and OpenCode runtime state
- Send a mission from
Noctis Team. - Watch the party respond and inspect detailed session activity.
- Open
Reportswhen you need a cleaner long-form result. - Use
Projects,Config,MCP, orServerwhen you need execution context or runtime debugging.
flowchart TD
U[User]
N[Noctis<br/>Lead agent / main user-facing contact]
F[Active workflow step<br/>decides who acts next]
I[Ignis<br/>Analysis / planning / review]
G[Gladiolus<br/>Implementation / fixes / hardening]
P[Prompto<br/>Recon / reporting / cleanup]
U -->|request| N
N --> F
F --> N
F --> I
F --> G
F --> P
Noctisis the lead agent and the main user-facing contact.Ignis,Gladiolus, andPromptoare specialist teammates.- The human user is referred to as
User. IrisandLunafreyaare not part of the primary shipped browser workflow yet.
- Node.js 20+
- npm 10+
- OpenCode CLI with an authenticated provider account
git clone https://github.com/atman-33/multi-agent-ff15.git
cd multi-agent-ff15
./first_setup.shfirst_setup.sh installs tmux and uv/uvx when needed, enables tmux mouse scrolling, creates local opencode.json from config/opencode.template.json, and initializes transport_mode: tmux-resident in config/settings.yaml when missing.
source ~/.bashrc
opencodeCredentials are stored in ~/.opencode/.
./standby.sh --build./standby.shThe app runs at http://localhost:13000. When transport_mode is tmux-resident, interactive runs attach to the ff15 tmux session by default. Use ./standby.sh --no-attach to keep the current shell detached, or ./standby.sh --attach to force attachment explicitly.
| Screen | Purpose |
|---|---|
| Noctis Team | Main mission surface for dispatch, activity, and mission history |
| OpenCode Sessions | Detailed session viewer for messages, tools, models, and execution context |
| Reports | Long-form report browser for reviewing outcomes after the live run |
| Projects | Project registry and workspace launch surface |
| Config | App settings and local config bootstrap helpers |
| MCP / Server | Runtime inspection for MCP configuration, health, and server state |
Tracked defaults live in config/.
config/settings.yaml:language,shared_skills_root,transport_modeconfig/models.yaml: model assignments and switching metadataconfig/opencode.template.json: tracked template for the localopencode.json
opencode.json is user-local runtime config. It is bootstrapped by first_setup.sh and should not be treated as the canonical tracked template.
Use ./standby.sh --set-transport app-owned or ./standby.sh --set-transport tmux-resident to switch transport mode explicitly.
Use the root npm scripts for web work:
npm run web:install
npm run web:dev
npm run web:build
npm run web:start
npm run web:typecheck
npm run web:lint
npm run web:testnpm run web:dev serves the app on port 5173 by default. ./standby.sh runs the production server on port 13000.
web/: React Router app, loaders/actions, API routes, and UI statescripts/: setup, startup, transport, and config helpersconfig/: tracked settings, models, and local config templatesprojects/: project definitions used by the UI and workflowsbuiltins/: localized built-in operation and instruction assetsskills/: shared skills used by the workflow systemopenspec/: OpenSpec changes and specsdocs/reports/: active report artifactsruntime/: generated runtime state and transport/session artifactslogs/: debug logsassets/: static images used by docs and the UI
- Treat
runtime/andlogs/as generated state unless you are changing the code that produces them. - Put active reports in
docs/reports/. - Prefer the root npm scripts for
web/tasks instead of running ad-hoc commands insideweb/.
Inspired by multi-agent-shogun by @yohey-w and the original multi-agent-ff15 design.
MIT License.
