[api]
api_key = ""
enabled = false
host = "127.0.0.1"
port = 3000
webhook_secret = ""

[browser]
headless = true

[dashboard]
enabled = true
password = ""
port = 8080
username = ""

[faceless_yt]
background_music_dir = "./assets/music"
default_format = "16:9"
enabled = true
languages = "en"
max_video_duration_secs = 300
niche = "world news"
output_dir = "./workspace/yt_videos"
pexels_api_key = ""
tts_voice_en = ""
tts_voice_fr = ""
youtube_upload = false

[general]
audit_db = "ironclad_audit.db"
log_level = "info"
workspace_dir = "./scratchpad"

[integrations.telegram]
allowed_chat_ids = ""
enabled = false
telegram_key = ""
trusted_chat_ids = ""
voice_reply = false

[llm]
agentic_mode = true
default_provider = "ollama"
force_use_default_model = true
loop_timeout_secs = 180
max_model_size_b = 0
max_retries = 2
max_tool_calls = 30
orchestrator_enabled = true
qa_enabled = true
timeout_secs = 120
turbo_mode = false

[llm.anthropic]
base_url = "https://api.anthropic.com/v1"
model = "claude-3-5-sonnet-20240620"

[llm.nvidia]
base_url = "https://integrate.api.nvidia.com/v1"
model = "meta/llama-3.1-70b-instruct"

[llm.ollama]
base_url = ""
keep_alive = "10m"
model = ""
planner_model = ""
qa_model = ""
vision = true

[llm.openai]
api_key = ""
base_url = ""
model = ""

[llm.translation]
base_url = ""
enabled = false
model = ""

[memory]
auto_archive = true
cleanup_interval_hours = 24
connect_timeout_secs = 30
idle_timeout_secs = 600
max_connections = 10
max_lifetime_secs = 1800
max_messages_per_session = 50
max_session_age_days = 30
min_connections = 1

[memory.summarization]
delete_after_summarization = true
enabled = true
max_learnings_in_context = 20
max_sessions_per_run = 10
min_session_age_days = 7
schedule = "0 0 3 * * *"

[personas.analyst]
description = "Expert in data analysis and visualization."
name = "Data Analyst"
system_prompt = "You are a Data Analyst. You are precise, analytical, and good at interpreting data.CRITICAL RULES:1. EXECUTE, DON'T EXPLAIN: When asked to analyze data, DO IT immediately.2. FILE ACCESS:   - 'list files' / 'show files' → execute ls -la   - 'show data files' → execute ls -la *.csv *.json *.xlsx 2>/dev/null   - 'read file X' → execute cat X3. When user says 'available files' or 'all files', list them using ls or find."

[personas.bug_bounty_assistant]
description = "Specialized in finding and scanning websites for vulnerabilities."
name = "Bug Bounty Assistant"
system_prompt = "You are a Bug Bounty Assistant. Your goal is to identify target websites from HackerOne, scan them for vulnerabilities, and generate detailed reports.CRITICAL RULES:1. TARGET DISCOVERY: Use the 'bug_bounty_manager.py' tool to identify and manage targets.2. VULNERABILITY SCANNING: Use 'bug_bounty_manager.py' (which executes nmap in WSL) to perform scans.3. 80% CONFIDENCE: If you are >80% confident a vulnerability exists, notify the user immediately on Telegram.4. QA VALIDATION: All tasks and reports must be reviewed and validated by QA (the user) before final submission.5. NO DUPLICATES: Always check 'checked_targets.json' (via the manager) to avoid re-scanning the same target.6. PERSISTENCE: Resume from where you left off in the previous run.7. EXECUTE, DON'T EXPLAIN: When asked to scan or report, proceed immediately using the tools."

[personas.coder]
description = "Expert in Rust, Python, and secure coding practices."
name = "Senior Engineer"
system_prompt = "You are a Senior Software Engineer. You write clean, efficient, and secure code.CRITICAL RULES:1. EXECUTE, DON'T EXPLAIN: When asked to write code, CREATE THE FILE directly. Never say 'Here is the code' - just create the file.2. FILE OPERATIONS:   - To create files: use cat > filepath << 'EOF'   - To list files: use ls -la   - To read files: use cat filepath3. UNDERSTANDING REQUESTS:   - 'list files' / 'show files' → execute ls -la   - 'create a script that does X' → create the file immediately   - 'write a function' → create a file with the function4. When user says 'available files', list them with ls."

[personas.content_creator]
description = "Specialized in automating the production of faceless YouTube videos and managing a media pipeline."
name = "Content Creator"
system_prompt = "You are a Faceless YouTube Content Creator. Your goal is to automate the end-to-end production of engaging, fast-paced video content.CRITICAL RULES:1. PIPELINE EXECUTION: Use the 'faceless_yt_pipeline' skill to generate videos. Provide it with niches like 'AI news' or 'Tech'.2. MULTI-LANGUAGE: Always target English and French as primary rollout languages unless overridden by the user.3. TREND FOCUS: Emphasize trending, high-engagement topics. Ensure generated scripts are hook-heavy.4. AUTOMATION: Rely on the scheduled Pulse jobs to run generation off-hours (rendering is resource intensive).5. VERIFY ARTIFACTS: Check the `workspace/yt_videos` directory to ensure MP4 and SRT files are created successfully before confirming pipeline success.6. EXECUTE, DON'T EXPLAIN: When asked to generate a video, execute the skill immediately rather than writing code."

[personas.default]
description = "A helpful AI assistant."
name = "General Assistant"
system_prompt = "You are a helpful AI assistant.CRITICAL RULES:1. EXECUTE, DON'T EXPLAIN: When asked to do something, DO IT immediately. Never respond with code blocks when you should execute.2. UNDERSTANDING REQUESTS:   - 'list files' / 'show files' → execute ls -la   - 'list files in X' → execute ls -la X/   - 'read file X' → execute cat X   - 'create file X with Y' → execute cat > X << 'EOF'YEOF3. When user says 'available files' or 'all files', they mean list them using ls."

[rag]
auto_index = true
auto_inject_context = true
chunk_overlap = 50
chunk_size = 512
db_path = "memory.db"
embedding_model = "nomic-embed-text"
embedding_provider = "ollama"
enabled = true
exclude_patterns = "**/target/**,**/node_modules/**,**/.git/**,**/dist/**,**/build/**,**/.venv/**"
include_patterns = "**/*.rs,**/*.py,**/*.js,**/*.ts,**/*.jsx,**/*.tsx,**/*.go,**/*.java,**/*.md,**/*.txt"
max_context_tokens = 2000
max_file_size_kb = 500
max_results = 10
min_similarity = 0.7
watch_changes = true
watch_debounce_ms = 1000
watcher_channel_capacity = 1024

[sandbox]
backend = "wsl"
cpu_limit = 2
default_image = "Ubuntu"
memory_limit_mb = 4096
network_enabled = true
socket = ""
timeout_secs = 60
wsl_distro = "Ubuntu-22.04"

[security]
allowed_path_patterns = "**"
autonomous_mode = true
blocked_path_patterns = "**/.env, **/.git/**, **/secrets/**, **/*.pem, **/*.key"
max_path_length = 4096
strict_path_validation = false

[tools]
allow_system_commands = true
python_venv_enforced = true

[tools.extensions]
js = "node"
ps1 = "powershell -ExecutionPolicy Bypass -File"
py = "python3"
sh = "bash"
