workboard Plugin
A detailed guide to the workboard built-in plugin, how it exposes structured work snapshots through runtime HTTP, and why it belongs more to observability and control-plane capability
workboard Plugin
workboard is the clearest HTTP-injection-style plugin in the current built-in set.
Unlike skill, web, asr, and tts, it is not mainly action-driven. It is more about:
- runtime state exposure
- structured snapshot output
- control-plane and UI consumption
What it does
Its responsibility can be summarized in one sentence:
- expose the agent's current and recent work state as a structured snapshot for external surfaces
Its core capability today is one runtime HTTP route:
GET /api/workboard/snapshot
Why it matters
Because it shows a very important point:
- a plugin does not have to be “used” mainly through
runAction(...)
Some plugins are not mainly consumed by the agent itself. Their main consumers are:
- Console
- UI
- status dashboards
- control-plane proxies
workboard is exactly that shape.
Which plugin capabilities it uses
workboard currently uses:
availabilityhttp.runtime
It does not use:
actionssetupusagesystemhooks
That tells you its job is extremely focused: provide one controlled, authenticated, observable HTTP surface.
Typical runtime flow
A normal workboard request usually flows like this:
- an external surface issues
GET /api/workboard/snapshot - runtime checks the plugin-declared auth policy first
workboardchecks its own availability- if unavailable, it returns
503 - if available, it reads the current snapshot from the snapshot store
- it returns structured JSON
The important part is not only the route itself. It is that:
- the route belongs to a plugin
- auth policy is declared by the plugin
- availability is aligned with plugin lifecycle
Auth requirement
The current snapshot endpoint requires:
- authenticated access
- permission
agent.read
That tells you it is not a public anonymous status page. It is a controlled runtime observability surface.
Typical scenarios
Scenario 1: Console wants to show “what is the agent doing right now”
The most common approach is to poll or fetch on demand:
GET /api/workboard/snapshot
Then render the returned structure as a workboard or activity panel.
Scenario 2: you are building a control-plane proxy that needs agent runtime snapshots
workboard returns structured JSON instead of raw freeform logs, which makes it a strong control-plane data source.
Scenario 3: you are documenting or designing HTTP-style plugins
workboard is the most direct current reference.
How to think about it in the SDK
For workboard, the important question is not “how do I runAction it?”
The important question is “how does it safely contribute runtime HTTP routes?”
That means its main consumption path is closer to:
- external HTTP clients
not:
- local explicit SDK action calls
The interface it exposes
The main interface today is:
GET /api/workboard/snapshotOn success, it returns a structured snapshot response.
If the plugin is currently unavailable, it usually returns:
503
If an internal snapshot read fails, it usually returns:
500
Why it does not need actions
This is the key to understanding workboard.
Its goal is not to provide a “user clicks and runs one business operation” interface.
Its goal is to provide a state surface that other interfaces can read continuously.
In that shape:
- an HTTP route is more natural than an action
because:
- the consumer is already a UI, proxy, or console
- those consumers naturally prefer HTTP JSON endpoints
How it relates to plugin HTTP docs
If you want to fully understand workboard, read it alongside:
because workboard is the standard current example of that mechanism.
Its boundary relative to services
workboard is not a “background worker service.”
It is a:
- runtime snapshot exposure plugin
Its job is not to do the work. Its job is to expose what work is being done.
That kind of need naturally fits plugin HTTP injection better than a separate custom service communication surface.
Important boundaries
It is an observability surface, not a business execution surface
Do not treat it like an action center.
It depends on controlled permissions
If the caller does not have agent.read, the endpoint should not be exposed to that caller.
Availability still affects endpoint behavior
Even if the route exists, a disabled or unavailable plugin does not guarantee a successful response.
When to use it as a reference
Use workboard as a reference for:
- plugin HTTP injection
- runtime state snapshots
- UI and Console observability surfaces
- permission-controlled status endpoints
Related docs
tts Plugin
A detailed guide to the tts built-in plugin, how it installs local synthesis dependencies, configures model and output parameters, generates audio files, and returns reusable audio tags
Plugin Configuration
Understand city-level plugin enablement, project-level plugins config, and the role of setup and usage