Skip to content

Repository files navigation

zash — the zish org dashboard

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.

Run

bun install          # installs frontend deps
bunx vite build      # builds the frontend into ./dist
bun server.ts        # serves + streams on http://localhost:8787

Open 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.

Demo against the sample trace (no live run needed)

bunx vite build
ZISH_TRACES_DIR=./sample bun server.ts

Dev (hot reload)

bun server.ts                   # API on :8787 (terminal 1)
bunx vite                       # Vite on :5173, proxies /api -> :8787 (terminal 2)

Config

  • ZISH_TRACES_DIR — trace directory (default ~/.zish/traces).
  • PORT — server port (default 8787).
  • 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 written 0600, never echoed back, never logged.

API

  • 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. Omit run to follow the newest.
  • POST /api/captain → send a message to the Captain thread (spawns/continues agent captain); GET /api/thread?id=<id> reads it back.
  • GET/POST /api/key → OpenRouter key status / set (write-only, 0600, validated sk-or-…, never returned).

Event schema (written by team)

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".

Design notes

  • 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.

About

zash — the zish agent-org dashboard (real-time run view + Captain chat)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages