191 lines
6.0 KiB
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
|