Register an agent class
You have a new agent you want to bring under Quayside governance. Three ways to register it.
Via the dashboard
The most common path.
- Open
/classes/new - Fill in
slug,name,purpose,owner, initial lifecycle (defaultactive) - Register class
You land on the class detail page. The class is immediately usable — instances claim against it on first call, audit aggregates against it, policy attaches to it.
Via the CLI
For scripts, IaC, or copy-pasting from a notebook.
quayside class register \ --slug eng/code-reviewer \ --name "Code Reviewer" \ --purpose "Reviews PRs on the platform team; posts inline comments." \ --owner alice@example.comYou can also list, show, and deprecate:
quayside class listquayside class list --status draft
quayside class show eng/code-reviewer
quayside class deprecate eng/code-reviewerVia HTTP
What both of the above are doing under the hood.
curl -X POST http://localhost:8000/api/v1/registry/classes \ -H "Content-Type: application/json" \ -d '{ "slug": "eng/code-reviewer", "name": "Code Reviewer", "purpose": "Reviews PRs on the platform team; posts inline comments.", "owner_principal_id": "alice@example.com", "lifecycle_status": "active" }'Returns 201 Created with the new class row.
What you can’t do
- Register a class as
externalorsunset— those statuses are reached via other paths (shadow discovery and lifecycle transition respectively) - Use a slug that’s already in use — returns
409 Conflict - Use an invalid slug — returns
422(slugs must be lowercase, with hyphens / underscores / dots / slashes) - Supersede a class that doesn’t exist — returns
404
Conventions for slugs
We recommend <team>/<agent-name> so the slug doubles as documentation of ownership:
eng/code-reviewersupport/tier1-botfinance/expense-classifierops/incident-summary
This isn’t enforced. You can use any slug that matches the validation regex (^[a-z0-9][a-z0-9._/\-]*$).
What happens next
The class needs a policy before the proxy will know what detectors to run for it. The dev seed gives every newly-created tenant one example policy, but for your new class:
- Either copy an existing policy via the dashboard’s policy editor
- Or POST a
PolicyBodyto/api/v1/policy/class/{id}/draftsand publish it
Until a class has a published policy, calls to the proxy for that class will return 404 (no active policy) from the policy service.