Skip to content

Configuration

Maestro uses environment variables for runtime settings and YAML files for agent configuration.

Create a .env file in the project root:

Terminal window
cp .env.example .env
VariableDescription
ANTHROPIC_API_KEYYour Anthropic API key
VariableDefaultDescription
TELEGRAM_BOT_TOKENTelegram bot token from @BotFather
GITHUB_TOKENGitHub token for private repos
PORT3000REST API port
LOG_LEVELinfoLogging level (debug, info, warn, error)
DAILY_BUDGET_LIMITMaximum API cost per day in USD
MONTHLY_BUDGET_LIMITMaximum API cost per month in USD

Set spending limits to prevent runaway costs:

Terminal window
DAILY_BUDGET_LIMIT=10.00
MONTHLY_BUDGET_LIMIT=100.00

When limits are reached, Maestro will refuse new requests until the period resets.

Static agents are defined in YAML files under config/:

config/personal-assistant.yaml
name: personal-assistant
description: General-purpose assistant for everyday tasks
model:
provider: anthropic
name: claude-sonnet-4-20250514
temperature: 0.7
max_tokens: 4096
system_prompt: |
You are a helpful personal assistant. Be concise and helpful.
Use tools when they would help answer the user's question.
tools:
- calculator
- datetime
FieldRequiredDescription
nameYesUnique identifier for the agent
descriptionYesWhat this agent does (used by orchestrator for routing)
model.providerYesLLM provider (anthropic)
model.nameYesModel name (e.g., claude-sonnet-4-20250514)
model.temperatureNoResponse randomness (0-1, default: 0.7)
model.max_tokensNoMax response length (default: 4096)
system_promptYesInstructions for the agent
toolsNoList of tool names to enable
ToolDescription
calculatorEvaluate math expressions
datetimeGet current time/date with timezone
clone_projectClone a git repository
switch_projectSwitch between projects
list_projectsList all cloned projects
current_projectShow active project
claude_codeExecute coding tasks
create_agentCreate dynamic agents
update_agentModify agent configuration
list_agentsList all agents
delete_agentRemove dynamic agents

To clone private repositories:

  1. Go to github.com/settings/tokens
  2. Generate new token (classic)
  3. Select the repo scope
  4. Add to .env:
Terminal window
GITHUB_TOKEN=ghp_xxxxx

This token works for all repositories you have access to, including organization repos.

maestro/
├── config/ # Agent YAML files
├── data/ # SQLite database (auto-created)
├── logs/ # Log files (auto-created)
├── projects/ # Cloned repositories (auto-created)
└── .env # Environment configuration

All data directories are gitignored by default.