guild.yaml declares what Guild brokers for an agent: the integrations, sub-agents, and built-in tools it can call, the models it prefers, and, for Goose agents, the runtime environment it runs in. Each integration operation, sub-agent, and built-in tool you declare becomes a tool the agent can call.
Place guild.yaml at the root of the agent’s version files, next to the agent type’s entry point. It’s optional: omit it when the agent needs none of these. Guild validates it at build time.
Supported sections
Each agent type accepts a different set of sections. Declaring a section the agent type doesn’t support is a build error.
TypeScript agents don’t use
guild.yaml. They declare tools in code. See Tools.
Example
models
models is an optional top-level field that declares the fallback runtime models the agent runs on, as an ordered list of LLM providers and models. Guild loads these declared models when it resolves the LLM for a task, tries each entry in order, and uses the first one the account’s model policies allow. When the agent passes its own LLM preferences for a call, those preferences win and Guild does not read models; the declared models apply only as the fallback for agents that pass no preferences of their own. When omitted, the agent uses the account’s default LLM configuration.
model for an entry to accept any model from that provider and let the server choose one:
integrations
Each entry under integrations declares one integration dependency.
Selecting integration tools in the editor
The web agent editor lets you pick which of an integration’s tools to expose, rather than importing every operation. Keeping the list short helps an agent stay under the tool limits models impose, which a full integration can exceed on its own. The Integrations section opens one dialog, Integrations and tools, for both browsing and configuration:- Active integrations appear as tabs on the left.
- The selected integration’s tools appear as a checklist on the right. Check a tool to expose it, uncheck it to remove it.
- The Add integration tab turns the panel into a browsable catalog.
guild.yaml as {service}_{operation} in snake case — for example, github_repos_get.
sub_agents
Each entry under sub_agents declares one sub-agent dependency.
builtins
Each entry under builtins exposes a platform service’s curated tools to the agent.
Which built-in tools an agent can use depends on its type:
Declaring a service or tool the agent type doesn’t support is a build error. Omitting
tools for a service, as in - name: guild, imports all of that service’s tools the agent type supports.
environment
Goose agents only. environment pins the agent to a runtime environment, written as "<owner>~<name>", such as acme~python-3.12. When omitted, the agent runs in the default guildai~goosebox image.
Validation rules
Guild validatesguild.yaml at build time, alongside recipe.yaml.
- Version resolution — the
versionrange for each integration and sub-agent must resolve to a published version. A range that resolves to no published version is a build error. - Tool verification — when
toolsis specified for an integration, each listed tool must carry the integration’s service prefix (for example,github_) and map to a real operation on the resolved integration version. A tool that does not match an available operation is a build error. Whentoolsis omitted, all operations of the resolved integration version are available. - Built-in tools — each
nameunderbuiltinsmust be a service the agent type supports, and each tool listed undertoolsmust be one of that service’s tools for the agent type. Seebuiltins. - Access and permissions — a public agent cannot depend on a private integration or a private sub-agent, and a sub-agent cannot be archived. See Versions for the full dependency visibility rules.
- Runtime environment — for Goose agents, when
environmentis set, the referenced runtime environment must exist and must be public or owned by the agent’s owner. A public agent cannot depend on a private environment. - Supported sections — each top-level section must be one the agent type supports. See Supported sections. Declaring a section the agent type doesn’t support is a build error rather than being silently ignored.
- Unique tool names — the resolved tool names must not collide. A duplicate name across integrations, sub-agents, and builtins is a build error.
- Models — when
modelsis set, each entry must name a supported provider (anthropic,openai,gemini,meta,deepseek,alibaba,moonshot, orzai), and there can be at most 16 entries. Anything else is a build error.