-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathconfig.yaml.example
More file actions
193 lines (168 loc) · 7.47 KB
/
Copy pathconfig.yaml.example
File metadata and controls
193 lines (168 loc) · 7.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# NERF Configuration
# Copy to config.yaml (project root) or ~/.config/nerf/config.yaml
#
# Precedence: env vars > project config > user config (~/.config/nerf/config.yaml)
#
# All LLM operations route through pi-mono (@nerf/pi-ai). 26 providers supported.
# Supports ${VAR} and ${VAR:-default} environment variable substitution.
#
# Environment variable overrides:
# LLM_BACKEND overrides llm_backend
# ANTHROPIC_API_KEY overrides claude.api_key
# OPENAI_API_KEY overrides openai.api_key
# OPENROUTER_API_KEY overrides openrouter.api_key
# GEMINI_API_KEY overrides google.api_key
# OLLAMA_BASE_URL overrides ollama.base_url
# NERF_API_SECRET overrides auto-generated REST API secret
# NERF_DEBUG enable debug logging (set to "1")
# Active backend. Options:
# claude — Anthropic Claude (API key or OAuth)
# ollama — Local Ollama server (free, no API key required)
# openai — OpenAI GPT models
# openai-compat — Any OpenAI-compatible endpoint: LM Studio, vLLM, Groq, Together, etc.
# openrouter — 200+ models via OpenRouter
# google — Google Gemini (API key)
# mistral — Mistral AI
# pi-ai — Direct pi-ai provider spec (most flexible)
llm_backend: claude
# ---------------------------------------------------------------------------
# Backend Configurations
# ---------------------------------------------------------------------------
# -- Anthropic Claude -------------------------------------------------------
# API key OR OAuth (no key needed if authenticated via `nerf setup`).
# OAuth credentials are stored in ~/.nerf/agent/auth.json and auto-refreshed.
claude:
api_key: "${ANTHROPIC_API_KEY}" # Leave empty to use OAuth
model: "claude-sonnet-4-6"
timeout: 120
# -- Ollama (local, free) ---------------------------------------------------
# Install: https://ollama.ai
# Start: ollama serve
# Models: ollama pull qwen2.5:32b
#
# Recommended models:
# qwen3-coder:30b — Qwen3 Coder 30B MoE (3.3B activated) — strong code + reasoning
# qwen2.5:32b — previous gen, good general purpose baseline
# qwen2.5-coder:32b — optimized for code tasks (prev gen)
# llama3.3:70b — Meta's latest, requires 48GB+ RAM
# deepseek-r1:32b — strong reasoning model
ollama:
base_url: "${OLLAMA_BASE_URL:-http://127.0.0.1:11434/v1}"
model: "nerf" # local NERF persona built via: ollama create nerf -f Modelfile
timeout: 300
# -- LM Studio --------------------------------------------------------------
# Use for models not available in Ollama (heretic/uncensored models, custom GGUF).
# Install: https://lmstudio.ai/download
#
# Starting the server:
# GUI: Local Server tab → Start Server (default port 1234)
# CLI: lms server start --port 1234 (requires LM Studio app running)
# Headless Linux: DISPLAY=:0 lm-studio --no-sandbox & && lms server start
#
# To use LM Studio as backend, set llm_backend: openai-compat and configure below.
# -- OpenAI -----------------------------------------------------------------
openai:
api_key: "${OPENAI_API_KEY}"
model: "gpt-4o"
timeout: 120
# -- OpenRouter (200+ models) -----------------------------------------------
# Models: https://openrouter.ai/models
# Useful for: DeepSeek R1, Qwen, Llama, Claude, GPT-4o — all via one key.
openrouter:
api_key: "${OPENROUTER_API_KEY}"
model: "anthropic/claude-3.5-sonnet"
timeout: 120
# -- Google Gemini ----------------------------------------------------------
google:
api_key: "${GEMINI_API_KEY}"
model: "gemini-2.5-flash"
timeout: 120
# -- Mistral AI -------------------------------------------------------------
mistral:
api_key: "${MISTRAL_API_KEY}"
model: "mistral-large-latest"
timeout: 120
# -- OpenAI-Compatible Endpoint ---------------------------------------------
# Works with: LM Studio, vLLM, Groq, Together AI, Cerebras, Ollama (alt), any local server.
#
# LM Studio example:
# base_url: "http://127.0.0.1:1234/v1"
# api_key: "lm-studio" # any non-empty string
# model: "your-model-name" # must match the loaded model in LM Studio
#
# Groq example:
# base_url: "https://api.groq.com/openai/v1"
# api_key: "${GROQ_API_KEY}"
# model: "llama-3.3-70b-versatile"
#
# vLLM example:
# base_url: "http://your-server:8000/v1"
# api_key: "EMPTY"
# model: "meta-llama/Llama-3-70b-instruct"
openai-compat:
base_url: ""
api_key: ""
model: ""
timeout: 300
# -- Direct pi-ai provider spec (most flexible) ----------------------------
# provider: anthropic | openai | google | mistral | groq | xai | huggingface
# bedrock | azure | vertex | ollama | lmstudio | openrouter
# cerebras | together | perplexity | cohere | fireworks | deepseek
pi-ai:
provider: "anthropic"
model: "claude-sonnet-4-6"
# ---------------------------------------------------------------------------
# Per-Phase Model Routing
# ---------------------------------------------------------------------------
# Use expensive models where quality matters (planning), fast/cheap for research.
# Mix local and cloud freely. Prefix with provider/ for explicit routing.
#
# Examples:
# "claude-opus-4-6" — Anthropic direct
# "openrouter/deepseek/deepseek-r1" — via OpenRouter
# "ollama/qwen2.5:32b" — local Ollama
# "google/gemini-2.5-pro" — Google direct
models:
research: "claude-sonnet-4-6"
planning:
model: "claude-opus-4-6"
fallbacks:
- "openrouter/anthropic/claude-3.5-sonnet"
- "google/gemini-2.5-pro"
execution: "claude-sonnet-4-6"
completion: "claude-sonnet-4-6"
# ---------------------------------------------------------------------------
# Auto Mode Supervision
# ---------------------------------------------------------------------------
auto_supervisor:
soft_timeout_minutes: 20 # Warn and suggest compacting
idle_timeout_minutes: 10 # Stop if no progress detected
hard_timeout_minutes: 30 # Force stop
budget_ceiling: 50.00 # USD. Auto mode stops when reached.
# ---------------------------------------------------------------------------
# Verification
# ---------------------------------------------------------------------------
# Shell commands run after each task execution. Task fails if any exits non-zero.
verification_commands: []
# - "npm run lint"
# - "npm run test"
# - "pytest tests/"
verification_auto_fix: true # Retry with auto-fix on failure
verification_max_retries: 2 # Max retries per command
# ---------------------------------------------------------------------------
# Token Optimization
# ---------------------------------------------------------------------------
token_profile: balanced # budget | balanced | quality
# ---------------------------------------------------------------------------
# Engagement
# ---------------------------------------------------------------------------
unique_engagement_ids: true # Append random suffix to engagement IDs (prevents collisions)
auto_report: true # Generate report on engagement completion
# ---------------------------------------------------------------------------
# Signal Bot (optional)
# ---------------------------------------------------------------------------
signal:
signal_service: "${SIGNAL_SERVICE:-signal-api:8080}"
phone_number: "${SIGNAL_PHONE_NUMBER}"
whitelist: [] # Phone numbers allowed to interact with the bot
session_timeout: 3600 # Seconds before session history is cleared