Files
dev/config.toml.example
T
zeekay b866c54327 docs: comprehensive config.toml.example with all agent backends and MCP servers
Includes:
- All 7 agent backends: claude, codex, gemini, qwen, vibe, copilot, ollama
- Language-specific expert agents (python, typescript, rust, go)
- 4 MCP servers: hanzo (Python), hanzo-node (Node), github, filesystem
- Subagent commands: /plan, /solve, /code, /review, /context
- Full sandbox and shell environment configuration
- API key documentation in header comments
2026-01-17 09:10:11 -08:00

327 lines
9.7 KiB
TOML

# ==============================================================================
# Hanzo Dev Configuration Example
# ==============================================================================
#
# Copy this file to ~/.hanzo/config.toml (or ~/.code/config.toml)
#
# Environment Variables for API Keys:
# -----------------------------------
# ANTHROPIC_API_KEY - For Claude CLI (or use 'claude login')
# OPENAI_API_KEY - For Codex/GPT (or use ChatGPT auth)
# GOOGLE_API_KEY - For Gemini CLI
# DASHSCOPE_API_KEY - For Qwen CLI (Alibaba)
# MISTRAL_API_KEY - For Vibe CLI
# GH_TOKEN - For GitHub Copilot (or use 'gh auth login')
#
# MCP Server Auth:
# ----------------
# HANZO_API_KEY - For Hanzo MCP server authentication
# GITHUB_PERSONAL_ACCESS_TOKEN - For GitHub MCP server
#
# ==============================================================================
# ==============================================================================
# Hanzo Dev Configuration
# ==============================================================================
# Trusted Projects
[projects."/Users/z/work/lux"]
trust_level = "trusted"
[projects."/Users/z/work/hanzo"]
trust_level = "trusted"
[projects."/Users/z/work/secretmenu/sfsecretmenu"]
trust_level = "trusted"
[notice]
hide_rate_limit_model_nudge = true
# ==============================================================================
# MCP Servers - Native Tool Providers
# ==============================================================================
# Hanzo Python MCP - Full tool suite (50+ tools)
[mcp_servers.hanzo]
command = "hanzo-mcp"
args = ["serve", "--enable-agent"]
startup_timeout_sec = 15
tool_timeout_sec = 60
env = { HANZO_MCP_LOG_LEVEL = "info" }
# Hanzo Node MCP - Alternative with UI tools
[mcp_servers.hanzo-node]
command = "npx"
args = ["-y", "@hanzo/mcp", "serve"]
startup_timeout_sec = 10
tool_timeout_sec = 30
# GitHub MCP - For repo/PR/issue operations
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_PERSONAL_ACCESS_TOKEN = "" } # Set via GH_TOKEN env
# Filesystem MCP - Sandboxed file access
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/Users/z/work"]
# ==============================================================================
# Agent Backends - External AI CLIs
# ==============================================================================
# Claude Code - Primary agent
[[agents]]
name = "claude"
command = "claude"
enabled = true
read_only = false
description = "Claude AI - Strong reasoning, coding, and multi-file edits"
args = ["--dangerously-skip-permissions"]
[[agents]]
name = "claude-safe"
command = "claude"
enabled = true
read_only = true
description = "Claude AI in read-only mode"
args = []
# OpenAI Codex/GPT
[[agents]]
name = "codex"
command = "codex"
enabled = true
read_only = false
description = "OpenAI Codex - Fast coding agent"
args = ["-s", "workspace-write", "-a", "never"]
# Google Gemini
[[agents]]
name = "gemini"
command = "gemini"
enabled = true
read_only = false
description = "Google Gemini - Long context and multimodal"
args = ["-y"]
[[agents]]
name = "gemini-safe"
command = "gemini"
enabled = true
read_only = true
description = "Gemini in read-only mode"
args = []
# Alibaba Qwen
[[agents]]
name = "qwen"
command = "qwen"
enabled = true
read_only = false
description = "Qwen Coder - Strong at code generation"
args = ["-y"]
[[agents]]
name = "qwen-safe"
command = "qwen"
enabled = true
read_only = true
description = "Qwen in read-only mode"
args = []
# Mistral Vibe
[[agents]]
name = "vibe"
command = "vibe"
enabled = true
read_only = false
description = "Mistral Vibe - Fast coding assistance"
args = ["-y"]
[[agents]]
name = "vibe-safe"
command = "vibe"
enabled = true
read_only = true
description = "Vibe in read-only mode"
args = []
# GitHub Copilot
[[agents]]
name = "copilot"
command = "gh"
enabled = true
read_only = false
description = "GitHub Copilot - Authenticated via gh CLI"
args = ["copilot"]
[[agents]]
name = "copilot-safe"
command = "gh"
enabled = true
read_only = true
description = "Copilot in read-only mode"
args = ["copilot"]
# Ollama (local models)
[[agents]]
name = "ollama"
command = "ollama"
enabled = true
read_only = false
description = "Local LLM via Ollama"
args = ["run", "codellama"]
# ==============================================================================
# Language-Specific Agents
# ==============================================================================
[[agents]]
name = "python-expert"
command = "claude"
args = ["--model", "sonnet"]
description = "Python 3.12+ expert with modern tooling (uv, ruff, pydantic)"
enabled = true
instructions = "You are a Python expert. Use modern Python 3.12+ features, type hints, and tools like uv, ruff, and pydantic."
[[agents]]
name = "typescript-expert"
command = "claude"
args = ["--model", "sonnet"]
description = "TypeScript expert with strict types and modern patterns"
enabled = true
instructions = "You are a TypeScript expert. Use strict mode, advanced types, and modern ES2024 features."
[[agents]]
name = "rust-expert"
command = "claude"
args = ["--model", "sonnet"]
description = "Rust expert with async patterns and systems programming"
enabled = true
instructions = "You are a Rust expert. Follow Rust idioms, use Result/Option properly, and leverage the type system."
[[agents]]
name = "go-expert"
command = "claude"
args = ["--model", "sonnet"]
description = "Go expert with concurrency and clean architecture"
enabled = true
instructions = "You are a Go expert. Use idiomatic Go, proper error handling, and effective concurrency patterns."
# ==============================================================================
# Context Collector (long-context sweeps)
# ==============================================================================
[[agents]]
name = "context-collector"
command = "gemini"
enabled = true
read_only = true
description = "Gemini 2.5 long-context for repository analysis"
args = ["-y", "--model", "gemini-2.5-pro-exp"]
# ==============================================================================
# Subagent Commands - Multi-Agent Orchestration
# ==============================================================================
[subagents]
# /plan - Read-only planning with all agents
[[subagents.commands]]
name = "plan"
read_only = true
agents = ["claude", "gemini", "qwen", "copilot", "vibe"]
orchestrator_instructions = "Fan out to all agents for planning. Synthesize diverse perspectives into actionable plan."
agent_instructions = "Analyze the codebase and propose a detailed plan. Cite specific files and rationale."
# /solve - Read-only problem solving
[[subagents.commands]]
name = "solve"
read_only = true
agents = ["claude", "gemini", "qwen", "copilot", "vibe"]
orchestrator_instructions = "Have each agent propose solutions independently. Compare and select best approach."
agent_instructions = "Propose a concrete solution with implementation steps. Include validation approach."
# /code - Write-enabled implementation
[[subagents.commands]]
name = "code"
read_only = false
agents = ["claude", "codex", "gemini", "qwen", "vibe"]
orchestrator_instructions = "Coordinate implementation across agents. Each works in isolated worktree."
agent_instructions = "Implement the requested changes. Write minimal, focused code with tests."
# /review - Multi-agent code review
[[subagents.commands]]
name = "review"
read_only = true
agents = ["claude", "gemini", "qwen", "copilot", "vibe"]
orchestrator_instructions = "Each agent reviews independently. Reconcile feedback into actionable items."
agent_instructions = "Review for bugs, security issues, and improvements. Cite file:line precisely."
# /context - Repository context gathering
[[subagents.commands]]
name = "context"
read_only = true
agents = ["context-collector", "claude"]
orchestrator_instructions = "Sweep repository for relevant context before main task."
agent_instructions = "Summarize key files, architecture, and dependencies. Keep concise."
# Language-specific commands
[[subagents.commands]]
name = "python"
agents = ["python-expert", "claude", "codex"]
read_only = false
orchestrator_instructions = "Execute Python development tasks using language experts"
[[subagents.commands]]
name = "typescript"
agents = ["typescript-expert", "claude", "codex"]
read_only = false
orchestrator_instructions = "Execute TypeScript development tasks using language experts"
[[subagents.commands]]
name = "rust"
agents = ["rust-expert", "claude", "codex"]
read_only = false
orchestrator_instructions = "Execute Rust development tasks using language experts"
[[subagents.commands]]
name = "go"
agents = ["go-expert", "claude", "codex"]
read_only = false
orchestrator_instructions = "Execute Go development tasks using language experts"
# ==============================================================================
# Sandbox Configuration
# ==============================================================================
sandbox_mode = "workspace-write"
[sandbox_workspace_write]
writable_roots = ["."]
network_access = true
exclude_tmpdir_env_var = false
exclude_slash_tmp = false
# ==============================================================================
# Shell Environment
# ==============================================================================
[shell_environment_policy]
inherit = "all"
ignore_default_excludes = false
exclude = ["*SECRET*", "*PASSWORD*", "*CREDENTIAL*", "*PRIVATE*"]
set = { EDITOR = "vim", PAGER = "less" }
# ==============================================================================
# History & UI
# ==============================================================================
[history]
persistence = "save-all"
max_bytes = 10485760 # 10MB
file_opener = "cursor" # vscode, cursor, windsurf, none