Grit: Rewriting Git in Rust with agents
TL;DR Highlight
GitButler 팀이 AI 에이전트 스웜을 활용해 Git을 Rust로 처음부터 재작성한 Grit 프로젝트를 공개했는데, GPL 라이선스 문제와 실용성 논란이 커뮤니티에서 크게 일고 있다.
Who Should Read
Rust 기반 Git 라이브러리나 AI 에이전트를 활용한 대규모 코드 포팅/리라이팅에 관심 있는 개발자. 특히 libgit2나 Gitoxide의 한계를 느끼고 있는 Git 툴링 개발자.
Core Mechanics
- GitButler의 Scott Chacon이 수개월간 AI 에이전트 스웜을 활용해 Git을 Rust로 처음부터 재작성한 Grit 프로젝트를 만들었다. Anthropic이 에이전트 스웜으로 C 컴파일러를 작성한 실험에서 영감을 받았다.
- Grit은 Git의 기존 42,000개 이상의 테스트(1,400개 이상의 스크립트)를 통과 기준으로 삼았고, 현재 99% 이상을 통과한다. 이메일 관련, i18n, perforce/svn 임포터 등 일부는 의도적으로 스킵했다.
- 기존 C Git이 Unix 철학에 따라 명령어 체이닝 방식으로 만들어져 장기 실행 프로세스에서 fork/exec 오버헤드가 크다는 게 재작성의 핵심 동기다. Grit은 처음부터 링크 가능한 라이브러리(library-first)로 설계됐다.
- 실용적 활용 목표는 GitButler와 Jujutsu 같은 툴에 push/fetch 네트워크 기능을 직접 번들링하는 것이다. 현재 Gitoxide와 libgit2의 네트워킹은 불완전하거나 느려서 두 툴 모두 실제 push/pull 시 외부 Git 바이너리를 fork해서 쓰고 있다.
- 추가 목표로 WASM 빌드를 통해 브라우저나 엣지 환경에서 Git 기능을 실행하는 것도 언급됐다. 이는 기존 C Git으로는 사실상 불가능한 영역이다.
- 단, 아직 실제 사용 환경에서 검증된 적이 없고, 일부 기능에서 잘못된 동작이나 데이터 손상 가능성이 있다고 공식적으로 경고하고 있다. 또한 일부 기능이 기존 Git보다 지수적으로 느리고, Windows 빌드도 없다.
- 바이너리 크기가 stripped 기준으로 31MB(text 섹션 25MB)로, 기존 /usr/bin/git의 4.7MB 대비 상당히 크다. 이는 모든 기능이 단일 바이너리에 들어있는 구조 차이가 있지만, 최적화가 아직 안 됐다는 뜻이기도 하다.
- 라이선스 논란이 가장 크다. LLM이 생성한 코드는 원본 GPL 코드의 파생물이 아니라고 판단해 MIT 라이선스로 배포했는데, AGENTS.md에서 에이전트가 원본 C 소스를 직접 읽도록 지시한 사실이 드러나면서 GPL 우회·라이선스 세탁이라는 비판을 받고 있다.
Evidence
- GPL 라이선스 우회 논란이 가장 뜨거웠다. AGENTS.md를 보면 에이전트가 원본 Git C 소스를 직접 참조하도록 설계됐는데도 'LLM이 생성한 코드라 파생물이 아니다'며 MIT로 배포한 것을 두고, '이건 GPL 코드 표절이자 라이선스 세탁'이라는 댓글이 다수였다. GitHub 공동 창업자가 GPL의 의미를 모를 리 없다며 고의성을 의심하는 반응도 있었다.
- Gitoxide가 이미 있는데 왜 새로 만드냐는 반론이 강하게 제기됐다. Gitoxide는 수년간 유지보수된 프로젝트인데, 부족한 네트워킹 기능만 vibe-coding으로 추가하는 게 훨씬 낫지, 수천 달러의 토큰을 태워 전체를 다시 만드는 건 커뮤니티에 이득이 없다는 의견이었다.
- '15년간 Git을 써왔는데 메모리 오버플로우로 크래시가 난 적이 없다, 대체 무슨 문제를 해결하는 거냐'는 현실적 의문이 많았다. 20명 이상 팀에 바이너리 아티팩트가 많아도 Git이 잘 동작했다는 실사용 경험들이 공유됐고, Git은 '이미 충분히 좋은 소프트웨어'라는 평이 지배적이었다.
- 에이전트 기반으로 다른 소프트웨어를 리라이팅하는 실험을 병행하는 개발자가 댓글에 등장했다. Lua, Valkey(Redis), nginx를 Rust로 포팅하는 작업을 하고 있으며, Claude Workloads와 Mythos 같은 도구가 발전하면서 테스트 하네스만으로는 부족했던 부분이 해소되고 있다는 경험을 공유했다.
- 바이너리 크기를 직접 분석한 댓글도 있었다. 리눅스 x86_64 v0.3.99를 다운로드해 strip했더니 31MB(text 섹션 25MB)였는데, /usr/bin/git이 4.7MB인 것과 비교해 '구조 차이를 감안해도 이상하게 크다'며 추가 분석이 필요하다고 지적했다.
How to Apply
- GitButler나 Jujutsu처럼 Git push/pull을 내부적으로 처리해야 하는 툴을 개발 중인데 외부 git 바이너리 fork 없이 네트워크 기능을 구현하고 싶다면, Grit의 소스코드와 아키텍처를 참고해 라이브러리 기반 네트워킹 로직을 설계하는 방향을 검토할 수 있다. 단, 현재 프로덕션 사용은 비권장이므로 실험/리서치 용도로만 활용할 것.
- AI 에이전트로 기존 프로젝트를 다른 언어로 포팅하는 작업을 계획 중이라면, 이 프로젝트처럼 대규모 공식 테스트 스위트를 정확도 기준으로 삼는 접근법을 적용할 수 있다. 42,000개 테스트를 통과 기준으로 쓴 방식은 에이전트의 결과물을 검증하는 효과적인 피드백 루프가 된다.
- nginx나 Redis 같은 C 프로젝트를 Rust로 포팅하는 유사한 실험을 진행하고 싶다면, 댓글에서 공유된 lua-rs, valdr, nginx-rs-port 프로젝트들을 참고해 테스트 하네스 구축 방식과 'meta harness' 설계 아이디어를 벤치마킹할 수 있다.
- Grit을 직접 사용해보고 싶다면, 공식 경고대로 실제 코드 저장소에는 절대 쓰지 말고 별도의 테스트 레포에서만 실험할 것. 데이터 손상 가능성이 있으므로 중요한 작업에는 반드시 기존 Git을 사용해야 한다.
Terminology
Related Papers
Migrating a production AI agent to GPT-5.6: 2.2x faster, 27% cheaper
마케팅 웹사이트를 자동 생성하는 프로덕션 AI 에이전트를 Claude Opus 4.8에서 GPT-5.6 Sol로 전환한 실전 경험담으로, 단순 모델 교체가 아니라 eval 하네스, 툴 스키마, 캐싱, 추론 리플레이까지 손봐야 했던 과정을 구체적인 수치와 함께 정리했다.
What xAI's Grok build CLI sends to xAI: A wire-level analysis
xAI의 공식 코딩 CLI 도구 Grok Build가 사용자 동의 없이 전체 Git 저장소와 .env 시크릿 파일을 xAI 서버로 업로드한다는 사실이 네트워크 트래픽 분석으로 밝혀졌다.
Remember When It Matters: Proactive Memory Agent for Long-Horizon Agents
LLM 에이전트가 긴 작업 중 중요한 정보를 잊어버리는 문제를 별도의 메모리 에이전트가 '적절한 타이밍에' 끼어들어 해결하는 방법
WebSwarm: Recursive Multi-Agent Orchestration for Deep-and-Wide Web Search
복잡한 웹 검색을 재귀적으로 분해하고 각 노드에 적합한 검색 모드를 동적으로 할당하는 멀티에이전트 프레임워크
Show HN: Reverse-engineering web apps into agent tools
로그인된 웹 앱의 API 호출을 브라우저에서 감시해 자동으로 MCP 도구로 변환하는 에이전트를 만들었다. 소스 코드나 공식 API 문서 없이도 Jira, Spotify 같은 서비스에 AI 어시스턴트를 붙일 수 있다.
Show HN: FableCut – A browser video editor AI agents can drive (zero deps)
타임라인 전체를 JSON 파일 하나로 표현하고 MCP/REST로 AI 에이전트가 직접 편집할 수 있는 브라우저 비디오 에디터로, Claude 같은 AI가 프롬프트 하나로 영상을 자동 컷편집하고 결과를 실시간으로 UI에 반영해준다.