Crush - 터미널을 위한 화려한 AI 코딩 에이전트
(github.com/charmbracelet)- 터미널에서 동작하는 AI 코딩 에이전트로, 다양한 LLM(대형 언어 모델) 과 연동하여 코드 작성, 워크플로우 자동화, 코드 컨텍스트 유지 등 코드 생산성 향상을 지원함
- 여러 모델을 선택하거나 세션 중간에 자유롭게 모델 전환이 가능하고, 프로젝트별 세션/컨텍스트 유지를 지원함
- LSP(Language Server Protocol) 연동, 확장 가능한 MCP(모델 컨텍스트 프로토콜) 지원, .gitignore 및 별도 파일 무시 등 개발자 친화적 기능을 제공함
- macOS, Linux, Windows, FreeBSD 등 모든 주요 터미널 환경에서 구동되며, 패키지 매니저 또는 Go, 바이너리 등 다양한 방법으로 설치 가능함
- 직관적 설정과 고급 커스터마이즈를 동시에 지원하며, 환경 변수, JSON 설정, 도구 화이트리스트 등 고급 유저까지 배려한 설계임
Crush
- 터미널 환경에서 실행하는 AI 코딩 에이전트로, 개발자가 선호하는 LLM과 자유롭게 연동하여 코드 작성, 편집, 자동화를 지원함
- 여러 모델(Anthropic, OpenAI, Groq, OpenRouter 등) 을 자유롭게 선택 및 전환할 수 있으며, 세션별로 컨텍스트를 독립적으로 관리함
- LSP(Language Server Protocol) 를 통해 각 언어에 맞는 추가 컨텍스트를 받아 더 똑똑하게 코드를 보조함
- MCP(모델 컨텍스트 프로토콜) 를 통해 외부 시스템, HTTP, 커맨드라인, SSE 등 다양한 소스로부터 추가 정보 수집 및 활용 가능함
주요 기능
- 멀티 모델 지원: OpenAI, Anthropic, Groq, OpenRouter 등 다양한 LLM 연동, 직접 추가 가능
- 세션 기반 작업: 프로젝트별 여러 작업 세션과 컨텍스트 분리, 관리
- 유연한 모델 전환: 세션 중간에도 자유롭게 모델 변경, 기존 컨텍스트 유지
- LSP 연동: Go, TypeScript, Nix 등 주요 언어의 LSP 연결, 코드 맥락 강화
- 확장성: MCP 프로토콜 기반으로 외부 HTTP/CLI/SSE 등 추가 기능 손쉽게 확장
- 광범위 플랫폼 지원: macOS, Linux, Windows(WSL, PowerShell), FreeBSD, OpenBSD, NetBSD 등 주요 OS 터미널에서 모두 동작
- 직관적 설정: 별도의 설정 없이 바로 사용 가능하며, 필요시 프로젝트별/글로벌 JSON 설정 지원
-
강력한 무시(ignoring) 기능:
.gitignore
,.crushignore
파일을 통해 맥락 제외 파일/디렉토리 관리 가능 -
도구 화이트리스트: 도구 실행 시 사전 승인 및 자동 실행 옵션 지원,
--yolo
플래그로 전체 프롬프트 스킵 가능(주의 필요) - 커스텀 프로바이더: OpenAI, Anthropic 호환 API를 자유롭게 추가 및 세부 옵션 지정 가능
설치 및 시작
- Homebrew, NPM, Arch, Nix, Debian/Ubuntu, Fedora/RHEL 등 다양한 패키지 매니저 및 바이너리/Go로 설치 가능
- 최초 실행 시 선호 LLM API Key(OpenAI, Anthropic, Groq 등) 입력 필요, 환경 변수로도 지정 가능
- 환경 변수로 연동 가능한 대표 LLM:
OPENAI_API_KEY
,ANTHROPIC_API_KEY
,GROQ_API_KEY
,OPENROUTER_API_KEY
,GEMINI_API_KEY
,VERTEXAI_PROJECT
등
설정 예시
- 글로벌 또는 프로젝트 단위 JSON 파일(./.crush.json, ./crush.json, $HOME/.config/crush/crush.json)로 고급 옵션 적용
-
LSP 설정: 각 언어별 명령 지정 가능
{ "lsp": { "go": { "command": "gopls" }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] } } }
-
MCP 설정: HTTP/CLI/SSE 기반 외부 확장 예시
{ "mcp": { "filesystem": { "type": "stdio", "command": "node", "args": ["/path/to/mcp-server.js"] } } }
-
파일 무시 및 도구 승인
-
.crushignore
로 특정 파일/폴더 제외 - 도구 실행 화이트리스트 또는
--yolo
플래그로 프롬프트 스킵
-
고급 사용자 기능
- 커스텀 프로바이더 등록: OpenAI/Anthropic 호환 API 추가, 가격/컨텍스트 등 세부 옵션 지정
-
로깅: 프로젝트별 로그 파일 제공,
crush logs
,crush logs --follow
등 CLI 명령으로 실시간 확인 -
디버그 옵션:
--debug
플래그 또는 config로 상세 로그 활성화
Hacker News 의견
-
대부분의 터미널 기반 AI 코딩 에이전트들이 텍스트 UI를 화려하게 꾸미려는 시도를 하고 있는 점이 이상하게 느껴짐. 여백이 많고, 라인 아트, 위젯, 아스키 아트, 그라디언트, 애니메이션까지 추가됨. 하지만 원하는 전체 키 바인딩, 탭 자동완성, 일관된 스크롤백, 혹은 깜빡임 없는 텍스트 렌더링 같은 기본 기능들은 빠져 있음. 그나마 이 툴은 node.js로 작성되지 않아 터미널 출력이 불필요한 리드로우를 줄이는 등 성능 면에서 기대할 만함. 그런데 REPL이나 CLI를 기대하고 사용해보면 상호작용 모델은 똑같은데도 완전히 다르게 동작하고, 에디터나 리더 계열의 Unix TUI와도 확연히 느낌이 다름. 이런 흐름은 Claude Code만 따라한 것인지 아니면 더 이른 시점에 시작된 것인지 궁금함. 그래서 나는 여전히 Aider를 선호함. REPL에 가까운 외형과 사용성을 제공함
-
이 툴은 Charm이라는 회사에서 만들었고, 명령어 창을 매력적으로 만드는 것이 미션임. LLM 열풍 이전부터 수년간 활동해왔음. golang용 CLI 프레임워크와 툴을 만드는 곳임
-
내가 터미널에서 좋아하는 부분은 명령어를 치고 여러 소스와 프로그램의 액션 및 아웃풋을 로그처럼 시퀀스 대로 쭉 볼 수 있는 스크롤링 중심 워크플로우임. 진짜 원하는 건 강력한 HTML 기반의 멀티프로그램 스크롤 워크플로우임. 그런데 요즘 이런 시도들은 양쪽의 단점을 합쳐놓은 식임. 좋은 UI는 더 좋은 렌더링 시스템에서 만나고 싶음
-
이러한 텍스트 UI 흐름은 사실 AI 에이전트 나오기 전부터 charmbracelet의 특유한 스타일이었음. 나는 전통적인 TUIs와는 다르게 키 바인딩이 직관적으로 발견 가능해서 마음에 드는 편임
-
요즘 이 인터페이스들이 급속도로 팬과 개발자를 모으는 이유 중 하나는 많은 사람들이 원래 그래픽 기반의 IDE 스타일 에디터에 익숙하기 때문인 듯함. 모든 개발자가 터미널에서만 작업하지는 않음. (나는 여전히 X/Wayland도 안 켜는 날이 있음)
-
적어도 emacs에서 Claude Code를 사용할 수 있음 https://github.com/stevemolitor/claude-code.el
-
-
이 툴의 좋은 점 중 하나는 아직 초기 단계라 코드가 매우 명확하고 모듈화되어 있음. 툴 호출, 세션, 자동 요약, 영속성 관리 등 에이전트를 설계하고 싶을 때 참고할 만한 훌륭한 청사진임. 이 커밋 링크를 반드시 저장할 만함
-
데모 GIF에서 무슨 일이 일어나는지 실제로 읽고 싶은 사람들을 위해 ffmpeg로 느리게 변환해서 비디오로 만들어 올림 https://share.cleanshot.com/XBXQbSPP
-
15분 정도 진지하게 사용해봤음. Claude Code와 비교했을 때 장점은 아름다운 UI, 변경 파일 및 비용 등을 추적할 수 있는 유용한 사이드바, 수월한 변경사항 수락 UX(핫키, 보기 쉬운 diff 제공)임. 반면 단점은 여러 모델을 조합할 수 없고, 불필요한 이진 파일들이 많이 디렉토리에 추가됨. 초기 init이 CHARM.md라는 파일을 생성하지만, 내가 모델에 공유하고 싶은 정보와 맞지 않았음. 예를 들어, 내 Go 테스트 케이스가 PascalCasing을 쓰는 것까지는 전달되지 않음. 또한 Ctrl+C로 종료 시 내 터미널이 크래시 됨
- 초기 init이 CHARM.md를 만든다는 부분, 이젠 제발 모두가 잘 알려진 단일 agent instruction 파일 표준(예: AGENT.md)에 합의했으면 좋겠음. Amp가 자체 CLI 툴을 위해 홍보하는 표준이긴 하지만, 그 아이러니를 알면서도 그 방식을 지지하게 됨 https://ampcode.com/AGENT.md 참고. 아니면 이런 우회적인 해킹도 있음 https://kau.sh/blog/agents-md/
-
진짜 중요한 질문은, 새로운 에이전트 중 어떤 것이 로컬 모델을 제대로 지원하는지임. 외부 API 의존성을 없애고 싶고, 어느 정도 성능 희생을 감수할 의향도 있음
-
Crush는 Ollama 지원을 추가하는 이슈가 진행 중임(2주 됨)
-
대부분의 에이전트들은 OpenAI 호환 엔드포인트에서 동작함
-
OpenHands는 원하는 어떤 LLM이라도 설정 가능함 https://github.com/All-Hands-AI/OpenHands
-
Aider도 로컬 모델을 지원한다고 명시되어 있지만, 직접 써보지는 않았음 https://aider.chat/docs/llms.html
-
-
Claude Code, opencode, aider, cortex 같은 이런 새로운 툴들을 모두 비교해주는 표가 있으면 정말 좋겠음. 각 툴의 작동 방식이나 차별점이 쉽게 한눈에 안 들어옴
-
상업용 모델을 이용한 비교나 벤치마킹이 비용 때문에 매우 어려움. 최근에 논문을 썼을 때도 SOTA 상업모델 여러 개 평가하는 데 1만 달러 넘게 썼음. 오픈 모델과의 비교는 싸게 할 수 있었지만, 리뷰어들이 "최고"와의 비교를 원하니 어쩔 수가 없었음. 이뿐 아니라, 상업 모델의 내부 구조나 스택은 투명하지 않고 언제든 바뀌기 때문에 너무 비효율적임. 학술 연구에서 상업용 모델과의 비교를 무조건 요구하는 것은 바람직하지 않다고 생각함
-
opencode가 원래 이름이었는데, 개발자들 간에 갈등이 생겨 이름이 바뀐 것으로 기억함
-
퍼포먼스는 단순히 툴만이 아니라, 사용 모델, 코드베이스(컨텍스트), 그리고 주어진 작업(프롬프트)에 따라 달라짐. 요소들이 독립적이지 않고 조합에 따라 성능 차이가 큼. 예시로 Claude Sonnet 4와 Claude Code가 백엔드 파이썬 기능 구현엔 좋고, Gemini 2.5 Pro가 프론트엔드 리액트 코드 수정엔 더 좋았음. 즉, 모든 변수를 고정하고 툴만 비교할 수 없고, 툴모델컨텍스트*프롬프트까지 조합이 필요함. 16x Eval이 이런 부분을 일부 다루지만, 툴 같은 요소는 아직 포함되지 않음 https://eval.16x.engineer/
-
-
"glamorous"는 영국 영어에서도 쓰이는 표현임 https://dictionary.cambridge.org/dictionary/english/glamorous
-
지난 몇 주 동안 Crush를 써보고 있는데, 정말 기대가 큼. Charm을 오래 팔로우해왔고, 개발자 경험을 제대로 이해하면서 사람들이 좋아할 툴을 꾸준히 만드는 몇 안 되는 팀임. AI 코딩 레이스에 이렇게 일찍 합류한 것도 좋은 신호임. 실제로 사용하는 사람들이 만든 툴이라는 점이 분명함
-
또 하나 나왔는데, 이번엔 정말 디자인이 좋음. 반드시 테스트해볼 예정임. 모든 툴에서 아쉬운 점(EDIT: opencode는 github 인증이 가능함)은 월 정액제 서비스(github copilot, claude code, openai codex, cursor 등)에 내 구독으로 바로 인증할 수 없다는 것임. 서비스는 구독하고 있지만 인터페이스가 마음에 안 들 때 그걸 자유롭게 바꿀 수 있으면 정말 좋을 듯함
- 대부분의 툴이 다른 프로그램이 월 구독을 "사용"하는 걸 지원하지 않음. 그래서 API 키를 따로 받아야 하고, 토큰 단위로 비용을 내야 함. 심지어 Claude Code도 한동안 자체 구독으로 연동되지 않았음
-
LSP-강화: Crush가 일반적으로 쓰는 것처럼 LSP를 추가 컨텍스트로 활용함. 이게 내 기준에서 가장 흥미로운 기능임. 멀티 세션이나 프로젝트 기능도 관심이 감
- LSP MCP가 있어 다른 에이전트에서도 같이 사용할 수 있음