# CheddahBot Configuration # Chat model (for UI conversations - needs OpenRouter key or local model) chat_model: "openai/gpt-4o-mini" # Execution model (Claude Code CLI - uses Max subscription for heartbeat/scheduler) default_model: "claude-sonnet-4.5" # Gradio server settings host: "0.0.0.0" port: 7860 # Memory settings memory: max_context_messages: 50 # Messages kept in context window flush_threshold: 40 # Trigger summary when messages exceed this embedding_model: "all-MiniLM-L6-v2" search_top_k: 5 # Number of semantic search results # Scheduler settings scheduler: heartbeat_interval_minutes: 30 poll_interval_seconds: 60 # Local model endpoints (auto-detected) ollama_url: "http://localhost:11434" lmstudio_url: "http://localhost:1234" # Safety settings shell: blocked_commands: - "rm -rf /" - "format" - ":(){:|:&};:" require_approval: false # If true, shell commands need user confirmation # Email delivery (credentials in .env, not here) email: smtp_host: "smtp.gmail.com" smtp_port: 465 # ClickUp integration clickup: poll_interval_minutes: 20 # 3x per hour poll_statuses: ["to do", "outline approved"] review_status: "internal review" pr_review_status: "pr needs review" in_progress_status: "in progress" automation_status: "automation underway" error_status: "error" task_type_field_name: "Work Category" default_auto_execute: false skill_map: "Press Release": tool: "write_press_releases" auto_execute: true required_fields: [topic, company_name, target_url] field_mapping: topic: "PR Topic" company_name: "Customer" target_url: "IMSURL" branded_url: "SocialURL" "On Page Optimization": tool: "create_content" auto_execute: false required_fields: [keyword, url] field_mapping: url: "IMSURL" keyword: "Keyword" cli_flags: "CLIFlags" "Content Creation": tool: "create_content" auto_execute: false field_mapping: url: "IMSURL" keyword: "Keyword" cli_flags: "CLIFlags" "Link Building": tool: "run_link_building" auto_execute: false complete_status: "complete" error_status: "error" field_mapping: lb_method: "LB Method" project_name: "task_name" money_site_url: "IMSURL" custom_anchors: "CustomAnchors" branded_plus_ratio: "BrandedPlusRatio" cli_flags: "CLIFlags" xlsx_path: "CoraFile" # Link Building settings link_building: blm_dir: "E:/dev/Big-Link-Man" watch_folder: "Z:/cora-inbox" watch_interval_minutes: 60 default_branded_plus_ratio: 0.7 # AutoCora job submission autocora: jobs_dir: "//PennQnap1/SHARE1/AutoCora/jobs" results_dir: "//PennQnap1/SHARE1/AutoCora/results" poll_interval_minutes: 20 success_status: "running cora" error_status: "error" enabled: true cora_human_inbox: "Z:/Cora-For-Human" # Content creation settings content: cora_inbox: "Z:/content-cora-inbox" outline_dir: "Z:/content-outlines" # ntfy.sh push notifications ntfy: enabled: true channels: - name: human_action topic_env_var: NTFY_TOPIC_HUMAN_ACTION categories: [clickup, autocora, linkbuilding, content] include_patterns: ["completed", "SUCCESS", "copied to"] priority: high tags: white_check_mark - name: errors topic_env_var: NTFY_TOPIC_ERRORS categories: [clickup, autocora, linkbuilding, content] include_patterns: ["failed", "FAILURE", "skipped", "no ClickUp match", "copy failed", "IMSURL is empty"] priority: urgent tags: rotating_light # Multi-agent configuration # Each agent gets its own personality, tool whitelist, and memory scope. # The first agent is the default. Omit this section for single-agent mode. agents: - name: default display_name: CheddahBot # tools: null = all tools, [] = no tools # skills: null = auto (all skills matching agent name) # memory_scope: "" = shared memory - name: writer display_name: Writing Agent personality_file: "" # future: identity/WRITER.md skills: [press-release-writer, press-release-schema] tools: [write_press_releases, submit_press_release, delegate_task, remember, search_memory] memory_scope: "" # shares memory with default - name: researcher display_name: Research Agent personality_file: "" # future: identity/RESEARCHER.md tools: [web_search, web_fetch, delegate_task, remember, search_memory] memory_scope: "" - name: ops display_name: Ops Agent personality_file: "" # future: identity/OPS.md tools: [run_command, delegate_task, list_files, read_file, remember, search_memory] memory_scope: "" - name: link_builder display_name: Link Builder tools: [run_link_building, run_cora_backlinks, blm_ingest_cora, blm_generate_batch, scan_cora_folder, submit_autocora_jobs, poll_autocora_results, delegate_task, remember, search_memory] memory_scope: "" - name: content_creator display_name: Content Creator tools: [create_content, continue_content, delegate_task, remember, search_memory, web_search, web_fetch] memory_scope: "" - name: planner display_name: Planner model: "x-ai/grok-4.1-fast" tools: [delegate_task, remember, search_memory, report_issue, web_search] memory_scope: "" # API budget alerts api_budget: monthly_limit: 20.00 # USD - alert when exceeded alert_threshold: 0.8 # alert at 80% of limit