Inspection UI
The inspection UI (@agent-dev-lab/web) is how you start, watch, and replay runs for an ADL project. It does not execute workflows itself: it calls loadAdlProject(), then workflow.run / agent.run, and tails persisted RunEvents.

Open the inspector
Section titled “Open the inspector”From a project with adl.config.*:
bunx adl dashboardbunx adl dashboard --servebunx adl dashboard --project ../other-researchThe header shows the project name. Plain adl dashboard watches the project and hot-reloads agent/workflow/template edits; --serve runs the Nitro build shipped in @agent-dev-lab/web and does not watch — restart it after any change. Either way, .env* edits need a restart. --project points at another directory that contains adl.config.*.
Standalone CLI commands (adl workflow run, adl agent run, adl workflow list, etc.) are separate processes: they load the project once and exit.
Workflows
Section titled “Workflows”Registered ids come from adl.config workflows. The sidebar lists startable workflows and past runs (title from ctx.setTitle when set).
- Open a workflow and start a run. If the workflow has a Zod
inputschema, the start dialog builds a form from it (defaults apply). - The run page is a waterfall: steps, nested steps, parallel keyed steps, and agent episodes.
- Select a step or agent call for output, errors, and the conversation transcript for that
memoryScope. - Cancel calls
handle.cancel(), which abortsctx.signal, in-flightctx.stepbodies, and childagent.run/streamTextcalls on that run. Isolated helper runs (for example conversationtitleWorkflow) are not cancelled with the parent.
Live updates use SSE (GET /api/runs/:runId/events?afterSeq=). Reconnects replay from the last applied runSeq. History is always the SQLite (or in-memory) WorkflowStore, so you can reopen a finished run later.
Helpers that you do not put in workflows: [] still persist if they run(), but they do not appear as startable targets or in the default run list. Conversation titleWorkflow uses { isolated: true } so naming a chat does not inject steps into another workflow’s tree.
Agents
Section titled “Agents”Registered agents can be opened as conversations (standalone memoryScopes), not only as nodes inside a workflow.
- New chat →
agent.run()(AI SDKstopWhen, defaultstepCountIs(20)); first successful turn may set a title viatitleWorkflow. Tool call/result events still fire while the model works. - Fork from a workflow agent episode copies that transcript into a new conversation you can continue.
- Shared scopes show history up to the selected episode; later turns are muted so you can see what the model had at that call.
- The agent settings panel reports effective model (id + provider when the LanguageModel exposes them), memory backend kind (
sqlite/in-memory/ custom), tools,stopWhen(default/custom), and title workflow id.
Event log
Section titled “Event log”The Event log page (/events) is a process-wide tail of every RunEvent the inspector has seen — workflow runs and standalone agent conversations — not one run at a time.
- Open it from the home sidebar or the rail. The context sidebar is hidden so the table can use the full width.
- Live updates use SSE (
GET /api/events?afterSeq=). The stream id is the processlogSeq, not per-runrunSeq. Reconnects replay from the last appliedlogSeq. - On inspector start, an empty in-memory buffer is hydrated from the last 100 persisted workflow runs and standalone agent episodes in
WorkflowStore. Clear empties the in-memory view only; persisted runs stay. Restart hydrates again. - Default filters hide
agent_text_delta. Add field clauses (equals / not-equals / contains on strings / exists / empty). Click a name to open that run, conversation, call, or step — conversations highlight the matching transcript slice (?call=). Right-click a value to filter; ⋯ opens the full JSON payload. - The footer paginates the filtered list (oldest page first; page 1 is the live tail when you stay on it).
The log is a ring buffer (default 10_000 events). It is not a durable store of its own — durability is still WorkflowStore.
What is not in the inspector yet
Section titled “What is not in the inspector yet”- A template playground (edit/render
createTemplatemarkdown in the UI) - A dedicated raw token-debug pane (assistant text already streams via
agent_text_deltain chat/run views) - Manual runs of
adl.config.tools(registry-only today; runtime merge iscreateAdlRuntime({ tools }))