InitRunner

Dashboard & Desktop

InitRunner ships with a web dashboard for browser-based management and a native desktop app that wraps the same UI in a standalone window. Both provide real-time visibility into agents, flow pipelines, teams, audit logs, and ingestion.

Web Dashboard

The dashboard is a SvelteKit frontend backed by FastAPI API routers. It uses the "Electric Charcoal" design system — a dark-only mission control aesthetic with OKLCH colors, Space Grotesk / IBM Plex Mono typography, and a lime accent.

Installation

pip install initrunner[dashboard]

Requires fastapi and uvicorn.

Launch

initrunner dashboard
initrunner dashboard --expose --port 9000
FlagDefaultDescription
--port8100Port to listen on
--exposeoffBind to 0.0.0.0 instead of localhost (no authentication — use with caution)
--no-openoffDon't auto-open the browser
--roles-dirExtra directory to scan for roles (repeatable)
--api-keyAPI key for login authentication. Enables a login page with cookie-based sessions

Pages

PageDescription
LaunchpadOverview with total runs, success rate, token usage, average duration. Top agents by runs, recent activity, flows, and teams at a glance. On fresh installs, shows a zero-state view with a provider status banner, starter template cards (helpdesk, librarian, memory, telegram, discord, mail), capability chips, and quickstart links
AgentsSvelteFlow canvas view with draggable node graph. Auto-categorization (Reactive, Intelligence, Connected, Skilled, Cognitive, Equipped), auto-layout, minimap, search with / shortcut, and capability filters (tools, triggers, ingest, memory, sinks, skills, reasoning, autonomy). Agents without a pinned model show an auto pill badge. Auto-switches to list view on mobile
FlowVisual editor with SvelteFlow graph for flow pipelines. Agent nodes, visual connections, and pattern templates (pipeline, fan-out, route). Tabbed detail view with YAML editor, events stream, and config panel
TeamsTeam builder with structured persona configuration (sequential, parallel, debate), SvelteFlow pipeline visualization with debate round nodes and synthesis step, run panel with streaming output, memory and ingest tabs for managing team-level memory and shared documents
MCP HubFour-tab management center for MCP servers: Servers (aggregated health and tool introspection), Discover (curated registry with one-click install), Playground (execute tools without an LLM), Canvas (@xyflow/svelte topology visualization). Sidebar badge shows red dot when any server is unhealthy
CostPer-agent, per-model, and per-day cost breakdowns with summary strip, spend chart, and period selector. See Cost Tracking
AuditSearchable, paginated audit log with export to CSV/JSON. Includes per-run cost column
ApprovalsQueue of paused runs awaiting a human decision. Keyboard navigation, bulk approve/deny, multi-call drawer. Sidebar badge surfaces the pending count. Since v2026.4.17 — see Approvals queue below.
SystemSystem health, doctor checks, provider status with inline API key configuration, default model configuration (provider/model picker, saves to run.yaml, shows provenance), and embedding provider health

Key Features

FeatureDescription
Agent builderMulti-turn LLM-powered wizard for drafting and refining agent roles
Flow visual editorSvelteFlow graph for flow pipelines with agent nodes and pattern templates
Team builderPersona configuration with pipeline visualization, streaming output, and debate strategy support (configurable rounds and synthesis)
Ingestion managementUpload files, add URLs, re-ingest with SSE progress streaming, per-document delete. Summary cards showing document count, chunk count, last ingested timestamp
ModelComboboxEnhanced model selector with search filtering, keyboard navigation, custom model entry, and provider-specific presets
Confirm deleteType-to-confirm deletion for agents, teams, and flow pipelines
Starter examples10 curated examples (helpdesk, mail, librarian, memory, telegram, discord, reviewer team, debate team, triage flow, pipeline flow) shown as interactive cards on the launchpad zero-state with capability chips and quickstart links. Starter packs work across agent, team, and flow builders. Link directly to a starter with ?starter={slug} on the creation page
Provider setupConfigure API keys for standard providers and OpenRouter directly from the dashboard — available on the launchpad zero-state, agent creation page, and System page. Supports optional key validation for OpenAI and Anthropic
Team ingest/memory tabsManage team-level memory configuration and shared documents — upload files, add URLs, re-ingest with SSE progress streaming, per-document deletion, and ingestion summary with document/chunk counts
Embedding warning bannerAgent builder warns when generated YAML needs embeddings but the effective provider is unusable, with selectable provider chips (openai/google/ollama) and inline key configuration
Clustered avatarsDebate rounds show clustered spinning avatar spheres for all concurrent personas. Flow runs show a pipeline stepper with spinning agent avatars
MCP HubAggregated MCP server health monitoring, curated server discovery with copy-to-clipboard YAML snippets, single-tool playground with auto-generated forms, and @xyflow/svelte topology canvas showing server-to-agent relationships
Live tool activityReal-time tool call events streamed via SSE in agent, flow, and team run views. Each tool call shows start/complete lifecycle with status dots, tool names, durations, and error summaries
Token/cost meterHorizontal bar below tool activity showing budget frame before streaming, exact token counts and USD cost estimate (via genai-prices) on completion. Progress bar when guardrails set a token limit
Timeline viewGantt-style chart on a Timeline tab showing runs over the last 24 hours. Available on agents (with triggers), flows, and teams. Swim lanes with color-coded outcome bars, hover tooltips, stats strip with run count/success rate/total cost, auto-refreshes every 30s
Quick-run drawerPlay button on agent list rows and flow canvas nodes opens a slide-over drawer for running agents without leaving the page
Cost analyticsDedicated /cost page with per-agent, per-model, and per-day sortable tables, summary strip, and daily spend chart. See Cost Tracking
Unified bottom panelAgent, flow, and team run views share one bottom panel showing token counts, cost, and tool activity
Cognition panelVisual editor for reasoning and autonomy — configure patterns (react, todo_driven, plan_execute, reflexion), think/todo tools, tool search, and autonomy limits without editing YAML

