Skip to content

The agent manifest is a YAML file that defines your complete agent setup at the top level. The config part is powered by Pydantic and provides excellent validation and IDE support for YAML linters by providing an extensive, detailed schema.

Top-Level Structure

Here's the complete manifest structure with all available top-level sections:

Manifest Overview

Complete agent configuration manifest defining all available agents.

This is the root configuration that: - Defines available response types (both inline and imported) - Configures all agent instances and their settings - Sets up custom role definitions and capabilities - Manages environment configurations

A single manifest can define multiple agents that can work independently or collaborate through the orchestrator.

Manifest Overview (YAML)
INHERIT: null  # Inheritance references.
resources: {}  # Resource configurations defining available filesystems.
agents: {}  # Mapping of agent IDs to their configurations.
file_agents: {}  # Mapping of agent IDs to Claude Code style subagent file paths.
teams: {}  # Mapping of team IDs to their configurations.
acp_agents: {}  # Mapping of ACP agent IDs to their configurations.
agui_agents: {}  # Mapping of AG-UI agent IDs to their configurations.
storage:  # Storage provider configuration.
  providers: null  # List of configured storage providers
  session_store: sql  # Type of session store to use for session persistence.
  default_provider: null  # Name of default provider for history queries.
  agents: null  # Global agent filter. Can be overridden by provider-specific filters.
  filter_mode: and  # How to combine global and provider agent filters:
  log_messages: true  # Whether to log messages.
  log_conversations: true  # Whether to log conversations.
  log_commands: true  # Whether to log command executions.
  log_context: true  # Whether to log additions to the context.
  title_generation_model: google-gla:gemini-2.5-flash-lite  # Model to use for generating conversation titles.
  title_generation_prompt: Generate a short, descriptive title (3-7 words) for this  # Prompt template for generating conversation titles.
    request. Only respond with the title, nothing else.
observability:  # Observability provider configuration.
  enabled: true  # Whether observability is enabled.
  provider: null  # Single observability provider configuration.
conversion:  # Document conversion configuration.
  providers: null  # List of configured converter providers.
  default_provider: null  # Name of default provider for conversions.
  max_size: null  # Global size limit for all converters.
responses: {}  # Mapping of response names to their definitions.
jobs: {}  # Pre-defined jobs, ready to be used by nodes.
mcp_servers: []  # List of MCP server configurations:
pool_server:  # Pool server configuration.
  type: mcp  # MCP server type.
  serve_nodes: true  # Which nodes to expose as tools:
  serve_prompts: true  # Which prompts to expose:
  transport: stdio  # Transport type to use.
  host: localhost  # Host to bind server to (SSE / Streamable-HTTP only).
  port: 3001  # Port to listen on (SSE / Streamable-HTTP only).
  cors_origins:  # Allowed CORS origins (SSE / Streamable-HTTP only).
  - '*'
  zed_mode: false  # Enable Zed editor compatibility mode.
  enabled: false  # Whether this server is currently enabled.
prompts:  # Prompt library configuration.
  system_prompts: {}  # Mapping of system prompt identifiers to their definitions.
  template: null  # Optional template for combining prompts.
  providers: []  # List of external prompt providers to use.
commands: {}  # Global command shortcuts for prompt injection.

Top-Level Sections

agents

Dictionary of individual agent configurations. Each key is an agent identifier, and the value is the complete agent configuration.

See Agent Configuration for detailed agent setup options.

teams

Dictionary of team configurations for multi-agent workflows. Teams can run agents in parallel or sequence.

See Team Configuration for team setup and coordination.

responses

Dictionary of shared response type definitions that can be referenced by agents. Supports both inline schema definitions and imported Python types.

See Response Configuration for structured output setup.

storage

Configuration for how agent interactions are stored and logged. Supports multiple storage providers.

See Storage Configuration for persistence and logging options.

observability

Configuration for monitoring and telemetry collection.

conversion

Settings for document and media conversion capabilities.

mcp_servers

Global Model Context Protocol server configurations that provide tools and resources to agents.

See MCP Configuration for server setup and integration.

pool_server

Configuration for the pool server that exposes agent functionality to external clients.

prompts

Global prompt library configuration and management.

See Prompt Configuration for prompt organization.

commands

Global command shortcuts that can be used across agents for prompt injection.

jobs

Pre-defined reusable tasks with templates, knowledge requirements, and expected outputs.

See Task Configuration for job definitions.

resources

Global resource definitions for filesystems, APIs, and data sources that agents can access.

Configuration Inheritance

The manifest supports YAML inheritance using the INHERIT key at the top level, similar to MkDocs:

base.yml
storage:
  log_messages: true
agents:
  base_agent:
    model: "openai:gpt-5"
    retries: 2
agents.yml
INHERIT: base-config.yml
agents:
  my_agent:
    inherits: base_agent
    description: "Specialized agent"

LLMling-Agent supports UPaths (universal-pathlib) for INHERIT, allowing pointing to remote configurations (http://path/to/config.yml).

Schema Validation

You can get IDE linter support by adding this line at the top of your YAML:

# yaml-language-server: $schema=https://raw.githubusercontent.com/phil65/llmling-agent/refs/heads/main/schema/config-schema.json

Note

Versioned config files will arrive soon for better stability!

Usage

Load a manifest in your code:

from llmling_agent import AgentPool

async with AgentPool("agents.yml") as pool:
    agent = pool.get_agent("analyzer")
    result = await agent.run("Analyze this code...")