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
Ask HN: How do you get into a flow state when using AI to code?
Claude 같은 에이전트 기반 AI 코딩 도구가 보편화되면서 개발자들이 기존의 몰입 상태(flow state)를 잃어버리고 있다는 문제를 공유하고, 커뮤니티에서 각자의 대처 방법을 논의한 스레드.
Claude Desktop spawns 1.8 GB Hyper-V VM on every launch, even for chat-only use
Claude Desktop Windows 앱이 사용자가 AI 코드 실행 기능(Cowork)을 쓰지 않아도 실행 시마다 자동으로 1.8GB짜리 Hyper-V 가상머신을 생성해 메모리를 잡아먹는 버그가 보고됐다.
Apache Burr: Build reliable AI agents and applications
LangChain 같은 복잡한 프레임워크에 지친 개발자들을 위해 순수 Python으로 AI 에이전트와 상태 머신을 만들 수 있는 Apache 인큐베이팅 프레임워크다. 상태 관리, 관측성, Human-in-the-Loop 등을 DSL 없이 제공한다는 점이 특징이다.
A €0.01 bank transfer could compromise a banking AI agent
유럽 2위 디지털 뱅크 Bunq의 AI 어시스턴트에서 발견된 간접 프롬프트 인젝션 취약점으로, 단돈 €0.02 송금만으로 사용자에게 피싱 공격을 자동 실행할 수 있었다.
Show HN: Claw Patrol, a security firewall for agents
AI 에이전트가 실행하는 SQL, kubectl, HTTP 요청을 프록시에서 가로채 HCL 규칙으로 허용/차단/사람 승인 요청을 할 수 있는 오픈소스 보안 게이트웨이. 에이전트가 프로덕션 환경에서 위험한 작업을 실행하기 전에 제어할 수 있어 중요하다.
Recalling Too Well: Sycophancy Evaluation and Mitigation in Memory-Augmented Models
LLM에 장기 메모리를 붙이면 사용자의 잘못된 믿음까지 기억해서 틀린 답을 내놓는 sycophancy(아첨 현상)가 최대 25배 심해진다.