API and console
Every chat operation is a workflow. A workflow is callable from the API, the console and the MCP server only when it is featured. The others are internal: they run inside the featured ones and answer a direct call with WORKFLOW_NOT_FEATURED. Featuring decides who may ask; the checks inside each workflow decide what comes back.
Reads
All reads resolve the space inside your organization, refuse another organization's space, and never return key material.
| Read | Inputs | Who may call | Returns |
|---|---|---|---|
data.buzz.space.list | status | Your organization | Your chat spaces |
data.buzz.space.get | space_uuid or identity_app_uuid | Your organization, not end users | One space |
buzz.space.status | space_uuid or identity_app_uuid | Your organization | Relay readiness, member convergence, actors |
data.buzz.member.list | space_uuid or identity_app_uuid, status, relay_state | Your organization, not end users | Members with moderation, last seen and status codes |
data.buzz.member.directory | space_uuid or identity_app_uuid, channel_id, kind (all, actors, people), query, limit (1 to 200), offset | Your organization, or an end user who is an active member of their app's space | People and actors with names and roles, no platform ids |
data.buzz.channel.list | space_uuid or identity_app_uuid, include_archived | Your organization, or an end user (their app, open channels) | Channels, the relay URL and relay public key |
data.buzz.theme.get | space_uuid or identity_app_uuid, which, version | Your organization, or an end user (published theme only) | The theme document |
data.buzz.member.channels | space_uuid, member_uuid | Organization admins (people, not agents) | The channels one member is in |
data.buzz.attachment.list | space_uuid, status, limit | Organization admins (people, not agents) | Attached actors, triggers, ceilings, replies in the last hour, and each one's responder settings |
data.buzz.actor.commands | space_uuid or identity_app_uuid, actor_public_key (or attachment_uuid for organization callers), locale | Your organization, or an end user who can talk to that actor (through the commands entry point) | The actor's slash commands: command, title, description, kind (read or write). No platform ids |
data.buzz.inbound.list | space_uuid, status, attachment_uuid, staff_actor_uuid, limit (up to 200) | Organization admins (people, not agents) | The actor ledger, no message content |
buzz.media.list | space_uuid, channel_id, limit, until | Organization admins | Files the recent messages of a channel carry |
buzz.theme.validate | document | Your organization | Validation result, no write |
buzz.space.status, data.buzz.member.list, data.buzz.channel.list and data.buzz.member.directory instead.Verbs for your organization
Started by a person in your organization. They refuse agents, agent sessions and end users unless the table says otherwise.
| Area | Workflows |
|---|---|
| Space | buzz.space.enable, buzz.space.publish-chat, buzz.space.disable, buzz.space.delete |
| Theme | buzz.theme.save-draft, buzz.theme.publish, buzz.theme.rollback |
| Members | buzz.member.set-role, buzz.member.set-status, buzz.member.remove, buzz.member.rotate-key, buzz.member.reconcile, buzz.member.admin-set-display-name (admins) |
| Moderation (admins) | buzz.member.timeout, buzz.member.clear-timeout, buzz.member.ban, buzz.member.unban, buzz.message.moderate-delete |
| Channels | buzz.channel.create, buzz.channel.set-member, buzz.channel.archive |
| Actors | buzz.actor.attach, buzz.actor.set-status, buzz.bridge.sync, buzz.actor.set-reply-principal and buzz.actor.set-responder (admins and owners, signed in as a person) |
| Actors speaking | buzz.actor.notify, buzz.actor.dm-open, buzz.message.post (optionally with a ui card). Also callable by the attached actor itself, as itself |
| Structured cards | buzz.actor.post-view: a refreshable read card from the actor's DGI scope. Schedulable. See Cards, live updates and proactive posts |
| People (identity) | identity.end-user.create, identity.end-user.invite, identity.end-user.bind-actor |
End-user entry points
End users never start buzz.* types directly. buzz.space.enable publishes the chat's entry points as compositions exposed on your identity app, and the chat page calls those with the person's own token. Each one refuses a caller who is not the signed-in end user and any input that names someone else.
| Entry point | Wraps | Use |
|---|---|---|
open | buzz.session.issue | Open the chat: relay URL, the person's chat credential for this session (revealed once), role, theme version, attachment settings |
sign-out | buzz.session.revoke | Revoke the person's chat sessions |
theme | data.buzz.theme.get | The published theme |
channels | data.buzz.channel.list | Channels the person can see |
members | data.buzz.member.directory | People and actors to mention or DM |
display-name | buzz.member.set-display-name | "Your name in the chat" |
channel-create, channel-update, channel-invite | buzz.channel.create-as-member, buzz.channel.update-as-member, buzz.channel.invite-member | Member-run channels, when member_channel_create is on |
channel-join, channel-leave | buzz.channel.join, buzz.channel.leave | Open channels, when member_channel_join is on |
notifications | buzz.member.set-notifications | The person's missed-message email switch |
commands | data.buzz.actor.commands | The / command palette of an actor with a DGI responder |
A space created before an entry point existed gets it when you re-run buzz.space.enable, which adds only the missing ones (it runs buzz.space.publish-entrypoints, which you cannot start on its own).
If you build your own chat page, call these the same way: sign the person in with @orkestia/auth and start the exposed workflow with their token.
Internal, not callable
Everything else in buzz.* and data.buzz.* runs only inside the verbs above: the bridge's entry and config read, the actor reply run, the handoff, the notification scan, the step workflows of enable and delete, the entry-point publisher (buzz.space.publish-entrypoints), the card watchers that keep run cards and live cards current (buzz.actor.watch-run, buzz.actor.watch-card), and every data.buzz.* writer. The read that builds a card, dgi.view.render, runs inside buzz.actor.post-view and card refreshes. You will see them in run histories; you cannot start them.
The console Chat tab
Open an identity app in the console and choose Chat.
| Part | What it does |
|---|---|
| Status and setup | Enable the chat, see relay readiness, publish the chat page and open it |
| Theme editor | Edit the theme with a live preview; save draft, publish, history and rollback |
| Members (Membros) → Members | The roster with status, moderation and last seen, and actions per person: role, name, timeout, ban, suspend, remove, rotate key |
| Members → Invite (Convidar) | Create and invite end users by email |
| Members → Actors (Atores) | Attach, pause and detach actors, sync the bridge, and switch an actor's reply mode. Responders (Staff, DGI, hybrid) are set with buzz.actor.set-responder |
| Members → Maintenance (Manutenção) | Reconcile the roster and repair display names |
| Members → Activity (Atividade) | The actor ledger: what woke each actor and what happened |
The console calls the same workflows listed on this page, so anything you do there shows up in your run history.
Ask your AI assistant
List every featured workflow under buzz. and data.buzz. with list_workflow_types, and group them into reads, organization verbs and end-user entry points.
Show me the input schema of buzz.actor.attach with get_workflow_schema and explain each field.
For my identity app "<app name>", run buzz.space.status and data.buzz.space.get and summarize the space: status, relay, members and actors.
For AI agents
| Rule | Detail |
|---|---|
| Discover | list_workflow_types(prefix="buzz.") and prefix="data.buzz.". Only featured: true types are startable |
| Safe reads | The reads above are read-only. Admin reads refuse agent sessions; fall back to buzz.space.status and data.buzz.member.list |
| End-user types | Types marked end_user_eligible run for end users only through the app's entry points |
| Never | Look for a workflow that reads messages or returns a chat key to an organization caller. Neither exists |
Internal support actor
Internal mode lets an attached actor answer your own team with your organization's tools instead of the app's end-user workflows, for an allowlist of people in a space where everyone is on that list
Limits
Chat file access is authenticated to space members. Remaining boundaries: no per-file deletion, complete actor answers, no per-person actor memory, sign-out vs key revoke
