1{
2 "$schema": "http://json-schema.org/draft-07/schema#",
3 "definitions": {
4 "agent": {
5 "description": "Agent configuration",
6 "properties": {
7 "maxTokens": {
8 "description": "Maximum tokens for the agent",
9 "minimum": 1,
10 "type": "integer"
11 },
12 "model": {
13 "description": "Model ID for the agent",
14 "enum": [
15 "gpt-4.1",
16 "llama-3.3-70b-versatile",
17 "azure.gpt-4.1",
18 "openrouter.gpt-4o",
19 "openrouter.o1-mini",
20 "openrouter.claude-3-haiku",
21 "claude-3-opus",
22 "gpt-4o",
23 "gpt-4o-mini",
24 "o1",
25 "meta-llama/llama-4-maverick-17b-128e-instruct",
26 "azure.o3-mini",
27 "openrouter.gpt-4o-mini",
28 "openrouter.o1",
29 "claude-3.5-haiku",
30 "o4-mini",
31 "azure.gpt-4.1-mini",
32 "openrouter.o3",
33 "grok-3-beta",
34 "o3-mini",
35 "qwen-qwq",
36 "azure.o1",
37 "openrouter.gemini-2.5-flash",
38 "openrouter.gemini-2.5",
39 "o1-mini",
40 "azure.gpt-4o",
41 "openrouter.gpt-4.1-mini",
42 "openrouter.claude-3.5-sonnet",
43 "openrouter.o3-mini",
44 "gpt-4.1-mini",
45 "gpt-4.5-preview",
46 "gpt-4.1-nano",
47 "deepseek-r1-distill-llama-70b",
48 "azure.gpt-4o-mini",
49 "openrouter.gpt-4.1",
50 "bedrock.claude-3.7-sonnet",
51 "claude-3-haiku",
52 "o3",
53 "gemini-2.0-flash-lite",
54 "azure.o3",
55 "azure.gpt-4.5-preview",
56 "openrouter.claude-3-opus",
57 "grok-3-mini-fast-beta",
58 "claude-4-sonnet",
59 "azure.o4-mini",
60 "grok-3-fast-beta",
61 "claude-3.5-sonnet",
62 "azure.o1-mini",
63 "openrouter.claude-3.7-sonnet",
64 "openrouter.gpt-4.5-preview",
65 "grok-3-mini-beta",
66 "claude-3.7-sonnet",
67 "gemini-2.0-flash",
68 "openrouter.deepseek-r1-free",
69 "vertexai.gemini-2.5-flash",
70 "vertexai.gemini-2.5",
71 "o1-pro",
72 "gemini-2.5",
73 "meta-llama/llama-4-scout-17b-16e-instruct",
74 "azure.gpt-4.1-nano",
75 "openrouter.gpt-4.1-nano",
76 "gemini-2.5-flash",
77 "openrouter.o4-mini",
78 "openrouter.claude-3.5-haiku",
79 "claude-4-opus",
80 "openrouter.o1-pro"
81 ],
82 "type": "string"
83 },
84 "reasoningEffort": {
85 "description": "Reasoning effort for models that support it (OpenAI, Anthropic)",
86 "enum": [
87 "low",
88 "medium",
89 "high"
90 ],
91 "type": "string"
92 }
93 },
94 "required": [
95 "model"
96 ],
97 "type": "object"
98 }
99 },
100 "description": "Configuration schema for the Crush application",
101 "properties": {
102 "agents": {
103 "additionalProperties": {
104 "description": "Agent configuration",
105 "properties": {
106 "maxTokens": {
107 "description": "Maximum tokens for the agent",
108 "minimum": 1,
109 "type": "integer"
110 },
111 "model": {
112 "description": "Model ID for the agent",
113 "enum": [
114 "gpt-4.1",
115 "llama-3.3-70b-versatile",
116 "azure.gpt-4.1",
117 "openrouter.gpt-4o",
118 "openrouter.o1-mini",
119 "openrouter.claude-3-haiku",
120 "claude-3-opus",
121 "gpt-4o",
122 "gpt-4o-mini",
123 "o1",
124 "meta-llama/llama-4-maverick-17b-128e-instruct",
125 "azure.o3-mini",
126 "openrouter.gpt-4o-mini",
127 "openrouter.o1",
128 "claude-3.5-haiku",
129 "o4-mini",
130 "azure.gpt-4.1-mini",
131 "openrouter.o3",
132 "grok-3-beta",
133 "o3-mini",
134 "qwen-qwq",
135 "azure.o1",
136 "openrouter.gemini-2.5-flash",
137 "openrouter.gemini-2.5",
138 "o1-mini",
139 "azure.gpt-4o",
140 "openrouter.gpt-4.1-mini",
141 "openrouter.claude-3.5-sonnet",
142 "openrouter.o3-mini",
143 "gpt-4.1-mini",
144 "gpt-4.5-preview",
145 "gpt-4.1-nano",
146 "deepseek-r1-distill-llama-70b",
147 "azure.gpt-4o-mini",
148 "openrouter.gpt-4.1",
149 "bedrock.claude-3.7-sonnet",
150 "claude-3-haiku",
151 "o3",
152 "gemini-2.0-flash-lite",
153 "azure.o3",
154 "azure.gpt-4.5-preview",
155 "openrouter.claude-3-opus",
156 "grok-3-mini-fast-beta",
157 "claude-4-sonnet",
158 "azure.o4-mini",
159 "grok-3-fast-beta",
160 "claude-3.5-sonnet",
161 "azure.o1-mini",
162 "openrouter.claude-3.7-sonnet",
163 "openrouter.gpt-4.5-preview",
164 "grok-3-mini-beta",
165 "claude-3.7-sonnet",
166 "gemini-2.0-flash",
167 "openrouter.deepseek-r1-free",
168 "vertexai.gemini-2.5-flash",
169 "vertexai.gemini-2.5",
170 "o1-pro",
171 "gemini-2.5",
172 "meta-llama/llama-4-scout-17b-16e-instruct",
173 "azure.gpt-4.1-nano",
174 "openrouter.gpt-4.1-nano",
175 "gemini-2.5-flash",
176 "openrouter.o4-mini",
177 "openrouter.claude-3.5-haiku",
178 "claude-4-opus",
179 "openrouter.o1-pro"
180 ],
181 "type": "string"
182 },
183 "reasoningEffort": {
184 "description": "Reasoning effort for models that support it (OpenAI, Anthropic)",
185 "enum": [
186 "low",
187 "medium",
188 "high"
189 ],
190 "type": "string"
191 }
192 },
193 "required": [
194 "model"
195 ],
196 "type": "object"
197 },
198 "description": "Agent configurations",
199 "properties": {
200 "coder": {
201 "$ref": "#/definitions/agent"
202 },
203 "task": {
204 "$ref": "#/definitions/agent"
205 },
206 "title": {
207 "$ref": "#/definitions/agent"
208 }
209 },
210 "type": "object"
211 },
212 "contextPaths": {
213 "default": [
214 ".github/copilot-instructions.md",
215 ".cursorrules",
216 ".cursor/rules/",
217 "CLAUDE.md",
218 "CLAUDE.local.md",
219 "crush.md",
220 "crush.local.md",
221 "Crush.md",
222 "Crush.local.md",
223 "CRUSH.md",
224 "CRUSH.local.md"
225 ],
226 "description": "Context paths for the application",
227 "items": {
228 "type": "string"
229 },
230 "type": "array"
231 },
232 "data": {
233 "description": "Storage configuration",
234 "properties": {
235 "directory": {
236 "default": ".crush",
237 "description": "Directory where application data is stored",
238 "type": "string"
239 }
240 },
241 "required": [
242 "directory"
243 ],
244 "type": "object"
245 },
246 "debug": {
247 "default": false,
248 "description": "Enable debug mode",
249 "type": "boolean"
250 },
251 "debugLSP": {
252 "default": false,
253 "description": "Enable LSP debug mode",
254 "type": "boolean"
255 },
256 "lsp": {
257 "additionalProperties": {
258 "description": "LSP configuration for a language",
259 "properties": {
260 "args": {
261 "description": "Command arguments for the LSP server",
262 "items": {
263 "type": "string"
264 },
265 "type": "array"
266 },
267 "command": {
268 "description": "Command to execute for the LSP server",
269 "type": "string"
270 },
271 "disabled": {
272 "default": false,
273 "description": "Whether the LSP is disabled",
274 "type": "boolean"
275 },
276 "options": {
277 "description": "Additional options for the LSP server",
278 "type": "object"
279 }
280 },
281 "required": [
282 "command"
283 ],
284 "type": "object"
285 },
286 "description": "Language Server Protocol configurations",
287 "type": "object"
288 },
289 "mcpServers": {
290 "additionalProperties": {
291 "description": "MCP server configuration",
292 "properties": {
293 "args": {
294 "description": "Command arguments for the MCP server",
295 "items": {
296 "type": "string"
297 },
298 "type": "array"
299 },
300 "command": {
301 "description": "Command to execute for the MCP server",
302 "type": "string"
303 },
304 "env": {
305 "description": "Environment variables for the MCP server",
306 "items": {
307 "type": "string"
308 },
309 "type": "array"
310 },
311 "headers": {
312 "additionalProperties": {
313 "type": "string"
314 },
315 "description": "HTTP headers for SSE type MCP servers",
316 "type": "object"
317 },
318 "type": {
319 "default": "stdio",
320 "description": "Type of MCP server",
321 "enum": [
322 "stdio",
323 "sse"
324 ],
325 "type": "string"
326 },
327 "url": {
328 "description": "URL for SSE type MCP servers",
329 "type": "string"
330 }
331 },
332 "required": [
333 "command"
334 ],
335 "type": "object"
336 },
337 "description": "Model Control Protocol server configurations",
338 "type": "object"
339 },
340 "providers": {
341 "additionalProperties": {
342 "description": "Provider configuration",
343 "properties": {
344 "apiKey": {
345 "description": "API key for the provider",
346 "type": "string"
347 },
348 "disabled": {
349 "default": false,
350 "description": "Whether the provider is disabled",
351 "type": "boolean"
352 },
353 "provider": {
354 "description": "Provider type",
355 "enum": [
356 "anthropic",
357 "openai",
358 "gemini",
359 "groq",
360 "openrouter",
361 "bedrock",
362 "azure",
363 "vertexai"
364 ],
365 "type": "string"
366 }
367 },
368 "type": "object"
369 },
370 "description": "LLM provider configurations",
371 "type": "object"
372 },
373 "tui": {
374 "description": "Terminal User Interface configuration",
375 "properties": {
376 "theme": {
377 "default": "crush",
378 "description": "TUI theme name",
379 "enum": [
380 "crush",
381 "catppuccin",
382 "dracula",
383 "flexoki",
384 "gruvbox",
385 "monokai",
386 "onedark",
387 "tokyonight",
388 "tron"
389 ],
390 "type": "string"
391 }
392 },
393 "type": "object"
394 },
395 "wd": {
396 "description": "Working directory for the application",
397 "type": "string"
398 }
399 },
400 "title": "Crush Configuration",
401 "type": "object"
402}