CheddahBot/config.yaml

191 lines
6.0 KiB
YAML

# 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"]
poll_task_types: ["Press Release", "On Page Optimization", "Content Creation", "Link Building"]
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"
keyword: "Keyword"
company_name: "Client"
target_url: "IMSURL"
branded_url: "SocialURL"
"On Page Optimization":
tool: "create_content"
auto_execute: false
trigger_hint: "content-cora-inbox file watcher"
required_fields: [keyword, url]
field_mapping:
url: "IMSURL"
keyword: "Keyword"
cli_flags: "CLIFlags"
"Content Creation":
tool: "create_content"
auto_execute: false
auto_execute_on_status: ["outline approved"]
trigger_hint: "content-cora-inbox file watcher (Phase 1), outline approved status (Phase 2)"
field_mapping:
url: "IMSURL"
keyword: "Keyword"
cli_flags: "CLIFlags"
"Link Building":
tool: "run_link_building"
auto_execute: false
trigger_hint: "cora-inbox file watcher"
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: "//PennQnap1/SHARE1/cora-inbox"
watch_interval_minutes: 10
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: "//PennQnap1/SHARE1/Cora-For-Human"
# Content creation settings
content:
cora_inbox: "//PennQnap1/SHARE1/content-cora-inbox"
outline_dir: "//PennQnap1/SHARE1/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
- name: daily_briefing
topic_env_var: NTFY_TOPIC_DAILY_BRIEFING
categories: [briefing]
priority: high
tags: clipboard
# 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