Argus. Multiple coding agents. One command center.
Argus is a lightweight command center for AI coding agents. Run several agents at once on your own machine, walk away, and stay in control from your phone.
Named after Argus Panoptes, the hundred eyed giant of Greek myth who never truly slept. Argus watches every agent session at once so you don't have to.
- Launch and manage several AI coding agent sessions (OpenCode first, others later) from one dashboard
- Get notified the moment an agent needs your input, hits an error, or finishes
- Respond, approve, or deny requests from your phone, anywhere
- See quota and session state at a glance
- Recover automatically from a closed laptop lid, a lost connection, or a crash
flowchart TB
subgraph Phone["π± Phone (React PWA)"]
PWA[PWA Dashboard\nSession list\nApproval composer]
end
subgraph Cloud["βοΈ Control Plane (Supabase Free Tier)"]
Auth[(Auth)]
DB[(Postgres\nSessions, Events, Commands)]
RT[Realtime\nWebSocket]
end
subgraph Laptop["π» Laptop (Local-First)"]
Desktop[Tauri Desktop App\nProject cards\nLive session badges]
GoSvc[Go Service\nProcess manager\nAgent adapters\nSQLite state]
OpenCode[(OpenCode processes\nOne per project)]
end
PWA <-- HTTPS/WSS --> Auth
PWA <-- HTTPS/WSS --> DB
PWA <-- WSS --> RT
RT --> GoSvc
GoSvc --> OpenCode
Desktop --> GoSvc
GoSvc -.-> DB
GoSvc -.-> RT
The laptop always initiates the outbound connection. Nothing on the laptop is ever reachable from the public internet directly. Provider API keys stay on the laptop, never uploaded to the control plane.
Early build (MVP P2). See docs/prd.md for the full product requirements and WORKFLOW.md for the current milestone.
apps/desktop Tauri + React desktop app (not yet wired)
apps/pwa React PWA, the phone facing remote control (not yet wired)
services/agent-manager Go local service, process management and agent adapters
supabase Database schema and control plane config
docs Product, marketing and monetization documents
Tauri 2, Go, React with TypeScript, Vite and Tailwind, Supabase (Postgres, Auth, Realtime), SQLite locally.
This project was developed using Muse Wonder β an AI-native coding assistant that helped accelerate development across the stack:
- Architecture & scaffolding β Initial monorepo structure, Tauri + Go service skeleton, Supabase schema design
- Agent adapter implementation β OpenCode adapter with process lifecycle management (start, stop, restart, interrupt, send message)
- Desktop dashboard β React components for project cards, session state badges, activity logs, and quota bars
- PWA remote control β Pairing code flow, Supabase Realtime subscriptions, approval composer for permission requests
- Notification system β Web Push (VAPID) and ntfy.sh fallback with deduplication and event-driven rules
- Reliability hardening β Session restore on reboot, GUI crash survival, network loss/reconnect handling
Muse Wonder's ability to maintain context across the full stack (Go, React, TypeScript, SQL, Tauri config) made it possible to build a working multi-agent command center in a single hackathon sprint.
# Build the Go service
cd services/agent-manager
go build -o agent-manager ./cmd/agent-manager
# Run the service (dashboard on http://localhost:8080)
./agent-manager --port=8080
# Optional: enable Meta diagnosis (requires API key)
# ./agent-manager --port=8080 --meta-api-key=YOUR_KEY --meta-base-url=https://api.meta.example.com/v1Open http://localhost:8080/ in a browser to see the dashboard UI.
- Start the service β runs the Go agent-manager with HTTP dashboard on port 8080
- Add a project β click "Add Project", pick a local directory
- Launch a session β click "Start" on the project card, enter a prompt
- Watch it work β see live status badge cycle: STARTING β WORKING β WAITING/PERMISSION_REQUIRED
- Respond from the dashboard β approve/deny permission requests inline
- Pair with PWA (when wired) β generate pairing code, open PWA on phone, enter code
GET /healthβ health checkGET /api/dashboardβ full session/task/incident/approval snapshotPOST /api/sessionsβ start a new OpenCode session
body:{ "project_dir": "/path/to/project", "prompt": "your prompt", "model": "optional" }GET /api/events?session_id=...β recent events for a sessionPOST /api/incidents?session_id=...β body{ "action": "detect" }runs incident detectionPOST /api/diagnosisβ body{ "incident_id": "..." }requests Meta/fallback diagnosisPOST /api/recovery/approvalβ body{ "recovery_id": "..." }creates approval for a recovery actionPOST /api/approvals/{id}β body{ "approved": true, "decided_by": "user" }approves/rejectsGET /api/meta/configreturns the assistant configuration status (base_url,model,has_key,configured). The API key itself is never returned.POST /api/meta/configsaves the assistant configuration (see below)POST /api/meta/test-connectiontests the provider with the submitted values without saving themPATCH /api/sessions/{id}with body{ "supervision_enabled": false }toggles GUS supervision for one session
The desktop dashboard includes an Argus assistant panel (GUS) that diagnoses incidents and proposes recovery actions through a Meta-compatible, OpenAI-style API (for example Meta AI, OpenAI, Ollama, or LM Studio).
To configure it:
- Start the Go service, then open the desktop dashboard and choose Settings.
- Enter the API base URL (including
/v1if your provider requires it), the model name, and your API key. - Choose Test Connection to verify the provider accepts the key and offers the model. Testing uses the values currently in the form, including a newly entered key, and does not save anything.
- Choose Save. The service writes
META_BASE_URL,META_API_KEY, andMETA_MODELto its.envfile (file permissions0600), reloads the file to verify the write, and only then reports success. Saved settings survive a service restart. You can also setARGUS_ENV_FILEto choose which.envfile is used. - Restart note: if the dashboard still reports the assistant as not configured after saving, make sure no older agent-manager process is still holding port 8080, and start the newly built service.
The API key is stored only on your machine in the .env file. It is never stored in the browser, never returned by the API, and never written to service logs. In Settings, a blank key field keeps the already saved key; enter a new key only to replace it.
Each session card, and the opened session view, has a Show GUS / Hide GUS control and a Supervision toggle. Supervision is stored per session in the local database. It only takes effect when a model is configured; when no model is configured, the GUS panel says so and supervision controls are disabled instead of implying the assistant is working.
- Only the Go agent-manager runs; desktop (Tauri) and PWA are scaffolds.
- OpenCode integration uses the CLI (
opencode run --format=json), not the unstable HTTP server. - No push notifications yet (webβpush / ntfy fallback not implemented).
- Meta diagnosis uses a deterministic fallback unless
--meta-api-keyis supplied. - Approval workflow is manual via the dashboard; no mobile UI yet.
- No quota display, no model switching, no git awareness, no resource guardian.
| Category | Achievement |
|---|---|
| Architecture | Local-first, agent-agnostic design with clean adapter interface β swap OpenCode for Claude Code, Codex, Gemini CLI without touching UI or control plane |
| Offline-first | Sessions survive GUI crash, laptop sleep/wake, network loss; SQLite state syncs when connection returns |
| Security | Zero public ports on laptop; outbound-only connection; API keys never leave machine; RLS on every Supabase table |
| Cost | Entire stack runs on free tiers (Supabase, ntfy.sh, Web Push) β no credit card required to demo |
| Built with AI | Muse Wonder accelerated full-stack development: Go service, Tauri desktop, React PWA, Supabase schema, notifications |
- Resource Guardian (auto-pause on quota/limits)
- Model switching & fallback routing
- Git awareness (branch, dirty state, diff summary)
- Second agent adapter (Claude Code, Codex, Gemini CLI)
- Native mobile apps
- AGENTS.md, how to work in this repo efficiently and keep token use low
- DESIGN.md, architecture and design standards
- WORKFLOW.md, how issues, milestones, commits and checkpoints work
MIT, see LICENSE.





