VoidLLM
CI
codecov
Go Report Card
Artifact Hub
OpenSSF Scorecard
Snyk
Release
Go
License: BSL 1.1
통제권을 중요하게 생각하는 팀을 위한 개인정보 보호 중심의 LLM 프록시 및 AI 게이트웨이.
VoidLLM은 귀하의 애플리케이션과 LLM 제공업체(OpenAI, Anthropic, Azure, Ollama, vLLM 또는 모든 사용자 지정 엔드포인트) 사이에 위치하는 자체 호스팅(self-hosted) LLM 프록시입니다. 이는 조직 전체에 걸친 접근 제어(access control), API 키 관리(API key management), 사용량 추적(usage tracking), 속도 제한(rate limiting), 그리고 다중 배포 부하 분산(multi-deployment load balancing) 기능을 제공합니다. 단일 Go 바이너리, 2ms 미만의 프록시 오버헤드, 귀하의 프롬프트에 대한 제로 지식(zero knowledge)을 가집니다.
VoidLLM Dashboard
<details>
<summary>더 많은 스크린샷</summary>
Usage Analytics
API Keys
Playground
</details>
설계 단계부터의 개인정보 보호(Privacy-First by Design): VoidLLM은 제로 지식 LLM 프록시입니다. 즉, 어떤 프롬프트나 응답 콘텐츠도 저장하거나, 로깅하거나, 영구적으로 보존하지 않습니다. 이는 설정으로 토글할 수 있는 기능이 아니라 아키텍처 자체에 내재된 특성입니다. 추적되는 것은 메타데이터뿐입니다: 누가 요청했는지, 어떤 모델을 사용했는지, 토큰 개수, 그리고 얼마나 시간이 걸렸는지. 귀하의 데이터는 항상 귀하의 것입니다.
VoidLLM을 사용하는 이유?
| 문제점 | VoidLLM이 해결하는 방법 |
|---|
| 팀들이 Slack에서 원시 API 키를 공유함 | 조직/팀/사용자 범위 지정 및 RBAC가 적용된 가상 키 |
| ... | |
작동 방식
flowchart LR
App[귀하의 앱 / SDK] -->|OpenAI 호환| Proxy[VoidLLM 프록시]
Proxy --> Gate[API 키 + RBAC<br/>속도 제한 + 예산]
...
사용자 앱은 OpenAI API를 통해 VoidLLM에 연결합니다. VoidLLM은 키 인증, RBAC(역할 기반 접근 제어), 속도 제한 및 예산 책정을 적용하고, 모델 별칭을 해석하며, 적절한 제공업체로 라우팅합니다. 데이터베이스에는 호출자, 사용된 모델, 토큰 수, 지연 시간 등 메타데이터만 기록됩니다. 프롬프트와 응답 내용은 메모리를 통과할 뿐 영구 저장되지 않습니다.
어떤 경우에 적합한가 (Who it's for)
다음 중 하나에 해당한다면 좋은 선택입니다:
- LLM 인프라를 자체 호스팅(vLLM, Ollama)하거나 관리형 제공업체를 사용하며 단일 제어 평면(control plane)이 필요한 경우
- 개인 정보 보호 또는 규정 준수 문제로 인해 프롬프트나 응답을 기록할 수 없는 경우
- 조직/팀/사용자/키별 RBAC, 예산 책정 및 모델 라우팅 기능이 필요한 경우
- 여러 제공업체를 운영하며 별칭(alias), 부하 분산(load balancing) 및 장애 조치(failover) 기능을 원하는 경우
다음 중 하나에 해당한다면 적합하지 않을 수 있습니다:
- 호스팅되는 SaaS 게이트웨이를 원하는 경우 - VoidLLM은 설계상 자체 호스팅 방식입니다.
- 전체 프롬프트/응답 로깅 또는 콘텐츠 수준의 관측 가능성(observability)이 필요한 경우 - 아키텍처 자체가 제로 지식(zero-knowledge) 방식을 채택하고 있습니다.
- 사용자별 OAuth를 갖춘 상위 계층 MCP 서버가 오늘 당장 필요한 경우 - 아직 지원되지 않습니다.
빠른 시작 (Quick Start)
export VOIDLLM_ADMIN_KEY=$(openssl rand -base64 32)
export VOIDLLM_ENCRYPTION_KEY=$(openssl rand -base64 32)
...
VoidLLM은 첫 시작 시 부트스트랩 자격 증명(bootstrap credentials)을 표준 출력(stdout)에 출력합니다 (아래 참조). 설정 파일이 필요하지 않습니다. UI에서 모델을 추가하거나 voidllm.yaml 파일을 마운트하여 모델을 선언할 수 있습니다 ( Configuration 참조).
바이너리 (Docker 불필요)
릴리스 페이지에서 사용 플랫폼에 맞는 최신 바이너리를 다운로드하세요:
curl -sL https://github.com/voidmind-io/voidllm/releases/latest/download/voidllm-linux-amd64.tar.gz | tar xz
export VOIDLLM_ADMIN_KEY=$(openssl rand -base64 32)
...
지원 플랫폼: Linux (amd64, arm64), Windows (amd64, arm64), macOS (amd64, arm64).
VoidLLM은 첫 시작 시 자격 증명을 표준 출력에 출력합니다:
========================================
BOOTSTRAP COMPLETE - COPY THESE NOW
========================================
...
Open http://localhost:8080, 로그인을 위해 위에 표시된 이메일과 비밀번호를 사용하고 프록시 연결을 시작하세요. API 키는 SDK 호출에 사용됩니다 (Authorization: Bearer vl_uk_...). 이 자격 증명은 한 번만 표시되므로 저장해 두세요.
원클릭 배포 (One-Click Deploy)
Deploy on Railway
키는 자동으로 생성됩니다. Railway가 제공하는 URL을 열고 모델 추가를 시작하세요.
curl http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer vl_uk_..." \
...
OpenAI와 호환되는 모든 SDK가 별도의 설정 없이 작동합니다. 베이스 URL만 VoidLLM 프록시로 변경하면 됩니다.
기능 (Features)
| 기능 | 상세 내용 |
|---|
| OpenAI 호환 프록시 | /v1/chat/completions, 임베딩(embeddings), 리랭크(rerank), 스코어(score), 이미지, 오디오, 스트리밍 |
| ... | |
| 창립 멤버 (Founding Member) (€999 일회성): 모든 엔터프라이즈 기능(현재 및 미래), 평생 라이선스, 제품 자문 위원회(Product Advisory Board), 창립자 직접 접근, 우선 지원, 조기 액세스. 한정된 자리입니다. | |
사용자당 수수료나 요청 건당 요금이 없는 평면적인 가격 책정 방식입니다. 자체 인프라에 호스팅됩니다.
MCP 게이트웨이 (MCP Gateway)
VoidLLM은 MCP 게이트웨이입니다. 이는 내장 관리 도구를 노출하고, 접근 제어(access control), 사용량 추적(usage tracking), 자동 세션 관리 기능을 통해 외부 MCP 서버로 요청을 프록시합니다.
| 도구 | 설명 |
|---|
list_models | 상태 정보가 포함된 모델 목록 조회 (RBAC 범위 제한) |
| ... | |
외부 MCP 서버 (External MCP Servers)
관리 UI 또는 API를 통해 외부 MCP 서버를 등록할 수 있습니다. VoidLLM은 스코프가 지정된 접근 제어(전역, 조직, 팀 레벨), 자동 세션 관리, 사용량 추적 및 Prometheus 메트릭을 통해 /api/v1/mcp/:alias 경로로 도구 호출을 프록시합니다.
코드 모드 (Code Mode)
코드 모드(Code Mode)를 사용하면 LLM이 단일 실행 내에서 여러 MCP 도구 호출을 조정하는 JavaScript 코드를 작성할 수 있습니다. 이는 LLM의 턴마다 하나의 도구를 호출하는 방식과는 다릅니다. 이 JS는 파일 시스템, 네트워크, 호스트 접근 권한이 없는 WASM-샌드박스 QuickJS 런타임에서 실행됩니다. 토큰 사용량을 30~80% 줄여줍니다.
mcp:
code_mode:
enabled: true
...
코드 모드는 /api/v1/mcp에서 세 가지 도구를 노출합니다:
| 도구 | 설명 |
|---|
list_servers | 사용 가능한 MCP 서버와 도구 개수 검색 |
| ... | |
TypeScript 타입 선언은 도구 스키마로부터 자동 생성되어 execute_code 설명에 포함되므로, LLM은 tools/list 시점에 사용 가능한 도구와 인자 타입을 확인할 수 있습니다. | |
관리자는 도구별 차단 목록 API 및 UI를 통해 코드 모드에서 특정 도구를 차단할 수 있습니다.
IDE 설정
{
"mcpServers": {
"voidllm": {
...
이것은 사용자의 IDE(Claude Code, Cursor, Windsurf)를 코드 모드 엔드포인트에 연결합니다. 관리 도구(list_models, get_usage 등)는 /api/v1/mcp/voidllm에서 사용할 수 있습니다. 외부 MCP 서버는 /api/v1/mcp/:alias에서 사용 가능합니다.
알려진 제한 사항
- SSE 전송 미지원 - 사용 중단된 SSE 프로토콜(2025-03-26 이전 사양)을 사용하는 MCP 서버는 자동 감지되어 비활성화됩니다. Streamable HTTP를 지원하는 서버를 사용하십시오.
- 업스트림 MCP 서버의 OAuth 미지원 - 사용자별 OAuth가 필요한 서버(Jira, Slack, Google)는 아직 지원되지 않습니다. API 키 및 헤더 인증은 작동합니다.
- 단일 인스턴스만 가능 - 코드 모드의 WASM 런타임 풀은 메모리 내에 있습니다. 멀티 파드 배포에는 Redis 지원이 필요합니다(곧 제공 예정).
문서 (Documentation)
전체 문서 | 블로그 | FAQ
구성 (Configuration)
server:
proxy:
port: 8080
...
지원되는 제공업체: openai · anthropic · azure · vllm · ollama · custom
환경 변수는 ${VAR} 구문으로 보간됩니다. 비밀 키는 절대 하드코딩하지 마십시오.
배포 (Deployment)
Docker Compose
cp voidllm.yaml.example voidllm.yaml
export VOIDLLM_ADMIN_KEY=$(openssl rand -base64 32)
export VOIDLLM_ENCRYPTION_KEY=$(openssl rand -base64 32)
...
Kubernetes (Helm)
helm install voidllm chart/voidllm/ \
--set secrets.adminKey=$(openssl rand -base64 32) \
--set secrets.encryptionKey=$(openssl rand -base64 32) \
...
PostgreSQL과 Redis는 프로덕션 배포를 위한 선택적 서브 차트(optional subcharts)로 제공됩니다.
소스에서 빌드 (From Source)
cd ui && npm ci && npm run build && cd ..
go run ./cmd/voidllm --config voidllm.yaml
프로덕션 체크리스트 (Production Checklist)
- SQLite 대신 PostgreSQL 사용
- VoidLLM을 TLS / 리버스 프록시(reverse proxy) 뒤에 배치
- 관리자 UI/API를 공용 프록시 트래픽으로부터 격리(별도의
admin.port 및 TLS 사용)
- 강력한
VOIDLLM_ENCRYPTION_KEY (32바이트 이상)를 사용하고 **비밀 관리자(secrets manager)**에 보관
VOIDLLM_ADMIN_KEY를 프로덕션 API 키로 사용하지 마십시오. 이는 부트스트랩 전용입니다.
- Kubernetes에서 리소스 제한(resource limits) 및 네트워크 정책(network policies) 설정
- Prometheus로
/metrics 스크래핑
- 데이터베이스 백업 구성
- 여러 복제본(replicas)의 경우, 속도 제한과 예산이 공유되도록 Redis를 사용하십시오 (사용하지 않으면 프로세스별로 적용됨) - 엔터프라이즈
전체 목록은 보안 강화 가이드를 참조하십시오.
개인 정보 보호 (Privacy)
이것은 기능 토글(feature toggle)이 아닙니다. VoidLLM을 프라이버시 우선 LLM 프록시로 만드는 아키텍처적 결정입니다.
- 로그, DB 또는 모든 영구 저장소에 요청 본문(request body) 기록 안 함
- 로그, DB 또는 모든 영구 저장소에 응답 본문(response body) 기록 안 함
- 프롬프트 캐싱 없음 - 콘텐츠는 메모리를 통과할 때만 처리됨
- **사용량 이벤트(Usage events)**에는 다음 내용만 포함: 누가 (키/조직/팀), 무엇을 (모델), 얼마나 많이 (토큰/비용)
enable_content_logging 옵션은 없습니다. 존재하지 않습니다.
- GDPR 규정 준수를 지원하도록 설계됨 - 프롬프트 내 개인 데이터는 저장되거나 처리되지 않음
voidllm migrate --from sqlite:///data/voidllm.db --to postgres://user:pass@host/db
...
프로젝트
라이선스
Business Source License 1.1 - 소스 코드는 이용 가능하며, 자체 호스팅이 허용되나 경쟁 서비스의 호스팅은 금지됩니다. 각 릴리스 후 4년이 지나면 Apache 2.0으로 전환됩니다.
VoidMind 제작 · voidllm.ai
본 프로젝트는 Anthropic의 Claude를 포함한 AI의 상당한 도움을 받아 구축되었습니다.