A minimalistic real-time view of — and conversation with — a zish agent-org
run. Watch the Captain / parallel workers / consults / critic / synthesis fold in
live from the trace that team writes to ~/.zish/traces/<run>.jsonl, talk to
the Captain in-chat (context-carrying, not a fresh task per message), and see
which model actually ran each step with honest paid/free cost.
SolidJS + UnoCSS + Vite frontend, a tiny Bun SSE server. Two themes: a Win95 light and a blue-DOS dark. Responsive: mobile + desktop.
bun install # installs frontend deps
bunx vite build # builds the frontend into ./dist
bun server.ts # serves + streams on http://localhost:8787Open http://localhost:8787. Start an org (team run <budget> "<task>") in
another terminal and watch it fill in live; the newest run is auto-followed, or
pick one from the sidebar. Or just type in the composer — the message goes to the
Captain (agent captain --thread), which decomposes, dispatches a team, and
replies in the same thread.
bunx vite build
ZISH_TRACES_DIR=./sample bun server.tsbun server.ts # API on :8787 (terminal 1)
bunx vite # Vite on :5173, proxies /api -> :8787 (terminal 2)ZISH_TRACES_DIR— trace directory (default~/.zish/traces).PORT— server port (default8787).ZISH_DASH_CLOUD=1— cloud mode: OpenRouter-only (hides local models, never shows a run as "free"). Set your OpenRouter key from the UI (Settings → Key); it is written0600, never echoed back, never logged.
GET /api/runs→[{run, mtime, task, ev, models}], newest first.GET /api/events?run=<id>→ SSE: replays the run's events, then tails the file (200ms poll) and pushes each appended line. Omitrunto follow the newest.POST /api/captain→ send a message to the Captain thread (spawns/continuesagent captain);GET /api/thread?id=<id>reads it back.GET/POST /api/key→ OpenRouter key status / set (write-only,0600, validatedsk-or-…, never returned).
run_start · decompose · worker_start · worker_done · consult ·
critic_start/critic_done · synth_start · run_done. Parallel workers emit
their worker_start before any worker_done, so the dashboard shows real
concurrency. Each worker_done/synth_done carries the real model it ran, so
the UI shows true provenance instead of a flat "local".
docs/zash-privacy.md— the E2EE-at-rest + fail-closed OpenRouter-proxy design for the eventual hosted product (zafu/ZID data key, scoped proxy tokens, never custody the customer's key). Design, not yet built.