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 is not expressible in config: an endpoint applied from a bundle is always created with it set to none. The alternative needs an HTTP request definition that config cannot yet declare, so configure that in the dashboard.
For the full field reference of every kind, see the Config DSL reference schema.