Hacker News가 주목한 Gemma 4 local-agent 실전기: Codex CLI를 cloud 밖으로 옮기는 법

Hacker News에서 주목한 Daniel Vaughan의 April 2026 글은, local LLM이 정말로 Codex CLI의 day-to-day agent workflow를 대체할 수 있는지 실험한 기록이다. 질문은 단순했다. local model이 cost, privacy, resilience 면에서 매력적인 것은 맞지만, Codex CLI의 본질인 tool calling이 안정적으로 되지 않으면 실제 agent로는 쓸 수 없다는 것이다.

작성자는 두 대의 장비를 시험했다. 하나는 24 GB M4 Pro MacBook Pro에서 Gemma 4 26B MoE를 llama.cpp로 돌리는 구성이고, 다른 하나는 Dell Pro Max GB10에서 31B Dense variant를 돌리는 구성이다. Apple Silicon 쪽에서는 Ollama가 바로 막혔다. v0.20.3 streaming bug 때문에 tool-call response가 잘못된 field로 들어가고, Flash Attention freeze 때문에 긴 prompt에서 멈췄다고 한다. Codex CLI system prompt만 해도 약 27,000 tokens라서, 이 조합은 시작부터 불안정했다.

결국 Mac에서 성공한 경로는 llama.cpp였다. 글은 working command와 함께 왜 각 flag가 필요한지 구체적으로 설명한다. --jinja는 Gemma 4 tool-calling template 때문에 필요했고, -np 1은 KV cache memory 폭증을 막기 위한 선택이었다. -ctk q8_0와 -ctv q8_0는 KV cache를 줄였고, direct GGUF path를 쓰는 -m은 불필요한 vision projector download를 피하게 해줬다. Codex CLI profile에서는 web_search = "disabled"도 필요했다. llama.cpp가 web_search_preview tool type을 받지 못하기 때문이다.

반면 GB10에서는 다른 문제가 나왔다. vLLM은 PyTorch ABI mismatch로 막혔고, 대신 Ollama v0.20.5가 작동했다. SSH tunnel로 port 11434를 localhost로 forwarding하고 codex --oss -m gemma4:31b를 실행하자 text generation과 tool calling이 모두 돌아갔다. 이 글이 의미 있는 이유는 local-agent라는 막연한 슬로건을 넘어서, 실제로 어떤 조합이 깨지고 무엇이 겨우 동작하는지를 보여줬기 때문이다. HN comment에서도 Gemma 4 26B를 “weight class outlier”로 보는 반응이 나왔지만, 동시에 이 workflow는 아직 brittle하다. 그래도 reproducible recipe가 생겼다는 점에서 local coding agent 실험은 한 단계 앞으로 갔다.