@charmland/crush 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -8
- package/package.json +25 -25
package/README.md
CHANGED
|
@@ -35,11 +35,15 @@ yay -S crush-bin
|
|
|
35
35
|
|
|
36
36
|
# Nix
|
|
37
37
|
nix run github:numtide/nix-ai-tools#crush
|
|
38
|
+
|
|
39
|
+
# Scoop
|
|
40
|
+
scoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git
|
|
41
|
+
scoop install crush
|
|
38
42
|
```
|
|
39
43
|
|
|
40
44
|
<details>
|
|
41
45
|
<summary><strong>Nix (NUR)</strong></summary>
|
|
42
|
-
|
|
46
|
+
|
|
43
47
|
Crush is available via [NUR](https://github.com/nix-community/NUR) in `nur.repos.charmbracelet.crush`.
|
|
44
48
|
|
|
45
49
|
You can also try out Crush via `nix-shell`:
|
|
@@ -138,19 +142,29 @@ Crush runs great with no configuration. That said, if you do need or want to
|
|
|
138
142
|
customize Crush, configuration can be added either local to the project itself,
|
|
139
143
|
or globally, with the following priority:
|
|
140
144
|
|
|
141
|
-
1.
|
|
142
|
-
2.
|
|
143
|
-
3. `$HOME/.config/crush/crush.json`
|
|
145
|
+
1. `.crush.json`
|
|
146
|
+
2. `crush.json`
|
|
147
|
+
3. `$HOME/.config/crush/crush.json` (Windows: `%USERPROFILE%\AppData\Local\crush\crush.json`)
|
|
144
148
|
|
|
145
149
|
Configuration itself is stored as a JSON object:
|
|
146
150
|
|
|
147
151
|
```json
|
|
148
152
|
{
|
|
149
|
-
"this-setting": { }
|
|
150
|
-
"that-setting":
|
|
153
|
+
"this-setting": {"this": "that"},
|
|
154
|
+
"that-setting": ["ceci", "cela"]
|
|
151
155
|
}
|
|
152
156
|
```
|
|
153
157
|
|
|
158
|
+
As an additional note, Crush also stores ephemeral data, such as application state, in one additional location:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Unix
|
|
162
|
+
$HOME/.local/share/crush/crush.json
|
|
163
|
+
|
|
164
|
+
# Windows
|
|
165
|
+
%LOCALAPPDATA%\crush\crush.json
|
|
166
|
+
```
|
|
167
|
+
|
|
154
168
|
### LSPs
|
|
155
169
|
|
|
156
170
|
Crush can use LSPs for additional context to help inform its decisions, just
|
|
@@ -221,10 +235,10 @@ control but don't want Crush to consider when providing context.
|
|
|
221
235
|
The `.crushignore` file uses the same syntax as `.gitignore` and can be placed
|
|
222
236
|
in the root of your project or in subdirectories.
|
|
223
237
|
|
|
224
|
-
###
|
|
238
|
+
### Allowing Tools
|
|
225
239
|
|
|
226
240
|
By default, Crush will ask you for permission before running tool calls. If
|
|
227
|
-
you'd like, you can
|
|
241
|
+
you'd like, you can allow tools to be executed without prompting you for
|
|
228
242
|
permissions. Use this with care.
|
|
229
243
|
|
|
230
244
|
```json
|
|
@@ -245,6 +259,54 @@ permissions. Use this with care.
|
|
|
245
259
|
You can also skip all permission prompts entirely by running Crush with the
|
|
246
260
|
`--yolo` flag. Be very, very careful with this feature.
|
|
247
261
|
|
|
262
|
+
### Local Models
|
|
263
|
+
|
|
264
|
+
Local models can also be configured via OpenAI-compatible API. Here are two common examples:
|
|
265
|
+
|
|
266
|
+
#### Ollama
|
|
267
|
+
|
|
268
|
+
```json
|
|
269
|
+
{
|
|
270
|
+
"providers": {
|
|
271
|
+
"ollama": {
|
|
272
|
+
"name": "Ollama",
|
|
273
|
+
"base_url": "http://localhost:11434/v1/",
|
|
274
|
+
"type": "openai",
|
|
275
|
+
"models": [
|
|
276
|
+
{
|
|
277
|
+
"name": "Qwen 3 30B",
|
|
278
|
+
"id": "qwen3:30b",
|
|
279
|
+
"context_window": 256000,
|
|
280
|
+
"default_max_tokens": 20000
|
|
281
|
+
}
|
|
282
|
+
]
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
#### LM Studio
|
|
289
|
+
|
|
290
|
+
```json
|
|
291
|
+
{
|
|
292
|
+
"providers": {
|
|
293
|
+
"lmstudio": {
|
|
294
|
+
"name": "LM Studio",
|
|
295
|
+
"base_url": "http://localhost:1234/v1/",
|
|
296
|
+
"type": "openai",
|
|
297
|
+
"models": [
|
|
298
|
+
{
|
|
299
|
+
"name": "Qwen 3 30B",
|
|
300
|
+
"id": "qwen/qwen3-30b-a3b-2507",
|
|
301
|
+
"context_window": 256000,
|
|
302
|
+
"default_max_tokens": 20000
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
248
310
|
### Custom Providers
|
|
249
311
|
|
|
250
312
|
Crush supports custom provider configurations for both OpenAI-compatible and
|
|
@@ -314,6 +376,59 @@ Custom Anthropic-compatible providers follow this format:
|
|
|
314
376
|
}
|
|
315
377
|
```
|
|
316
378
|
|
|
379
|
+
### Amazon Bedrock
|
|
380
|
+
|
|
381
|
+
Crush currently supports running Anthropic models through Bedrock, with caching disabled.
|
|
382
|
+
|
|
383
|
+
* A Bedrock provider will appear once you have AWS configured, i.e. `aws configure`
|
|
384
|
+
* Crush also expects the `AWS_REGION` or `AWS_DEFAULT_REGION` to be set
|
|
385
|
+
* To use a specific AWS profile set `AWS_PROFILE` in your environment, i.e. `AWS_PROFILE=myprofile crush`
|
|
386
|
+
|
|
387
|
+
### Vertex AI Platform
|
|
388
|
+
|
|
389
|
+
Vertex AI will appear in the list of available providers when `VERTEXAI_PROJECT` and `VERTEXAI_LOCATION` are set. You will also need to be authenticated:
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
gcloud auth application-default login
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
To add specific models to the configuration, configure as such:
|
|
396
|
+
|
|
397
|
+
```json
|
|
398
|
+
{
|
|
399
|
+
"$schema": "https://charm.land/crush.json",
|
|
400
|
+
"providers": {
|
|
401
|
+
"vertexai": {
|
|
402
|
+
"models": [
|
|
403
|
+
{
|
|
404
|
+
"id": "claude-sonnet-4@20250514",
|
|
405
|
+
"name": "VertexAI Sonnet 4",
|
|
406
|
+
"cost_per_1m_in": 3,
|
|
407
|
+
"cost_per_1m_out": 15,
|
|
408
|
+
"cost_per_1m_in_cached": 3.75,
|
|
409
|
+
"cost_per_1m_out_cached": 0.3,
|
|
410
|
+
"context_window": 200000,
|
|
411
|
+
"default_max_tokens": 50000,
|
|
412
|
+
"can_reason": true,
|
|
413
|
+
"supports_attachments": true
|
|
414
|
+
}
|
|
415
|
+
]
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
## A Note on Claude Max and GitHub Copilot
|
|
422
|
+
|
|
423
|
+
Crush only supports model providers through official, compliant APIs. We do not
|
|
424
|
+
support or endorse any methods that rely on personal Claude Max and GitHub Copilot
|
|
425
|
+
accounts or OAuth workarounds, which may violate Anthropic and Microsoft’s
|
|
426
|
+
Terms of Service.
|
|
427
|
+
|
|
428
|
+
We’re committed to building sustainable, trusted integrations with model
|
|
429
|
+
providers. If you’re a provider interested in working with us,
|
|
430
|
+
[reach out](mailto:vt100@charm.sh).
|
|
431
|
+
|
|
317
432
|
## Logging
|
|
318
433
|
|
|
319
434
|
Sometimes you need to look at logs. Luckily, Crush logs all sorts of
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@charmland/crush",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "A powerful terminal-based AI assistant for developers, providing intelligent coding assistance directly in your terminal.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"postinstall": "node install.js",
|
|
@@ -26,82 +26,82 @@
|
|
|
26
26
|
},
|
|
27
27
|
"archives": {
|
|
28
28
|
"darwin-arm64": {
|
|
29
|
-
"name": "crush_0.
|
|
30
|
-
"url": "https://github.com/charmbracelet/crush/releases/download/v0.
|
|
29
|
+
"name": "crush_0.3.0_Darwin_arm64.tar.gz",
|
|
30
|
+
"url": "https://github.com/charmbracelet/crush/releases/download/v0.3.0/crush_0.3.0_Darwin_arm64.tar.gz",
|
|
31
31
|
"bins": [
|
|
32
32
|
"crush"
|
|
33
33
|
],
|
|
34
34
|
"format": "tar.gz",
|
|
35
35
|
"checksum": {
|
|
36
36
|
"algorithm": "sha256",
|
|
37
|
-
"digest": "
|
|
37
|
+
"digest": "baee31303dc479621f3bcc906240d14fb1c7f5c2c722dfb55abb386cf34b8901"
|
|
38
38
|
},
|
|
39
|
-
"wrappedIn": "crush_0.
|
|
39
|
+
"wrappedIn": "crush_0.3.0_Darwin_arm64"
|
|
40
40
|
},
|
|
41
41
|
"darwin-x64": {
|
|
42
|
-
"name": "crush_0.
|
|
43
|
-
"url": "https://github.com/charmbracelet/crush/releases/download/v0.
|
|
42
|
+
"name": "crush_0.3.0_Darwin_x86_64.tar.gz",
|
|
43
|
+
"url": "https://github.com/charmbracelet/crush/releases/download/v0.3.0/crush_0.3.0_Darwin_x86_64.tar.gz",
|
|
44
44
|
"bins": [
|
|
45
45
|
"crush"
|
|
46
46
|
],
|
|
47
47
|
"format": "tar.gz",
|
|
48
48
|
"checksum": {
|
|
49
49
|
"algorithm": "sha256",
|
|
50
|
-
"digest": "
|
|
50
|
+
"digest": "3301c0c16c49b892e6ae0f77cf3c35ea25187738af85ea2bbe40b38acdde69d5"
|
|
51
51
|
},
|
|
52
|
-
"wrappedIn": "crush_0.
|
|
52
|
+
"wrappedIn": "crush_0.3.0_Darwin_x86_64"
|
|
53
53
|
},
|
|
54
54
|
"linux-arm64": {
|
|
55
|
-
"name": "crush_0.
|
|
56
|
-
"url": "https://github.com/charmbracelet/crush/releases/download/v0.
|
|
55
|
+
"name": "crush_0.3.0_Linux_arm64.tar.gz",
|
|
56
|
+
"url": "https://github.com/charmbracelet/crush/releases/download/v0.3.0/crush_0.3.0_Linux_arm64.tar.gz",
|
|
57
57
|
"bins": [
|
|
58
58
|
"crush"
|
|
59
59
|
],
|
|
60
60
|
"format": "tar.gz",
|
|
61
61
|
"checksum": {
|
|
62
62
|
"algorithm": "sha256",
|
|
63
|
-
"digest": "
|
|
63
|
+
"digest": "115d9589648c9602b3fea3301648031b014e1fd5304db428d50294ed60d9eb9c"
|
|
64
64
|
},
|
|
65
|
-
"wrappedIn": "crush_0.
|
|
65
|
+
"wrappedIn": "crush_0.3.0_Linux_arm64"
|
|
66
66
|
},
|
|
67
67
|
"linux-x64": {
|
|
68
|
-
"name": "crush_0.
|
|
69
|
-
"url": "https://github.com/charmbracelet/crush/releases/download/v0.
|
|
68
|
+
"name": "crush_0.3.0_Linux_x86_64.tar.gz",
|
|
69
|
+
"url": "https://github.com/charmbracelet/crush/releases/download/v0.3.0/crush_0.3.0_Linux_x86_64.tar.gz",
|
|
70
70
|
"bins": [
|
|
71
71
|
"crush"
|
|
72
72
|
],
|
|
73
73
|
"format": "tar.gz",
|
|
74
74
|
"checksum": {
|
|
75
75
|
"algorithm": "sha256",
|
|
76
|
-
"digest": "
|
|
76
|
+
"digest": "ef9b8f4950842268effc6df0dac849766ff95e5c19fddc8036370566d8aa6c71"
|
|
77
77
|
},
|
|
78
|
-
"wrappedIn": "crush_0.
|
|
78
|
+
"wrappedIn": "crush_0.3.0_Linux_x86_64"
|
|
79
79
|
},
|
|
80
80
|
"win32-arm64": {
|
|
81
|
-
"name": "crush_0.
|
|
82
|
-
"url": "https://github.com/charmbracelet/crush/releases/download/v0.
|
|
81
|
+
"name": "crush_0.3.0_Windows_arm64.zip",
|
|
82
|
+
"url": "https://github.com/charmbracelet/crush/releases/download/v0.3.0/crush_0.3.0_Windows_arm64.zip",
|
|
83
83
|
"bins": [
|
|
84
84
|
"crush.exe"
|
|
85
85
|
],
|
|
86
86
|
"format": "zip",
|
|
87
87
|
"checksum": {
|
|
88
88
|
"algorithm": "sha256",
|
|
89
|
-
"digest": "
|
|
89
|
+
"digest": "13f608b4e4e79a62095c0b9131bab2daedf9d33d847308e668f92b206cef6bb0"
|
|
90
90
|
},
|
|
91
|
-
"wrappedIn": "crush_0.
|
|
91
|
+
"wrappedIn": "crush_0.3.0_Windows_arm64"
|
|
92
92
|
},
|
|
93
93
|
"win32-x64": {
|
|
94
|
-
"name": "crush_0.
|
|
95
|
-
"url": "https://github.com/charmbracelet/crush/releases/download/v0.
|
|
94
|
+
"name": "crush_0.3.0_Windows_x86_64.zip",
|
|
95
|
+
"url": "https://github.com/charmbracelet/crush/releases/download/v0.3.0/crush_0.3.0_Windows_x86_64.zip",
|
|
96
96
|
"bins": [
|
|
97
97
|
"crush.exe"
|
|
98
98
|
],
|
|
99
99
|
"format": "zip",
|
|
100
100
|
"checksum": {
|
|
101
101
|
"algorithm": "sha256",
|
|
102
|
-
"digest": "
|
|
102
|
+
"digest": "f3f08e3a91fbede3f90f6d9c19fb95d388953e0a28b3b3a50a3f0cfd0f2ebd52"
|
|
103
103
|
},
|
|
104
|
-
"wrappedIn": "crush_0.
|
|
104
|
+
"wrappedIn": "crush_0.3.0_Windows_x86_64"
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
}
|