Enter your API key to connect. Find it: grep DISPATCH_API_KEY .env Mobile: bookmark your Tailscale URL once, then use a one-time ?key=... link to save the key on that device.
Paste the new HA token. It posts to /api/admin/rotate-ha-token, queues
a task to the macbook-pro worker, runs proxy/rotate_ha_token.sh, and
scrubs the token from the queue on completion.
📡 Model Stack Health
not yet polled
Live audit of every Ollama node + Claude/Grok endpoints vs the registry
at shared/config/model_registry.json. Catches env vars pointing to
non-existent models, unreachable providers, missing auth tokens.
📋
No tasks yet. Dispatch one!
🤖
Loading agents...
🔑 Chat session token (kfhd-...)
Separate from DISPATCH_API_KEY. Issue via python3 proxy/dashboard_auth.py issue --user-id ty --name <label> on the NUC.
Chat = synchronous one-shot Q&A with the LLM (Sonnet, Haiku, Opus, Grok-4, Kimi). Live fleet context is auto-injected. Conversation history is in-browser only.
Need an agent to actually do something (run a tool, write a file, finish later)? → use the Dispatch tab.
💬 No messages yet. Pick a model and send.
Idle
Tip: Persona changes voice/tone only — it does not hand the work off to that agent. To actually run an agent (Bob/Summer/Cheryl/Moe) on a task, switch to the Dispatch tab — or click ↗ Escalate above to convert this conversation into a real task in one click.
↗ Escalate to which agent?
The full conversation will be sent as the task instruction. Pick the agent best suited to actually do the work.
Stack Health · Live Metrics
Loading…
Services
Loading…
Task Queue · By Status
Loading…
Per-Agent · Lifetime Counts
Loading…
Cross-Verifier Reject Rate
—
Loading…
kfh-metrics Uptime
—
Loading…
Disk Usage · Pattern 69 Watch
Loading…
Scrape source: /api/metrics → kfh-metrics :9100 (Prometheus text format). Refresh every 30s. For raw scrape:
curl http://192.168.50.21:9100/metrics | grep kfh_dispatch