nameis the local key (^[a-z0-9][a-z0-9-_.]*$) and, with the kind, forms the config identity.displayName(optional) is the agent’s name as it appears in Roark, where spaces and capitals are allowed; it defaults toname. Set it to an agent’s exact existing name to bring an agent you created in the app under config (apply takes it over in place instead of creating a duplicate) when that name isn’t slug-shaped, for exampledisplayName: "Dental Clinic"withname: dental-clinic.- Other resources reference an agent by its
name(the slug), not itsdisplayName(e.g. a flow’sagents:list, a collector’sAGENTfilter, or a simulation plan’sagentEndpoints).
Endpoints
An endpoint is identified by itsvalue: the E.164 number for a phone line, the URL otherwise. That is the only field you always have to give.
An endpoint is identified by its value and its direction together, so one number can carry an inbound endpoint and an outbound one:
INCOMING or OUTGOING, never both.
Endpoints reconcile with the agent on that pair: one you add is created, one you change is updated, and one you remove is detached. Changing a direction is therefore a new endpoint and the retirement of the old one rather than an edit, which matches what it does to your call routing.
Prompt
prompt is the agent’s system prompt, kept in your repo and versioned in Roark. Like every prompt field it takes an inline string or a file:// reference resolved from your config root:
prompt leaves any existing prompt alone: config sets a prompt, it never clears one you did not declare.
The prompt is kept for your reference and versioning only. Roark does not run your agent, and no metric evaluates against this prompt, so setting it does not change how your agent behaves or how it is scored.
Other endpoint types (LiveKit, SmallWebRTC, ElevenLabs, Kore, Google CES, Daily) are not configurable here. They are bidirectional, so they carry no direction, and each needs provider configuration the config format has no place for. Their endpoints are created by the integration that owns them.
Outbound dialling
By default anOUTGOING endpoint is dialled by Roark. To hand dialling off to your own system, set outboundDialType: HTTP_REQUEST and point outboundDialHttpRequestDefinition at an HTTP request definition by name. Roark fires that request (with the number to dial substituted in) when the call should be placed:
dialer definition in the same bundle (or a previous apply); it reconciles before agents, so the reference resolves in one apply. See HTTP request definitions.
For the full field reference of every kind, see the Config DSL reference schema.