1> [!WARNING]
2> 🚧 This is a pre-release under heavy, active development. Things are still in flux but we’re excited to share early progress.
3
4# Crush
5
6<p>
7 <a href="https://github.com/charmbracelet/crush/releases"><img src="https://img.shields.io/github/release/charmbracelet/crush" alt="Latest Release"></a>
8 <a href="https://github.com/charmbracelet/crush/actions"><img src="https://github.com/charmbracelet/crush/workflows/build/badge.svg" alt="Build Status"></a>
9</p>
10
11Crush is a tool for building software with AI.
12
13## Installation
14
15Nightly builds are available while Crush is in development.
16
17- [Packages](https://github.com/charmbracelet/crush/releases/tag/nightly) are available in Debian and RPM formats
18- [Binaries](https://github.com/charmbracelet/crush/releases/tag/nightly) are available for Linux and macOS
19
20You can also just install it with go:
21
22```
23git clone git@github.com:charmbracelet/crush.git
24cd crush
25go install
26```
27
28Note that Crush doesn't support Windows yet, however Windows support is planned and in progress.
29
30## Getting Started
31
32For now, the quickest way to get started is to set an environment variable for
33your preferred provider. Note that you can switch between providers mid-
34sessions, so you're welcome to set environment variables for multiple
35providers.
36
37| Environment Variable | Provider |
38| -------------------------- | -------------------------------------------------- |
39| `ANTHROPIC_API_KEY` | Anthropic |
40| `OPENAI_API_KEY` | OpenAI |
41| `GEMINI_API_KEY` | Google Gemini |
42| `VERTEXAI_PROJECT` | Google Cloud VertexAI (Gemini) |
43| `VERTEXAI_LOCATION` | Google Cloud VertexAI (Gemini) |
44| `GROQ_API_KEY` | Groq |
45| `AWS_ACCESS_KEY_ID` | AWS Bedrock (Claude) |
46| `AWS_SECRET_ACCESS_KEY` | AWS Bedrock (Claude) |
47| `AWS_REGION` | AWS Bedrock (Claude) |
48| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI models |
49| `AZURE_OPENAI_API_KEY` | Azure OpenAI models (optional when using Entra ID) |
50| `AZURE_OPENAI_API_VERSION` | Azure OpenAI models |
51
52## Configuration
53
54For many use cases, Crush can be run with no config. That said, if you do need config, it can be added either local to the project itself, or globally. Configuration has the following priority:
55
561. `.crush.json`
572. `crush.json`
583. `$HOME/.config/crush/crush.json`
59
60### LSPs
61
62Crush can use LSPs for additional context to help inform its decisions, just like you would. LSPs can be added manually like so:
63
64```json
65{
66 "lsp": {
67 "go": {
68 "command": "gopls"
69 },
70 "typescript": {
71 "command": "typescript-language-server",
72 "args": ["--stdio"]
73 },
74 "nix": {
75 "command": "alejandra"
76 }
77 }
78}
79```
80
81### MCPs
82
83Crush can also use MCPs for additional context. Add LSPs to the config like so:
84
85```json
86{
87 "mcp": {
88 "context7": {
89 "url": "https://mcp.context7.com/mcp",
90 "type": "http"
91 },
92 "github": {
93 "type": "http",
94 "url": "https://api.githubcopilot.com/mcp/",
95 "headers": {
96 "Authorization": "$(echo Bearer $GH_MCP_TOKEN)"
97 }
98 }
99 }
100}
101```
102
103### OpenAI-Compatible APIs
104
105Crush supports all OpenAI-compatible APIs. Here's an example configuration for Deepseek, which uses an OpenAI-compatible API. Don't forget to set `DEEPSEEK_API_KEY` in your environment.
106
107```json
108{
109 "providers": {
110 "deepseek": {
111 "provider_type": "openai",
112 "base_url": "https://api.deepseek.com/v1",
113 "models": [
114 {
115 "id": "deepseek-chat",
116 "model": "Deepseek V3",
117 "cost_per_1m_in": 0.27,
118 "cost_per_1m_out": 1.1,
119 "cost_per_1m_in_cached": 0.07,
120 "cost_per_1m_out_cached": 1.1,
121 "context_window": 64000,
122 "default_max_tokens": 5000
123 }
124 ]
125 }
126 }
127}
128```
129
130## Whatcha think?
131
132We’d love to hear your thoughts on this project. Feel free to drop us a note!
133
134- [Twitter](https://twitter.com/charmcli)
135- [The Fediverse](https://mastodon.social/@charmcli)
136- [Discord](https://charm.sh/chat)
137
138## License
139
140[MIT](https://github.com/charmbracelet/crush/raw/main/LICENSE)
141
142---
143
144Part of [Charm](https://charm.land).
145
146<a href="https://charm.sh/"><img alt="The Charm logo" width="400" src="https://stuff.charm.sh/charm-banner-next.jpg" /></a>
147
148<!--prettier-ignore-->
149Charm热爱开源 • Charm loves open source