Otto configuration
Configure Otto agents to customize their behavior, model settings, tool access, and MCP server connections within your Ascend Project.
Organization
The otto.yaml configuration must be located within a dedicated otto directory in your Ascend Project:
- Screenshot
- File tree

├── otto
│ ├── agents
│ │ └── custom_agent.md
│ ├── mcp.yaml
│ ├── otto.yaml
│ └── rules
│ └── demo_welcome.yaml
│ └── git_commits.yaml
Configuration structure
otto:
default_model: <model-identifier> # Default model for all agents
model_settings: # Default model settings
temperature: <0.0-1.0>
max_tokens: <number>
agents:
<agent_id>:
additional_instructions: ... # Append to system instructions
instructions: ... # Replace system instructions entirely
max_turns: ... # Override conversation turn limit
model: ... # Override model for this agent
model_settings: ... # Override model settings
mcp_servers: ... # Grant access to MCP servers
tools: ... # Configure tool access
Model configuration
Default model
Set a default model for all agents:
otto:
default_model: gpt-4.1
Model settings
Configure model parameters like temperature and token limits:
otto:
model_settings:
temperature: 0.7 # Response randomness (0.0-1.0)
max_tokens: 4096 # Maximum response length
Per-agent model override
Override the model for specific agents:
otto:
agents:
chat:
model: gpt-4.1
model_settings:
temperature: 0.3 # Lower for more deterministic responses
reasoning: true # Enable reasoning mode (if supported)
"Code Reviewer":
model: claude-3-5-sonnet
model_settings:
temperature: 0.2
Agent configuration
Override system instructions
Use additional_instructions to append to the default system instructions, or use instructions to completely replace them:
otto:
agents:
chat:
additional_instructions: |
Always provide code examples when explaining concepts.
Use markdown formatting for code blocks.
commit_message:
additional_instructions: Use conventional commits format with an emoji prefix.
Conversation limits
Override the maximum number of turns for any agent:
otto:
agents:
chat:
max_turns: 100
"Pipeline Monitor":
max_turns: 50
MCP server access
Grant agents access to specific MCP servers configured in mcp.yaml (see MCP guide):
otto:
agents:
chat:
mcp_servers:
- slack
- github
"Pipeline Monitor":
mcp_servers:
- slack
- pagerduty
Access patterns:
- Specific agents: Only listed agents can access the MCP servers
- Granular control: Different agents can have different server access levels
- Multiple servers: Agents can access multiple MCP servers simultaneously
Tool configuration
Control which tools an agent can use:
otto:
agents:
"Read Only Agent":
tools:
- read_file
- search_files
- list_directory
"Full Access Agent":
tools:
- "*" # All tools
Built-in agents
You can customize both custom agents and built-in agents:
| Agent ID | Description |
|---|---|
chat | Otto Chat: general-purpose conversation |
commit_message | Generates git commit messages |
otto:
agents:
chat:
max_turns: 100
mcp_servers:
- slack
model_settings:
temperature: 0.7
commit_message:
additional_instructions: |
Use conventional commits format.
Include a scope when applicable.
Keep the first line under 72 characters.
Configuration precedence
Settings are applied in order of precedence (highest to lowest):
otto.yamloverrides: Highest priority- Agent definition in
otto/agents/*.md - Model selected in Chat UI (for interactive sessions)
- Default settings (
default_model,model_settings) - Provider defaults
Example: If you set temperature: 0.3 in otto.yaml for the chat agent, it will override any temperature setting in the agent's markdown definition.
Complete example
Next steps
- Set up MCP servers following the MCP Setup Guide
- Create custom agents with specialized capabilities
- Configure Otto Automations for event-driven workflows
- Define custom rules for project-specific guidance