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