Skip to content

Repository files navigation

agent_code_IDLE

Localhost UI control plane for multi-agent workflows. Wraps subscription-backed CLIs (claude, aas) — no API key needed.

Each project declares a graph of agents in .agentui/project.yaml. Orchestrator agents can auto-dispatch tasks to workers via XML tags parsed live from the stream; the user verifies dispatch happens by watching the graph light up. Floating windows let you chat with multiple agents simultaneously, VSCode-style.

Quick start (local)

cd app
./run.sh
# → http://127.0.0.1:5174

Requires claude CLI authenticated (subscription) and optionally aas for Grok nodes.

Deploy on a remote server

See DEPLOY.md — SSH tunnel + systemd service.

Features

  • Graph of agents with live status (idle / running pulse / ok / error)
  • Floating windows, draggable, resizable, hidable. Open multiple agents at once.
  • Auto-dispatch + result feedback: orchestrator emits <dispatch agent="X">task</dispatch>, backend parses live, fires worker, animates edge + worker node. After workers finish, a dispatch ledger + bounded auto-continuation feeds the worker outputs back into the orchestrator's next prompt as <dispatch_result> blocks, so the orchestrator can synthesise / chain / report inside the same SSE response (no more "still waiting" hallucinations). Design rationale in docs/agentui-dispatch-spec.md.
  • Add agent through UI: + agent button opens a form. Default flow asks the first parent (e.g. BOSS) to write the bootstrap files based on its project context (streamed live, then previewed). Fallback to generic template if no parent or for speed. Backend atomically creates <ID>/AGENT.md, inputs/manifest.md, outputs/manifest.md, state/progress.md, context/code_map.md and appends to project.yaml (ruamel.yaml preserves comments).
  • Mix Claude and Grok agents in the same project graph. Each agent picks its adapter; the wrapper handles streaming, sessions, dispatch tags uniformly.
  • Slash commands in chat input (/help, /clear, /model, /effort, /focus, /dispatch, /stop, /status)
  • Workspace-wide folder tree in the sidebar (project roots get a diamond marker); ⌥⌘C copy-path shortcut; click any file to open in a floating viewer (markdown render, code mono, PDF + images via browser, binary fallback with download)
  • Markdown rendering of agent output (marked + DOMPurify); dispatch tags become collapsed cards
  • Streaming via PTY so Claude CLI doesn't block-buffer; tokens arrive in real time
  • Stop button + Esc to cancel mid-stream, cascade-cancels all in-flight dispatched workers
  • Per-agent overrides (model + effort) persisted in SQLite, applied next turn
  • Resilience: --resume only on last_status == "ok"; SSE heartbeat keeps Opus thinking sessions alive; startup reaper recovers orphan running sessions after restart

User customizations recorded in CLAUDE.md (so future agents know how to intervene):

  • The entire Plan/todo-panel system (multi-step <plan> protocol + side panels on the graph) has been completely removed.
  • A global Scheduler on/off toggle (Apple-style switch) was added in the 🕒 Schedules dropdown. When off, no new schedules fire or can be created. See CLAUDE.md "Active user custom modifications" for details and how to re-enable / extend.

Add a project

  1. Create .agentui/project.yaml in the project root.
  2. Append the absolute path to app/registry.yaml.
  3. Reload uvicorn; project appears in the sidebar.

Add an agent (no shell, no manual yaml)

In the project graph window, click + agent. Fill in id / role / adapter / parents. Default mode asks the first parent to generate the bootstrap files (folder + AGENT.md + manifests + state + code map) based on its knowledge of the project; the modal streams the parent's output live. Review the file preview, then click ✓ Tạo agent — the backend writes everything atomically and rolls back on any failure.

See CLAUDE.md for the full architecture, dispatch protocol, SSE event reference, slash command list, and known limitations.

Stack

  • Backend: FastAPI + SQLite, PTY-wrapped claude -p subprocess for true streaming
  • Frontend: vanilla JS + SVG graph, marked.js for markdown, DOMPurify for sanitization
  • Dispatch: <dispatch agent="WORKER_ID">task</dispatch> parsed live in the SSE stream
  • Models: Claude opus 4.8 / 4.7, sonnet 4.6, haiku 4.5; Grok via aas

About

🤖 Localhost UI control plane & visual graph orchestrator for multi-agent workflows with real-time PTY streaming (Claude Code & Grok).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages