Agents

Config

Agent config YAML field reference.

This is the field-by-field reference for Ellipsis agent YAML files. The canonical path is agents/*.yaml; .agents/, ellipsis/, and .ellipsis/ are also accepted, including any subdirectory under them (for example .ellipsis/agents/*.yaml). The machine-readable source of truth is GET /agents/schema.

Every config file must declare a top-level ellipsis: mapping. Its presence is what identifies the file as an Ellipsis agent config: a .yaml/.yml file in a config directory without an ellipsis: block is treated as unrelated YAML and ignored (not synced, validated, or commented on).

For how agents are deployed and synced from GitHub, see Deploy. For how triggers behave, see Triggers; for the sandbox, see Sandbox; for spend, see Budgets. This page documents the YAML fields.

Top-level fields

The shape of an agent file. Every field has a default; a useful agent sets `triggers` and a `claude.system` prompt (mention agents need neither).

FieldTypeDefaultDescription
ellipsisobjectrequiredEllipsis namespace: schema version, name/description, and organizational metadata. Its presence marks the file as an agent config.
enabledbooleantrueWhen false, cron, react, and mention starts are skipped. Manual runs still work.
triggerslist of trigger objects[]How the agent runs automatically. Types: cron, react, mention.
structured_outputobject | nullnullJSON Schema contract for machine-readable run output.
sandboxobject{}The sandbox the agent runs in: which repositories are checked out, which stored environment variables are injected, and compute sizing.
limitsobjectall nullPer-run and trailing spend limits, in US dollars.
claudeobject{}Claude runtime config: the system prompt and model. Optional for mention-only agents.

ellipsis

The Ellipsis namespace: schema version, identity, and organizational metadata. Its presence is what marks a YAML file as an agent config; a config-path file without it is ignored.

FieldTypeDefaultDescription
versionstringv1Config schema version. Bumped only on a breaking shape change; an unsupported value fails validation. v1 is the only supported version today.
namestring | nullnullDisplay name. Dashboard-created files slug this into the file path.
descriptionstring | nullnullShort summary shown in product surfaces.
metadataobject{}Freeform labels and annotations. Does not affect how the agent runs; excluded from the config content identity.

ellipsis.metadata

Freeform organization, modeled on Kubernetes labels and annotations. It has no effect on how the agent runs and is excluded from the config content identity.

FieldTypeDefaultDescription
labelslist of strings[]Flat string tags for grouping and filtering.
annotationsobject{}Arbitrary key-value pairs.

claude

FieldTypeDefaultDescription
systemstring""The agent's instructions. Required (non-empty) for cron, react, and manual agents; ignored for mention agents, whose reply is built from the conversation.
modelstringcurrent default agent modelModel passed to Claude Code. Omit unless Ellipsis gave your account explicit guidance.

triggers

An agent can declare zero or more triggers; each independently decides when the agent runs. A config with no triggers can still be run manually or through the API. See Triggers for how each type behaves; the fields are below.

Cron trigger

Run the agent on a schedule. See Triggers → Cron.

Run the agent on a schedule.

FieldTypeDefaultDescription
type"cron"requiredSelects the cron trigger shape.
schedulestringrequiredFive-field cron, or an EventBridge cron(...), rate(...), or at(...) expression. Five-field cron is converted to EventBridge format.

EventBridge Scheduler cannot restrict both day-of-month and day-of-week in one expression.

React trigger

Run the agent in response to repository and issue events. See Triggers → React.

Run the agent in response to repository and issue events.

FieldTypeDefaultDescription
type"react"requiredSelects the react trigger shape.
eventslist of react event objectsrequiredEvents that can start the agent.
eventreact event enumrequiredThe GitHub or Linear event to react to.
repositorystring | nullnullRepository name filter for the event.
brancheslist of strings[]Only valid for event: push. Exact names, prefixes ending in *, or "default" for the repository default branch. Empty matches every branch.

Allowed event values:

ValueFires for
pull_request_openPR opened or marked ready for review.
pull_request_open_draftDraft PR opened.
pull_request_mergePR merged.
pull_request_closePR closed without merge.
pull_request_pushPush to a branch with an open PR.
pull_request_review_submittedPR review submitted.
pull_request_commentComment on a PR.
issue_openGitHub issue opened.
issue_closeGitHub issue closed.
issue_commentComment on a GitHub issue.
linear_issue_openLinear issue opened.
pushPush to any branch of a GitHub repository.
slack_channel_createdA new public channel created in your Slack workspace.

Mention trigger

Route @ellipsis mentions to this agent instead of the built-in responder. See Triggers → Mention.

Route @ellipsis mentions to this agent instead of the built-in responder.

FieldTypeDefaultDescription
type"mention"requiredSelects the mention trigger shape.
platformslist of platform strings[]Surfaces this agent answers @ellipsis on. Empty means all of them.

Allowed platforms values:

ValueCovers
github@ellipsis in GitHub PR and issue comments and reviews.
slack@ellipsis messages and app mentions in Slack.
linear@ellipsis in Linear issue comments.

One agent answers per platform. If two configs claim the same platform the oldest one wins; the rest are ignored. With no claimant, the built-in Ellipsis responder answers.

sandbox

The sandbox the agent runs in. See Sandbox for how repositories and variables are resolved.

The sandbox the agent runs in. Each repository entry takes name (required), owner (defaults to the config account), and ref (defaults to the default-branch head).

FieldTypeDefaultDescription
repositorieslist of repository objects[]Repositories checked out in the sandbox. Each takes name (required), owner, and ref.
variableslist of variable objects[]Environment variables injected into the sandbox (an allowlist — only the variables named here reach this agent). Each entry takes a name and an optional value.
variables[].namestringrequiredThe environment variable name. Must be a valid shell name (letters, digits, underscores; not starting with a digit).
variables[].valuestring | nullnullA literal value injected as-is — use for non-secret config like a log level or API base URL. Omit it to resolve the value by name from your sandbox-variables store (dashboard or PUT /sandboxes/variables) at run time, keeping secrets out of YAML.
computeobject{}Reserved. No fields today.

Ellipsis clones repositories available to the account installation, and can clone public repositories from other owners. It rejects private repositories outside the owning account. A variable with no value and no stored value fails the run, so define it before referencing it.

structured_output

FieldTypeDefaultDescription
type"json_schema""json_schema"Structured output type.
json_schemaobjectrequiredJSON Schema the agent output must satisfy.

When present, Ellipsis passes this schema to the Claude Code runtime for the run's output.

limits

Per-run and trailing spend limits, in US dollars. See Budgets for account defaults and platform ceilings.

Spend limits, expressed in US dollars.

FieldTypeDefaultDescription
runnumber | nullaccount defaultPer-run budget for this agent. Clamped to the platform maximum.
daynumber | nullplatform ceilingTrailing one-day spend cap for this config.
weeknumber | nullplatform ceilingTrailing seven-day spend cap for this config.
monthnumber | nullplatform ceilingTrailing 28-day spend cap for this config.

The account default run budget is $10.00 and the platform maximum per-run budget is $50.00. Config trailing ceilings are $50 / 1 day, $250 / 7 days, and $1,000 / 28 days.

Validation and sync behavior

CaseResult
File has no top-level ellipsis: blockNot treated as an agent config: ignored entirely (not synced, validated, or commented on), even at a config path.
ellipsis.version is unsupportedValidation fails.
YAML is emptyParses as a config with an empty claude.system, then validation rejects it for GitHub sync/API validation.
claude.system is empty or whitespaceValidation fails.
Cron expression is invalidValidation fails before the config is stored or scheduled.
branches is set on a non-push react eventValidation fails.
New file is invalidThe sync reports an orphan error and does not create an agent.
Existing file becomes invalidEllipsis records the sync error and keeps the last good config.
File is removedEllipsis soft-deletes the saved config and syncs cron schedules.