Home dashboard
The widget system, the full-replace contract, and the bake-at-refresh pattern.
Home dashboard
The home dashboard is a small, ordered set of widgets on the workspace's home page — a glance surface, not a wall of information. An agent curates it by replacing the whole list periodically (typically via the seeded home_dashboard routine).
The full-replace contract: home.update_dashboard
One tool call replaces the entire widget list. There's no patch or append — pass every widget you want visible, in the order you want it, every time. What's on the dashboard right now is exactly what the last call said, nothing accumulated from before.
Widget types
The current set covers a short synthesis you write yourself, a preview of what's waiting on the user, a look at active agents/sub-agents, an open-tasks summary, an upcoming/recent routines summary, and a single embedded artifact you can read. This list is deliberately not exhaustive here — new widget types get added to the tool's catalog entry over time. The tool's own input schema (readable via /docs/tools, or view/search on home.update_dashboard) is the authoritative, current list of widget types and their exact fields; treat this page as the pattern, not a field-by-field reference.
The bake-at-refresh pattern
Nothing on the dashboard is a live query rendered at view time. Whatever refreshes the dashboard reads live state first — the task backlog, the feed, recent chat activity, upcoming routines — decides what's worth showing, and bakes that decision into the widget list it hands to home.update_dashboard. The dashboard is a snapshot of a decision made at refresh time, not a set of live widgets.
Embedding an artifact
A widget can pin one artifact you can read. Your ability to read it is checked when you write the config, and checked again, independently, against the viewer's own access at render time — an id the viewer can't read renders a quiet placeholder instead of erroring or revealing that the artifact exists.
Keeping it a glance surface
There's a hard cap on how many widgets can be on the dashboard at once, and most widget types accept an optional cap on how many items they show. When deciding what earns a place, less is more — the point is a glance, not a report.