GoModel – Go로 작성된 오픈소스 AI Gateway
Show HN: GoModel – an open-source AI gateway in Go
TL;DR Highlight
OpenAI, Anthropic, Gemini 등 여러 AI 프로바이더를 하나의 OpenAI 호환 API로 묶어주는 Go 기반 오픈소스 AI 게이트웨이로, LiteLLM의 컴파일 언어 대안이다.
Who Should Read
여러 LLM 프로바이더를 동시에 사용 중인 백엔드 개발자, 또는 LiteLLM을 쓰고 있지만 성능·공급망 보안·Go 생태계 통합에 관심 있는 개발자.
Core Mechanics
- GoModel은 Go로 작성된 AI 게이트웨이로, OpenAI, Anthropic, Gemini, xAI, Groq, OpenRouter, Z.ai, Azure OpenAI, Oracle, Ollama 등 다양한 프로바이더를 단일 OpenAI 호환 API로 통합한다.
- Docker 한 줄 명령으로 바로 띄울 수 있고, 환경변수로 원하는 프로바이더 API 키만 넘기면 된다. 최소한 하나의 프로바이더 키만 있으면 동작한다.
- LiteLLM의 대안으로 포지셔닝하며, observability(모니터링), guardrails(안전 필터), streaming(스트리밍 응답)을 내장 지원한다.
- Go 컴파일 언어 특성상 Python 기반 LiteLLM 대비 런타임 공급망 공격(supply chain attack)에 더 안전하다는 점이 강점으로 언급된다. 컴파일 타임에 의존성이 고정되기 때문이다.
- Prometheus 메트릭 연동을 지원하며, 별도 설정 파일(prometheus.yml)과 docker-compose.yaml이 포함되어 있어 모니터링 환경 구성이 쉽다.
- semantic caching(의미 기반 캐싱) 레이어가 있는 것으로 보이며, 게이트웨이 측에서 요청을 임베딩하고 벡터 유사도 검색으로 캐시 히트 여부를 판단하는 방식으로 추정된다.
- Helm 차트가 포함되어 있어 Kubernetes 환경 배포도 지원한다.
- 현재 GitHub 기준 Star 319개, Fork 20개이며 활발히 커밋 중인 초기 프로젝트다.
Evidence
- Go로 작성된 것이 왜 중요하냐는 질문에 대해, 다른 댓글에서 Go 컴파일 바이너리는 런타임 공급망 공격 표면이 Python 기반 도구보다 훨씬 작다는 반론이 제기됐다. 실제로 비슷한 Go 게이트웨이(sbproxy.dev)를 만든 개발자가 이를 직접 언급했다.
- AI 프록시를 직접 만들고 유지보수해본 경험자는 '모델·프로바이더 릴리즈 때마다 입출력 구조가 달라지는 것이 가장 힘든 점'이라며, 새 모델 출시 후 24시간 내 통합이 안 되면 제대로 관리되는 프로젝트가 아니라고 평가했다.
- Go SDK가 JavaScript·Python에 비해 부족해서 프로바이더 업데이트 때마다 직접 따라가야 한다는 유지보수 부담을 우려하는 의견이 있었고, 작성자도 이를 주요 도전과제로 인식하고 있는 것으로 보인다.
- vllm(성능 높은 로컬 모델 서빙 도구)을 쓰는 사용자가 Ollama 대신 vllm 연동 방법을 물었고, 비용 추적(cost tracking per model/route) 기능에 대한 요청도 있었다. 특히 무료·유료 모델을 혼합해 쓸 때 어디서 비용이 발생하는지 파악하는 게 중요하다는 실사용 경험이 공유됐다.
- 'LiteLLM처럼 오픈소스 rug pull(처음엔 오픈소스로 공개했다가 나중에 상용화하는 것)을 할 계획이냐'는 날카로운 질문도 있었다. 또한 진정한 unified API라면 temperature, reasoning effort, tool choice mode 같은 프로바이더별 파라미터 차이도 추상화해줘야 한다는 의견도 제기됐다.
How to Apply
- 여러 LLM 프로바이더를 쓰는 서비스에서 모델 교체 때마다 클라이언트 코드를 수정하고 싶지 않다면, GoModel을 중간 게이트웨이로 올리고 모든 요청을 `http://localhost:8080`의 OpenAI 호환 엔드포인트로 보내면 된다. 프로바이더 전환은 환경변수만 바꾸면 된다.
- LiteLLM을 운영 중인데 Python 런타임의 공급망 보안이 걱정되거나 메모리·성능 오버헤드가 문제라면, GoModel로 교체를 검토할 수 있다. 컴파일 바이너리라 런타임 의존성이 없고, Docker 이미지도 가볍다.
- Kubernetes 환경에서 AI 트래픽을 중앙 관리하고 싶다면, 포함된 Helm 차트를 활용해 GoModel을 클러스터에 배포하고 Prometheus와 연동해 모델별 응답 시간·에러율을 모니터링할 수 있다.
- 팀 내에서 여러 명이 각기 다른 AI 프로바이더 키를 직접 관리하는 상황이라면, GoModel을 내부 게이트웨이로 두고 팀원들은 GoModel 엔드포인트만 바라보게 하면 키 관리 포인트를 단일화할 수 있다.
Code Example
# 최소 실행 (OpenAI만 사용)
docker run --rm -p 8080:8080 \
-e OPENAI_API_KEY="your-openai-key" \
enterpilot/gomodel
# 여러 프로바이더 동시 사용
docker run --rm -p 8080:8080 \
-e OPENAI_API_KEY="your-openai-key" \
-e ANTHROPIC_API_KEY="your-anthropic-key" \
-e GEMINI_API_KEY="your-gemini-key" \
-e GROQ_API_KEY="your-groq-key" \
-e OPENROUTER_API_KEY="your-openrouter-key" \
-e XAI_API_KEY="your-xai-key" \
-e AZURE_API_KEY="your-azure-key" \
-e AZURE_BASE_URL="https://your-resource.openai.azure.com/openai/deployments/your-deployment" \
-e AZURE_API_VERSION="2024-10-21" \
enterpilot/gomodel
# 이후 클라이언트에서는 base_url만 변경
# openai.OpenAI(base_url="http://localhost:8080", api_key="any-value")Terminology
관련 논문
Lowfat – CLI 출력을 필터링해서 LLM 토큰을 91.8% 절약한 도구
AI 에이전트가 CLI 명령어 출력을 읽을 때 불필요한 노이즈를 제거해 토큰 사용량을 줄여주는 Rust 기반 CLI 필터 도구. Claude Code, OpenCode 등 주요 AI 코딩 에이전트와 통합 가능하다.
1-bit/Ternary Bonsai Image 4B: 로컬 디바이스용 이미지 생성 모델
4B 파라미터 이미지 생성 모델의 가중치를 1비트/3값으로 극단적으로 압축해서 iPhone에서도 돌아가게 만든 모델. 7.75GB짜리 diffusion transformer를 0.93GB까지 줄였다.
Tiny-vLLM: C++와 CUDA로 만드는 고성능 LLM 추론 엔진
vLLM의 핵심 기능을 C++와 CUDA로 직접 구현하며 배울 수 있는 교육용 LLM 추론 엔진 프로젝트로, 소스코드와 단계별 강의가 함께 제공된다.
일반 데이터센터 GPU에서 요청당 3,000 tokens/s 실시간 LLM 추론
Kog AI가 8× AMD MI300X에서 요청당 3,000 tokens/s를 달성하는 LLM 추론 엔진을 공개했고, 기존 소프트웨어 스택의 병목을 GPU 메모리 대역폭 최대화로 풀어냈다는 내용이다.
LLM을 위한 수면과 유사한 컨텍스트 통합 메커니즘
LLM이 긴 컨텍스트를 처리할 때 발생하는 Attention 비용 문제를 해결하기 위해, 사람의 수면처럼 주기적으로 컨텍스트를 fast weight에 압축·저장하는 새로운 메커니즘을 제안한 논문이다.
CODA: Transformer 블록을 GEMM-Epilogue 프로그램으로 재작성하기
GPU에서 Transformer 학습 시 발생하는 메모리 병목을 해결하기 위해, 정규화·활성화 등 소규모 연산들을 GEMM 출력이 칩 위에 있는 동안 함께 실행하는 커널 추상화 CODA를 소개한다. LLM이 이 추상화를 활용해 고성능 커널을 자동 생성할 수 있다는 점이 특히 주목받고 있다.