Approvals queue

Since v2026.4.17, the dashboard surfaces human-in-the-loop approvals in two places:

Inline in RunPanel. When a run kicked off from the agent detail page pauses, the approval_required SSE event slots an ApprovalCardGroup into the run panel in place of the "thinking" state. Each pending call renders with a 2px left state bar (muted = unset, lime = approved, red = denied), a tool-templated argument preview (e.g. rm -rf /tmp/cache instead of raw JSON), and an Approve/Deny pair with <kbd> chip hints. Submit fires only once every card has a decision; if the model re-pauses, the group updates in place.

Queue view (/approvals). Reviewers see every paused run across the daemon, API, and other sessions, grouped by run_id. Single-call runs have inline Approve/Deny; multi-call runs open a right-side ApprovalDrawer with the originating prompt and per-call controls. A sidebar badge under Operate shows the pending count in tabular-nums — polled every 20s and bumped immediately by SSE. A ? shortcut overlay documents the keyboard grammar:

KeysAction
j / kNavigate between pending cards
A / DApprove / deny the focused card
⇧ A / ⇧ DBulk approve / deny everything visible
Submit decisions
EscClose drawer or overlay

Absent-Kicker toasts. A session-local registry of run_ids you kicked off diffs against each poll; if a run you started shows up while you're on a different page, a toast links you back to /approvals/{run_id}. Runs other operators started get only the badge — no noise for work you didn't trigger.

The queue is backed by a new /api/approvals/* router that calls services.execution.resume_run_sync in-process, so approvals always resume in the same daemon that hosts the paused run.

Desktop App

The desktop command launches the dashboard in a native window via pywebview. No browser required.

Installation

pip install initrunner[desktop]

Adds pywebview on top of the dashboard dependencies.

Launch

initrunner desktop
initrunner desktop --port 8100 --roles-dir ./extra-roles/
FlagDefaultDescription
--port8100Port for the embedded FastAPI backend
--roles-dirExtra directory to scan for roles (repeatable)

How It Works

  1. Starts an embedded FastAPI backend in a background thread
  2. Opens a native window (1280×800, minimum 900×600)
  3. Polls /api/health until the backend is ready (30-second timeout)
  4. Uses GTK/WebKit on Linux, Cocoa on macOS, WebView2 on Windows

On Linux, if GTK or WebKit is missing, the command prints distro-specific install hints (Ubuntu, Fedora, Arch).

Choosing an Interface

CLIWeb DashboardDesktop App
Requires browserNoYesNo
Remote accessNoYes (bind to 0.0.0.0)No (local only)
Real-time streamingYesYesYes
ChatYes (REPL)YesYes
Visual editorsNoYes (SvelteFlow)Yes (SvelteFlow)
Multiple usersNoYesNo
File attachments--attach flagUpload button / drag-and-dropUpload button / drag-and-drop
Install sizeNoneModerate (fastapi, uvicorn)Moderate + pywebview

Cloud Hosting

The web dashboard can be deployed to a cloud platform for always-on remote access. Each platform builds from the same Dockerfile and seeds example roles on first boot.

PlatformDeploy methodPersistent storageNotes
RailwayOne-click buttonManual volume at /dataBuilds from railway.json
RenderOne-click button1 GB disk via BlueprintAuto-provisioned by render.yaml
Fly.ioCLI (fly deploy)Volume via fly volumes createUses deploy/fly.toml

Tip: Set INITRUNNER_DASHBOARD_API_KEY to password-protect the dashboard when exposing it on a public URL.

See Cloud Deploy for step-by-step instructions for each platform.

On this page