Ctrl K
ComunidadGuías…

config.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# CianaParrot Configuration

agent:
  workspace: "./workspace"
  data_dir: "./data"
  max_tool_iterations: 42

provider:
  name: "anthropic"              # anthropic | openai | openrouter | ollama | vllm | groq | google-genai
  model: "claude-sonnet-4-6"
  api_key: "${ANTHROPIC_API_KEY}"
  temperature: 0
  max_tokens: 8192
  # For OpenRouter/vLLM:
  # base_url: "https://openrouter.ai/api/v1"
  # For Ollama:
  # base_url: "http://localhost:11434"

# Model router — multi-tier LLM support with in-chat model switching.
# When enabled, wraps the agent in a RoutingChatModel that switches between
# tier models via the switch_model tool. Scheduled tasks can specify a
# model_tier to run on a specific tier with full tools/memory.
# Override in config.local.yaml (gitignored) to activate with your models.
# model_router:
#   enabled: true
#   default_tier: "standard"    # Tier used by default (must exist in tiers)
#   tiers:
#     lite:
#       name: "openai"
#       model: "gpt-4o-mini"
#       api_key: "${OPENAI_API_KEY}"
#     standard:
#       name: "openai"
#       model: "gpt-4o"
#       api_key: "${OPENAI_API_KEY}"
#     advanced:
#       name: "anthropic"
#       model: "claude-sonnet-4-6"
#       api_key: "${ANTHROPIC_API_KEY}"
#     expert:
#       name: "anthropic"
#       model: "claude-opus-4-6"
#       api_key: "${ANTHROPIC_API_KEY}"

channels:
  telegram:
    enabled: true
    token: "${TELEGRAM_BOT_TOKEN}"
    trigger: "@Ciana"
    allowed_users: []            # Empty = allow all

scheduler:
  enabled: true
  poll_interval: 60              # Seconds between task checks
  data_file: "./data/scheduled_tasks.json"

mcp_servers: {}
#  filesystem:
#    transport: "stdio"
#    command: "npx"
#    args: ["-y", "@modelcontextprotocol/server-filesystem", "/data"]

skills:
  directory: "skills"    # Virtual path relative to workspace
  enabled: true

web:
  brave_api_key: "${BRAVE_API_KEY}"  # Optional, falls back to DuckDuckGo
  fetch_timeout: 42

transcription:
  enabled: true
  provider: "openai"
  model: "whisper-1"
  api_key: "${OPENAI_API_KEY}"
  timeout: 30

gateway:
  enabled: true
  url: "http://host.docker.internal:9842"
  token: "${GATEWAY_TOKEN}"
  port: 9842
  default_timeout: 30
  bridges:
    claude-code:
      allowed_commands: ["claude"]
      allowed_cwd: ["~/Documents", "~/Projects"]
    apple-reminders:
      allowed_commands: ["remindctl"]
    things:
      allowed_commands: ["things"]
    spotify:
      allowed_commands: ["spogo"]
    sonos:
      allowed_commands: ["sonos"]
    imessage:
      allowed_commands: ["imsg"]
    bear-notes:
      allowed_commands: ["grizzly"]
    obsidian:
      allowed_commands: ["obsidian-cli"]
    openhue:
      allowed_commands: ["openhue"]
    camsnap:
      allowed_commands: ["camsnap"]
    peekaboo:
      allowed_commands: ["peekaboo"]
    blucli:
      allowed_commands: ["blu"]
    whatsapp:
      allowed_commands: ["wacli", "wacli-daemon"]
    1password:
      allowed_commands: ["op"]

claude_code:
  enabled: true
  bridge_url: "http://host.docker.internal:9842"    # Host gateway for Claude Code execution
  bridge_token: "${CC_BRIDGE_TOKEN}"                 # Auth token (must match gateway)
  projects_dir: "/app/.claude-projects"              # Mounted read-only from host ~/.claude/projects
  permission_mode: "bypassPermissions"               # Auto-approve (non-interactive -p mode)
  timeout: 0                                         # 0 = no timeout (wait indefinitely)
  # claude_path: "claude"                           # Path to claude binary (local mode only)

logging:
  level: "INFO"                  # DEBUG | INFO | WARNING | ERROR