3.0.0-beta.15). Features may change before the next stable release.Switch to stable →Desktop app
Interface overview
Learn the AgentKit Desktop window layout, the sidebar groups, and how to read the Dashboard before you manage anything.
After this page you will recognize the main regions of the Desktop window, know which sidebar group holds each surface, and understand what the Dashboard numbers do and do not mean.
Screenshot provenance: the images on this page were captured from Desktop
2.5.0-beta.32 on 2026-08-01. This page describes the current Beta docs
contract independently of those images. They have not been recaptured or
visually verified against the current Desktop build, so labels and layout may
differ.
Read the window layout
The window has three fixed regions: a left sidebar for navigation, a top bar for the current location and filters, and the main panel for the selected surface. A status row at the bottom of the sidebar shows the App and CLI versions and the local sync indicator. On a wide enough window, a collapsible Assistant rail sits on the right edge for bring-your-own-key chat about your local usage.

The sidebar groups surfaces by purpose:
| Group | Surfaces | What it covers |
|---|---|---|
| Overview | Overview, Dashboard | Your next steps from local evidence, and the usage statistics |
| Entities | Kits, Subagents, Commands, Hooks, Skills, MCP Servers, Sessions | The installed AgentKit building blocks and recorded session evidence |
| Projects | All Projects, Plans, Journals, and your registered projects | Per-project state, plan tracking, and journals |
| System | Insights, Activity, License, Devices, Secrets, Security, Feedback, Settings, Status Line, Migrate | Local diagnostics, the secrets vault, app configuration, and maintenance workflows |
The top bar shows the breadcrumb for the current surface, a runtime filter, and search. Selecting a registered project in the sidebar opens its project dashboard rather than a global view.
Press Cmd+K on macOS or Ctrl+K on Windows and Linux, or select the search
control, to open the search palette. It finds pages, including Overview and
Dashboard, as well as projects, agents, commands, and skills, in the
interface language you chose. Use the arrow keys to move, Enter to open a
result, and Esc to close. If one of those sources cannot be read, the palette says Some search
sources could not load and still shows results from the rest.
The bell in the top bar opens Notifications. It flags an available AgentKit
update, a project whose files drifted from its kit manifest, and failed runs or
writes among the 50 newest Activity events; a red badge counts unread items.
Selecting an item marks it read and opens Settings, Projects, or Activity, where
you can resolve it. Dismiss hides it. Read and dismissed state is stored
under AGENTKIT_HOME, so Desktop and the browser dashboard share it. With
nothing to act on, the panel shows Nothing to flag.
Secrets appears only in the Desktop app, not in the browser dashboard. A few other pages carry details worth knowing about:
- Profile shows a Builder card with aggregate figures (Sessions, Tokens, Skill runs, Active days, top skills, and top agents) and an activity grid covering the last 26 weeks. The card is meant to be shared, so it never includes your email, project names, paths, or session content. Top skills are named only when an installed AgentKit kit ships them; custom and project skills keep their counts under a generic Custom skill label. Download PNG saves it as an image and Copy image copies it.
- Feedback lists the reports you filed from this machine under Your reports; see Settings and system.
- Activity has Events and Stats views. Events lists skill runs
and writes, including
write.completedandwrite.failedevents from kit installs and updates, migrations, config writes, hook toggles, and MCP links; filter by event kind. Below it, Snapshots lists the runtime-home snapshots taken before some writes, such as kit installs, updates, and uninstalls, migrations,ak new, and session redaction. Each row shows its time, file count, and size. Restoring stays a CLI action because it overwrites anything changed since the snapshot, so Copy restore command copies the exact command for you to review and run. A snapshot with no CLI restore path shows where its captured data is stored instead. Config writes and MCP links keep their own single-file backup and are not listed. - A session's detail shows its Git branch, Working directory, and
Worktree, or
not recordedwhen the session file does not say. Its Applied kits list shows the Kits installed now, not the set that was active when the session started, because a session file does not record it.
Start from the Overview
Desktop opens on Overview, which collects your next steps from local records. The usage statistics moved to Dashboard, directly below it in the sidebar. Overview has five panels:
| Panel | What it lists |
|---|---|
| Needs your attention | Recorded failures, such as an automatic update or scheduled content that failed |
| Continue your plans | Plans that are not completed or cancelled, with checklist progress and a link to open each one |
| Evidence-backed improvements | Skill and agent improvements from Insights that you have not acted on yet, with the number of supporting executions |
| Automatically handled | Actions an existing AgentKit automation recorded as done, such as a successful automatic update or published scheduled content |
| Schedules and results | Your AgentKit automatic-update schedule and pending scheduled content, with the next run when it is known |
Each row shows its project, or Machine-wide · no project attribution, its runtime, and its Recorded state. Outcome not verified means the automation reported its own result and nothing has checked it independently, so a recorded success is not proof that the problem was fixed. The next automatic update runs on the next eligible CLI command after it is due, not at a guaranteed time.
Use Project scope to narrow the page to one project; the top-bar runtime filter narrows it to selected runtimes. Plans have no runtime, so the runtime filter does not hide them, and Insights measurements are machine-wide, so the project scope does not filter them.
Data sources at the bottom lists each source with Available, Not supported, Could not load, or No matching records reported by this source, plus when it was checked. One source that fails does not hide the others. Connected runtime schedules always shows Not supported: AgentKit cannot read schedules a coding agent keeps itself, which does not mean none exist. Select Refresh sources to read every source again.
Overview only reads existing records. Opening it never starts an update or a
run, and it adds no automation or permission; schedules appear only when you
already turned them on, for example with
ak update.
Understand the Dashboard figures
The Dashboard summarizes local usage: tokens over the selected window, sessions
per day, the per-day activity heatmap, session-length buckets, and breakdowns by
day, model, and project. Use the 7d / 30d / 90d control and the date range
to change the window.
The Tokens by subagent panel attributes token spend to the subagent type that a Task or Agent delegation named. Turns outside a delegation are not counted there, and an empty panel means no delegation was recorded in the range. Like every Dashboard figure, it is derived on this machine from local session transcripts and the analytics index; AgentKit sends no telemetry for it.
The Session length card is served from the same analytics index as the other Dashboard cards. AgentKit buckets one indexed duration per session when it reads the selected window, so the card no longer runs a separate, project-capped transcript scan. A session without a positive measured duration is not placed in a duration bucket.
The Usage limits card lists rows per provider (claude, codex, cursor,
grok) and window (5h, week, and monthly for Cursor), each row carrying
a provenance badge and a quota bar, and refreshes every 60 seconds. Without
advanced polling, rows carry raw_only provenance — local token counts only,
no fabricated quota percentage. Claude Code and Codex rows add an approximate
equivalent API cost; Cursor and Grok keep no local transcripts, so their rows
show a dash for tokens and fill in only from advanced polling. The card stays
empty until the local index has counted usage. Desktop sets the index up on its
own unless you switched it off in the Database tab of Settings and
system, which also covers advanced polling and the
header badge and popover that read the same data.
These figures come from the local analytics index, not a billing source. They reconcile supported Claude Code and Codex session evidence while the window is open, so treat them as a local usage view rather than an invoice.
Filter by runtime

The runtime filter scopes Subagents, Skills, MCP, Hooks, Sessions, and Activity
to one coding agent. Kits, commands, and the Dashboard figures are not attributed
to a runtime, so they ignore this filter. A served from index note with a
generation-mismatch badge means the index is behind the current state. Desktop
brings it up to date on its own; to refresh it now, use Sync now in the
Database tab of Settings.
Recognize the empty state

Before any Kit is installed or indexed, the Dashboard shows an empty state with
Install a kit to get started and zeroed metrics. A Some figures could not be read banner means a panel could not draw from the index; reload to try again.
Neither state is an error — it reflects local setup that has not produced data
yet.
Next, learn how to work with the installed building blocks in Managing entities.