Agent posture — the inventory of every agent enrolled in this estate
packs:agents
The agent posture page answers, for every agent enrolled in this
estate, the questions a chief AI officer, an auditor or a trust
administrator asks of an inventory: what is it, who owns it, what may it
do and where, which release is it running, when did it last act, how
much of its budget has it spent, are its transcripts captured, is its
model provider approved, is it still alive. One row per agent — never
per instance — served by the v2 AgentPostureService.ListAgentPosture,
shown on Governance → Agents → Posture and on the dashboard's
Agents panel, and printed by opschain agents posture. It is not
discovery: nothing here finds an agent that did not enrol; the page
lists what the fleet registry holds, and says so in its title.
The row, attribute by attribute
| Attribute | Meaning |
|---|---|
agent_id / principal_id | The agent's id (the member id of its most recently registered instance — what the trust review and the activity timeline address) and its governed principal id (the service-account principal, or the synthetic agent:<project>/<code> id on a composition without an identity backend). Grants and assignments are addressed to the principal. |
project_path, code, name, agent_type, group | Identity and placement from the manifest: the project it is enrolled in, its code, display name, declared type (service, ai or untyped) and fleet group. |
owner_ref, owner_principal_id, owner_departed | Who is accountable. owner_ref is the reference the manifest or the admin override recorded (a username or a group name from the identity catalog); owner_principal_id is the owning user's principal id when the reference resolves to an enabled user. Owner departed: the reference is set but the catalog no longer holds an enabled user or a known group by that name — the owning human left (the identity sweep disabled a directory leaver, or the account was removed) or the team was deleted. A posture flag and a panel count only: the row keeps the departed reference for the audit trail, tier and caps are unchanged (authority is never removed on an HR event), and the flag clears when the access-review campaign's work item reassigns ownership (opschain admin agent owner). |
tier | The effective tier from the compiled trust snapshot: the most permissive tier any active grant confers on the agent's principal, group or group attributes, clamped by the agent type's ceiling (ai is pinned at supervised unless raised); advise when no grant names the agent but an assets-under-management assignment does and agents.assignment_floor is advise; none when nothing reaches it. One number for an inventory — the per-(path, action) decision stays the trie walk the request lane performs (opschain docs agent-plane). |
assigned_scopes | The agent's assets-under-management assignments, scope ascending. |
release | The signed release the current instance enrolled from — id, name, version, its current promotion stage, and the artifact digest an external inventory keys on. Unset for an agent enrolled without a release. |
instances, instances_connected | Instances enrolled (not retired) and, of those, the ones holding a live channel right now. |
last_action | The last governed action in the audit ledger — a request through the governed lane (info:agent:request, warn:agent:request_refused) or a brokered model call (info:agent:model_call, warn:agent:model_call_refused): when, the kind (request, model_call), the outcome (allowed, refused, served) and the correlation chain it belongs to, so the row opens the chain. Lifecycle events (registered, halted, owner changed) are not actions. |
token_windows, over_cap | For every active token-capped grant that applies, each window's cap and the spend against it in the current period on the project's reporting calendar — the same gauges the trust review shows, read set-based for the whole inventory; over_cap when any window has reached its cap. Tokens, never money. |
transcripts_captured | Whether the platform holds captured transcripts — chat or adapter transit — for any of the agent's instances (opschain docs ai-agents). |
model_provider, data_handling_approved | The model-provider catalog record the agent brokers through and whether that record carries the data-handling-approved marker (opschain docs model-providers). |
disclosures | The manifest's attested "what is this thing": purpose, model vendor, name and version, adapter, custody mode and how many estate tools it declares. |
health | halted when any member is halted, else connected when a channel is open, else draining when a drain is requested, else stopped when every member said goodbye, else offline. |
last_seen_at | When any instance was last seen. |
stale | No governed action within agents.stale_after (168h by default) — an agent that never acted is stale. Last-observed, never a live probe. |
The response adds the summary the dashboard panel shows — total,
rows per tier, stale, over cap, owner departed, without an owner — the
stale_after the rows were judged against and computed_at.
How the row is composed
The inventory is set-based: one statement over the fleet registry
(the latest manifest per project and code among unrevoked members) joined
to the members' liveness, the live instance and channel counts, the
current instance's release and its digest, the materialised trust
assignments of the agent's principal, the transcript index, the identity
catalog (the owner's standing) and a lateral last-event read off the
audit ledger — never a round trip per agent, however many are enrolled.
Above the statement, the effective tier is a compile of the in-memory
trust snapshot per subject (no reads), and the spend gauges are one
counter read per reporting calendar over every budgeted grant the rows
carry. On the embedded SQLite store the owner's standing and the
data-handling marker are not judged (no identity catalog, no provider
catalog): owner_departed and data_handling_approved stay false there.
Filters
project_code (a project the caller may read; empty reads every project
the caller may read and needs read on the root), tier (none,
advise, supervised, autonomous), agent_type (service, ai),
stale and departed_owner. An unknown tier or type is refused by name.
The GUI's Posture tab and opschain agents posture expose the same five.
Surfaces
- Governance → Agents → Posture — the full-width table with the filters, the summary strip and a CSV export; a row opens the agent's page, its trust review and the chain of its last action.
- Dashboard → Add panels → Agents (project-scoped;
packs:agents) — counts by tier, stale, over cap today, owner departed, without an owner, each opening the Posture tab pre-filtered. opschain agents posture [--project] [--tier] [--type] [--stale] [--departed-owner] [-o json|csv](opschain docs cli/agents-posture).
The export
-o csv (and the page's export) is what an external inventory — a
control tower, a CAIO's register — pastes in: every row carries the
OpsChain agent_id and the release_digest so the other side can key on
them, and the owner travels as owner_principal_id only. No username
and no email leaves the estate in this export.
Settings and configuration
| Key | Default | Meaning |
|---|---|---|
agents.stale_after | 168h (7 days) | A stored global setting (opschain docs settings-reference), a Go duration string read live on every posture read; absent, malformed or non-positive falls back to the default. An agent with no governed action within it is stale. |
agents.assignment_floor | advise | config.yaml: whether an assignment alone confers advise (the tier column reads it). |
Nothing else tunes the component; the tier ceilings, grants and
assignments it reads are the trust registry's (opschain docs agent-plane).
Governance and audit
A read, authorised like every other project read: read on the project
path (an unreadable project answers not found), read on the root for the
estate. Nothing is audited and nothing is written — the page changes no
posture. Reassigning a departed owner is opschain admin agent owner
(audited info:agent:owner_changed); the trust review and the activity
timeline remain the per-agent depth behind each row.
What this component does not do
- No discovery. It lists enrolled agents; shadow AI, models spun up elsewhere and agents that never enrolled are outside it.
- No enforcement. A departed owner, a stale agent or an over-cap window changes nothing here; the gateway refuses over-cap calls, the access review reassigns owners, the trust review promotes or demotes.
- No money. Spend is tokens against caps (
opschain docs provider-usage).
Related pages
opschain docs resources/agent_posture— the data dictionary.opschain docs cli/agents-posture— the command.opschain docs agent-plane,ai-agents— the governance fabric and the LLM lane the rows summarise.opschain docs provider-usage— the telemetry behind the spend gauges.opschain docs agent-releases— releases, stages and digests.opschain docs identity— the sweep that disables directory leavers.