Appearance
The dashboard
The Kadmo runtime serves a web dashboard. From it you install skill packs, run their workflows, read run logs and change the runtime's settings. It is part of kadmo serve. There is nothing extra to install.
Opening the dashboard
- Start the runtime:
kadmo serve, or justkadmo(see kadmo serve). - Open
http://localhost:9876in a browser.
You can also click the Kadmo extension icon in Chrome and then Open Dashboard. The popup shows that button only while the extension is connected to a reachable runtime. It always opens http://localhost:9876.
kadmo serve -p <port> serves the dashboard on another port too, but the extension only ever connects to port 9876. On any other port the dashboard always shows Browser Disconnected.
Layout
The left drawer holds Dashboard, Skills, Library, Agents and Recordings. Its footer holds the browser connection indicator and Settings. On narrow screens the drawer turns into a menu button in the top bar.
Every view has its own address, so you can bookmark it or type it in:
| Address | View |
|---|---|
/ | Dashboard (home) |
/skills | Skills, the installed packs |
/skills/<domain>/<module> | One module of a pack |
/library | Library, publishers and their catalogues |
/agents | Agents |
/recordings, /recordings/<id> | Recordings |
/run-logs, /run-logs/<id> | Run Logs (not in the drawer) |
/settings | Settings |
Older addresses still work: /actions redirects to /skills and /workflows to /library. An unknown address shows the home view.
Browser connection indicator
The footer of the drawer reads Browser Connected (green dot) or Browser Disconnected. A matching dot sits next to the "Kadmo" title. The dashboard asks the runtime every 3 seconds, so the indicator changes within a few seconds of the extension connecting or dropping.
"Connected" means the Kadmo extension holds a connection to this runtime. To connect, click the Kadmo icon in Chrome and then Connect (see The Kadmo extension). Workflows with browser steps refuse to start while the indicator reads Browser Disconnected. Workflows with no browser steps run either way.
Dashboard (home)
- Context summary: a strip showing Roles active (enabled of total), Targets matched (enabled of total), the number of installed Skill packs and, when a persona is set, Persona. Each item links to Settings or Skills.
- Pack banner and Modules: the title, domain, version and module count of the first installed pack, then a card for each of its modules. A card shows the workflow count and opens the module page. Its Run button starts the module's first workflow. Other packs are shown in Skills, not here.
- Shortcuts: shown when shortcuts exist (see Running a workflow). Each card has Edit, Clone, Move up, Move down and Delete.
With no packs installed, the view says "Install a skill pack from the Library to see modules here." and offers Go to Library.
Skills
Skills lists every installed skill pack. Each pack is a card that shows its title, domain, version, and the counts of modules, workflows and roles. A tag next to the title shows the pack's layer. When the same domain is installed from more than one place, the layer decides which copy wins:
| Layer | Where the pack came from |
|---|---|
override | A pack whose manifest marks it as the account's overrides |
account | A local path or a publisher added in the Library or with kadmo registry add |
ops | The agent ops served by the Kadmo app to a machine with an agent token |
library | The public catalogue, through kadmo install <domain> |
A higher layer is never replaced by a lower one. Packs installed before layers existed show unknown.
The badge on the right of a card reads ON, OFF or PARTIAL. Clicking it enables or disables all of the pack's roles. Clicking a card expands it:
- Roles: each role with its own ON/OFF toggle.
- Modules: click a module to list its workflows, each with a run button.
- View Run Logs opens Run Logs. Uninstall removes the pack's modules, roles and workflows after a confirmation.
Workflow files in ~/.kadmo/actions/ appear in a separate User Actions card. Each has a run button and a delete button. The header has + Install, which opens the Library, and a reload button that makes the runtime re-read packs and workflows from disk.
A fresh install has no packs, so Skills shows "No Skill Packs Installed" and the home view has no modules. Packs arrive in one of three ways:
kadmo install <domain>from the catalogue, orkadmo install <path>for a local pack (kadmo install).kadmo registry add <url>(kadmo registry).- + Add Publisher in the Library.
The module page (/skills/<domain>/<module>) lists the module's workflows by ID and title, each with a Run button. It also shows whether the module has a _skill.md ("Skill Context"), the module's role files, and up to 10 Recent Runs of its workflows.
Library
The Library manages publishers (pack registries) and shows their catalogues.
- Publisher: a drop-down of your registries, with a Search skill packs... box that filters by name, title, description and domain.
- Available Skill Packs: the selected registry's catalogue. An installed pack shows Installed and Manage, which opens Skills. When the registry has a newer version, the card shows Update to v<version> instead of Installed.
- Installed (Other Publishers): installed packs that are not in the selected catalogue.
- Publishers: each registry with its type (
localorgit), Connected or Disabled, and Remove. Removing a registry also uninstalls its packs. - + Add Publisher: takes a Registry URL or path (a local directory or a git URL) and an optional name. The directory or repository must contain an
index.json. Adding a registry installs every pack it lists, at theaccountlayer.
Known issue: in this release the catalogue's Install and Update to v<version> buttons fail with "Install failed: … No skill-pack.json found in <pack folder>". The button sends the pack's path relative to the registry, and the runtime does not resolve it against the registry. Use + Add Publisher to install a registry's packs, or run kadmo install <path-to-pack> for a single pack.
Running a workflow
Workflows start from the run buttons in Skills, on module pages, on home module cards and on shortcuts. After you click one, the dashboard switches to a live view. It shows the workflow title, Running or Completed, the event count, the run ID and each event as it arrives. Use Stop to cancel the run, and Done to leave the view once it has finished.
The run buttons in Skills, on module pages and on module cards send no parameters. A parameter with a default gets its default. A parameter without one is left unresolved: a step that uses {{name}} receives the literal text {{name}}. To pass values, use one of these:
kadmo run <workflow> --param key=value(kadmo run).- A dashboard shortcut. When you run a shortcut that does not store every parameter, a Run: <title> form opens with one field per parameter and Run / Cancel buttons. Edit on a shortcut card changes its Shortcut Name, Accent Color and stored Parameters.
This release has no button that creates a new shortcut. A shortcut is an entry in dashboard_shortcuts in ~/.kadmo/settings.json. action_id is a workflow ID:
json
{
"dashboard_shortcuts": [
{ "id": "shortcut_1", "action_id": "my_workflow", "custom_name": "My workflow", "color": "#3b82f6", "params": {}, "order": 0 }
]
}The dashboard reads the file when the view loads.
If a run cannot start, a message appears in the corner, for example Failed to run workflow: Error: {"error":"Browser not connected"}.
Run Logs
Run Logs is at /run-logs. Open it with View Run Logs on an expanded pack card or by typing the address. It lists the 50 most recent runs, stored as files in ~/.kadmo/run_logs/.
- Currently Running: runs in progress. Click one to open its live view.
- History: each run's workflow title, status (Success, Failed, Cancelled, Running or Pending), run ID, duration and age. Runs that used an LLM also show their cost and number of turns.
- A summary bar that adds up run durations: Time Saved Today, This Week, This Month, All Time, Runs Today and Success Rate, plus LLM Spend when any run used an LLM.
- Clear All deletes every run log after a confirmation.
A run's page shows Run ID, Workflow ID, Duration, Events, Triggered By and Timestamp. For runs that used an LLM it adds the cost, turns, model and token counts. Below that come the Parameters the run used and every Event, indented by nesting depth. Delete removes that one log.
Agents
Agents is a board of agent jobs: Running and Completed Today (the 20 most recent finished jobs). + Start Agent asks for a Role (your enabled roles, or Software Engineer / QA Engineer / Product Manager when there are none) and a Prompt.
Start Agent only records a job on this board. The runtime does not launch an agent process for it. A job is marked complete when a process ID registered for it exits, or when the machine's idle marker is written after the job started. Stop marks a job failed. Resend adds a copy of the job as queued. Nothing in the runtime picks a queued job up, so it stays queued. View Log opens a run-log page, which reads "Run log not found" unless a run log with the job's ID exists. The board lives in memory and is emptied when the runtime restarts. The view refreshes every 5 seconds.
Recordings
Recordings lists saved recordings from ~/.kadmo/actions/recordings/, each with its ID, event count and age. A recording's page shows its ID, time and events (type and target), plus the raw JSON, with a Delete button.
Start Recording is disabled while the browser is disconnected. With the browser connected, it fails in this release: the extension does not accept the runtime's record command, and an error banner appears. A recording's page also has Save as Workflow and Convert with AI, but turning a recording into a workflow is not in this release. Write workflows by hand instead (see Workflows).
Settings
Open Settings from the drawer footer. It has three tabs.
AI Context, split into sub-tabs:
| Sub-tab | What it edits | Stored in |
|---|---|---|
| Persona | Free text about you; Save Persona | ~/.kadmo/persona.md |
| Roles | + Add Role, Edit, delete, on/off toggle. Roles from installed packs are listed too. Roles whose file name starts with _ carry a system tag and cannot be deleted. | ~/.kadmo/roles/ |
| Targets | + Add Target: context for domains or URL patterns | ~/.kadmo/targets/ |
| Integrations | Each provider with Connected, Not available or Not connected. You choose a connector for each provider, and Setup shows the environment variables that connector needs. | provider_connectors in ~/.kadmo/settings.json, plus a usage file in ~/.kadmo/targets/ |
| Inline | + Add an LLM Context (industry, domain, instructions) or an Environment Variable (name, value). A workflow reads a variable as {{env.name}} (see Variables). | user_contexts in ~/.kadmo/settings.json |
LLM Provider: choose Provider (OpenAI, Anthropic or Ollama), then set Base URL, API Key and Model, and click Save. The key is written to ~/.kadmo/settings.json. The dashboard never shows it again; to keep the saved key, leave the field blank. Test Connection only checks the form: a key must be present, and OpenAI keys must start with sk-. It does not contact the provider. See LLM steps.
Addresses: App address (the Kadmo app: publishing, login, agent jobs) and Catalogue address (where kadmo install <domain> and kadmo search look). Both default to https://app.kadmo.ai and are saved as app_url and catalogue_url in ~/.kadmo/settings.json. A value that is not an http(s) URL is refused. A blank field resets to the default. KADMO_APP_URL, KADMO_CATALOGUE_URL and PORTAL_URL in the environment override both fields.
Troubleshooting
| Symptom | Check |
|---|---|
http://localhost:9876 does not load | Is the runtime running? kadmo status reports it (see kadmo status). |
| Always Browser Disconnected | Is the runtime on port 9876? The extension connects to no other port. Only one runtime can hold the extension. Click the Kadmo icon and then Connect. |
| Skills is empty | No packs are installed yet. See the ways to add them under Skills. |
| Library shows "No Publishers Connected" | No registry is configured. Use + Add Publisher or kadmo registry add. |
| Install in the Library fails with "No skill-pack.json found" | Known issue in this release; see Library. |
A run's events show {{param}} unreplaced | The run started without parameters; see Running a workflow. |
| A new workflow file does not appear | Click the reload button in Skills, then reload the page. |
More fixes are in Troubleshooting.