PrismML-Eng의 Bonsai-demo는 겉으로 보면 Bonsai와 Ternary-Bonsai 모델을 로컬에서 실행하는 데모 저장소다. macOS에서는 Metal, Linux/Windows에서는 CUDA·Vulkan·ROCm, 그리고 CPU 실행까지 다룬다. 기본 흐름도 간단하다. 저장소를 클론하고 `./setup.sh`를 실행한 뒤 `./scripts/start_llama_server.sh`로 로컬 서버를 띄우면 http://localhost:8080에서 채팅 UI를 쓸 수 있다.
하지만 README에서 더 흥미로운 부분은 27B 모델군이 단순 텍스트 모델로 소개되지 않는다는 점이다. Bonsai 27B는 vision-language 모델로 사진, 스크린샷, PDF를 입력받을 수 있고, 256k+ 토큰 길이의 대화 컨텍스트를 지원한다. 여기에 reasoning effort를 UI나 요청 단위에서 조절할 수 있고, OpenAI-style `tool_calls`와 MCP 서버 연동까지 demo UI에 포함된다.
이 조합은 로컬 실행의 의미를 조금 바꾼다. 로컬 LLM은 흔히 “외부 API 없이 내 장비에서 추론한다”는 장점으로 설명된다. Bonsai-demo가 보여주는 장면은 그보다 넓다. 브라우저 UI가 로컬 추론 서버, 이미지·PDF 입력, 도구 호출, MCP 서버 사이의 접점이 된다. 사용자는 채팅창을 보고 있지만, 실제로는 작은 로컬 에이전트 환경을 만지는 셈이다.
모델 압축 측면도 분명한 메시지가 있다. 1-bit Bonsai-27B는 약 1.125 bits per weight까지 줄였고, README는 현대 iPhone에도 메모리 오프로딩 없이 들어갈 정도의 footprint를 강조한다. 반면 demo의 기본값인 Ternary-Bonsai-27B는 약 1.7 bits per weight이며, 빠른 가속 커널을 위해 2-bit로 packed되는 더 높은 품질의 선택지로 배치된다. 극단적 압축과 실사용 품질 사이에서 두 계열을 나눠 보여주는 구조다.
물론 로컬이라는 단어가 모든 문제를 해결하지는 않는다. 27B 저장소가 private인 동안은 `BONSAI_TOKEN`이 필요하고, vision 입력과 tool calling, MCP가 붙는 순간 권한 경계는 사용자가 직접 신경 써야 할 문제가 된다. 어떤 파일을 모델에 넣는지, 어떤 MCP 서버를 연결하는지, 브라우저 UI가 어느 범위까지 조작할 수 있는지는 실제 운영에서 중요한 기준이 된다.
그래도 Bonsai-demo가 주목받을 만한 이유는 충분하다. Q1_0 1-bit가 llama.cpp mainline에 fully merged되었고, Q2_0 ternary도 mainline CPU와 Metal에서 동작한다고 README는 설명한다. 특정 데모 앱에 갇힌 실험이 아니라 llama.cpp 생태계의 실행 포맷과 맞물려 있다는 뜻이다. 로컬 AI의 다음 흐름이 단순 채팅을 넘어 비전, 긴 컨텍스트, reasoning, 도구 호출을 한 화면에 묶는 방향이라면 Bonsai-demo는 그 변화를 꽤 선명하게 보여주는 저장소다.