CSGLite: 로컬 환경에서 대규모 언어 모델을 실행하는 경량 도구
요약
CSGLite는 로컬 환경에서 대규모 언어 모델(LLM)을 실행하기 위한 경량 도구입니다. Ollama의 장점을 계승하여 단일 바이너리로 모델 다운로드, 추론, 인터랙티브 채팅 기능을 제공합니다. 특히 OpenAI와 호환되는 REST API를 지원하여 기존 개발 워크플로우에 쉽게 통합할 수 있습니다.
핵심 포인트
- 단일 바이너리로 LLM 실행 및 관리 가능
- Ollama처럼 로컬 추론과 자동 서버 시작 지원
- OpenAI API 규격과 완벽하게 호환되어 사용 용이
- macOS, Linux, Windows 등 크로스 플랫폼 지원
CSGLite
<p align="center"> <img src="https://raw.githubusercontent.com/OpenCSGs/csglite/HEAD/docs/images/system.svg" alt="CSGLite system architecture: clients, API, router, where a request runs, and the model store" width="95%"> </p>CSGHub 플랫폼의 모델을 활용하여 로컬 환경에서 대규모 언어 모델(LLM)을 실행하기 위한 경량 도구입니다.
Ollama에서 영감을 받아, CSGLite는 단일 바이너리에서 모델 다운로드, 로컬 추론(local inference), 인터랙티브 채팅, 그리고 OpenAI와 호환되는 REST API를 제공합니다.
요청이 호환 가능한 API 중 하나로 도착하면, 라우터(router)가 어디서 실행할지 결정하고, 응답은 이 곳에서 서비스되었든, 네트워크상의 다른 장치에서 서비스되었든, 또는 제공업체(provider)를 통해 서비스되었든 동일한 형태로 돌아옵니다.
기능 (Features)
핵심 기능 (Core)
- 단일 명령어로 시작 —
csghub-lite run을 실행하면 다운로드, 로드 및 채팅이 모두 가능합니다. - 모델 유지(Model keep-alive) — 종료 후에도 모델이 로드된 상태를 유지하며(기본 5분, 또는 웹 UI의 실행 대화 상자에서 모델별 설정 가능), 즉시 재연결됩니다.
- 자동 서버 시작(Auto-start server) — 수동 설정 없이 백그라운드 API 서버가 자동으로 시작됩니다.
- CSGHub 플랫폼(hub.opencsg.com 또는 사설 배포)으로부터의 모델 다운로드
- llama.cpp를 통한 로컬 추론 (GGUF 모델, SafeTensors 자동 변환)
- 스트리밍 출력이 가능한 인터랙티브 채팅
- Ollama의 API 형식과 호환되는 REST API
- OpenAI와 호환되는 API — Chat Completions(로그 확률(
logprobs), 상위 로그 확률(top_logprobs), 로짓 편향(logit_bias), 응답 형식(response_format) 포함), Responses, Embeddings, Images, Audio, Realtime 및 Decisions API (POST /v1/decisions); 공식 OpenAI SDK는base_url을 CSGLite로 지정하여 작동합니다. - 크로스 플랫폼(Cross-platform) — macOS, Linux, Windows
- 다운로드 재개(Resume downloads) — 중단된 다운로드를 중단했던 지점부터 재개할 수 있습니다.
- 일시정지/재개(Pause/Resume) — 진행 중인 다운로드를 일시 정지하고 나중에 재개할 수 있습니다.
- LAN 클러스터 — 동일한 바이너리를 여러 장치에 설치하고 하나의 공유된 [정보가 생략됨]을 사용합니다.
비밀(secret)이며, 이들은 컴퓨팅 풀을 형성합니다. 요청은 가장 빨리 완료될 노드에 도착하고, 모델은 다시 다운로드되는 대신 노드 간에 복사되며, 재부팅 시 변경되는 주소는 다시 학습됩니다. 라이선스가 없는 두 개의 노드는 무제한으로 작동할 수 있습니다.
웹 UI
- 모델 라이브러리(Model Library) — 다운로드 진행 상황 확인, 일시 중지/재개 및 원클릭 실행을 통해 로컬 모델 관리
- 마켓플레이스(Marketplace) — CSGHub에서 모델/데이터셋 탐색 및 다운로드
- 챗 인터페이스(Chat Interface) — 로컬 및 클라우드 모델과의 대화형 채팅
- AI 앱(AI Apps) — 원클릭 설정으로 AI 애플리케이션 설치 및 실행
- 설정(Settings) — 스토리지, 타사 제공업체, 액세스 토큰 구성
통합(Integrations)
- 타사 제공업체(Third-Party Providers) — OpenAI, DeepSeek, MiMo, Kimi, BigModel, Qianfan, MiniMax, OpenRouter 및 모든 OpenAI 호환 API와 통합
- 코딩 에이전트(Coding Agents) — Claude Code, Codex, Pi, OpenCode, Open Code Review에 대한 원클릭 구성 지원
- 컨텍스트 압축(Context compression) — 에이전트 요청 내의 도구 출력을 모델이 보기 전에 선택적으로 축소합니다 (설정 → 컨텍스트 압축). 안전 모드(Safe mode)는 중복성만 제거하고 모든 고유한 줄은 유지하며, 공격적 모드(Aggressive mode)는 긴 로그, 배열 및 검색 결과도 샘플링합니다. 파일 읽기 및 소스 코드는 절대 변경되지 않습니다. 캡처된 Claude Code / Codex 트래픽의 경우 도구 출력이 안전 모드에서 6% 감소하고 공격적 모드에서는 17% 감소하며, 검색 결과는 24–56% 감소합니다. 요청당 절감액은 관측 가능성(Observability)에서 확인할 수 있습니다.
- AI 애플리케이션(AI Applications) — Claude Code, OpenCode, Open Code Review, Codex, Codex App, ZCode, Pi, OpenClaw, CSGClaw, Dify 및 AnythingLLM에 대한 원클릭 설정
데이터셋 지원(Dataset Support)
- CSGHub 플랫폼에서 데이터셋 다운로드
- 데이터셋 관리(Dataset management) — 로컬 데이터셋 목록 보기, 세부 정보 표시 및 삭제
설치(Installation)
데스크톱 클라이언트(Desktop client)
CSGLite 제품 페이지에서 데스크톱 클라이언트를 다운로드하세요.
CLI 클라이언트(CLI client)
Linux / macOS
curl -fsSL https://hub.opencsg.com/csghub-lite/install.sh | sh
버전 릴리스 고정하기:
curl -fsSL https://hub.opencsg.com/csghub-lite/install.sh | CSGHUB_LITE_VERSION=v0.8.55 sh
Windows PowerShell
irm https://hub.opencsg.com/csghub-lite/install.ps1 | iex
소스 코드로부터 (From source)
git clone https://github.com/opencsgs/csglite.git
cd csglite
make build
...
GitHub 릴리스에서 (From GitHub Releases)
Releases 페이지에서 사용 중인 플랫폼에 맞는 최신 바이너리를 다운로드하세요.
Docker
Docker 설치는 Docker 가이드를 참고하세요.
빠른 시작 (Quick Start)
# 모델 실행 — 다운로드, 서버 시작, 채팅까지 모두 자동화됨
csghub-lite run Qwen/Qwen3-0.6B-GGUF
...
참고: 설치 스크립트는 llama-server (추론에 필요함)를 자동으로 설치합니다. 소스 코드로부터 설치한 경우, 별도로 설치해야 합니다:
brew install llama.cpp(macOS) 또는 llama.cpp 릴리스에서 다운로드하세요.
LAN 클러스터 (LAN cluster)
같은 네트워크에 있는 머신들은 하나의 컴퓨팅 풀을 공유할 수 있습니다. 모든 머신에 동일한 시크릿(secret)을 부여하면 서로를 찾게 되며, 별도의 생성 또는 참여 단계가 필요 없습니다:
csghub-lite config set cluster_secret "a-long-shared-secret"
csghub-lite config set cluster_name "lab"
csghub-lite restart
동일한 값은 CSGHUB_LITE_CLUSTER_SECRET 및 CSGHUB_LITE_CLUSTER_NAME을 사용하여 설치 시점에 설정할 수 있습니다. 가장 먼저 시작하는 머신이 클러스터를 생성하고, 나중에 시작하는 머신들은 이를 감지하면 참여합니다. 이 머신이 제공할 수 없는 요청은 처리 가능한 멤버에게 전달되며, 모델은 다시 다운로드되는 대신 LAN을 통해 복사되고, 재부팅 시 변경되는 주소는 자동으로 인식됩니다. 두 개의 노드는 라이선스 없이 작동하지만, 더 많은 노드를 사용하려면 CSGLite Enterprise 라이선스가 필요합니다. 시크릿이 없는 머신은 단일 노드로 남아 클러스터 포트를 열지 않습니다.
라우팅(Routing), 모델 동기화(model sync), 조인 토큰(join tokens), 그리고 입장 코드(admission codes)는 클러스터 명령어 레퍼런스에 있습니다.
로컬 추론 기능 (Local Inference Capabilities)
CSGLite는 현재 여러 모델 패밀리를 로컬에서 실행할 수 있으며, 더 많은 런타임 유형이 계획되어 있습니다. 모델 상세 페이지에서는 다운로드된 모델이 현재 로컬 추론에 지원되는지 여부를 확인할 수 있습니다.
| 기능 | 상태 | 런타임 | 일반적인 모델 |
|---|---|---|---|
| 텍스트 생성/채팅 (Text generation / chat) | 지원됨 (Supported) | llama.cpp | Qwen/Qwen3, GLM, Llama, Mistral, DeepSeek distilled GGUF 모델 |
| ... |
이미지 모델 (Image models)
이미지 요청은 POST /v1/images/generations 및 POST /v1/images/edits를 사용합니다. NVIDIA, AMD, CPU 장치는 Diffusers 체크포인트를 실행합니다. Apple Silicon은 MLX Qwen-Image-2.1 체크포인트를 위해 MFLUX를, 다른 이미지 패밀리를 위해 Diffusers를 사용합니다. 다른 MLX 이미지 체크포인트는 다운로드 전부터 모든 플랫폼에서 지원되지 않습니다. 모델 라이브러리는 로컬에서 실행할 수 없는 모든 다운로드된 모델에 대해 실행 (Run) 기능을 비활성화합니다.
| 모델 | 런타임 | 참고 사항 |
|---|---|---|
Qwen/Qwen-Image, Qwen/Qwen-Image-2512 | Diffusers | 텍스트-이미지 (Text-to-image) |
| ... |
음성-텍스트 모델 (Text-to-speech models)
음성 합성은 자체 Python 런타임에서 실행되며, 절대 llama.cpp를 통하지 않습니다: 모델 출력을 파형으로 변환하는 보코더(vocoder) 또는 코덱 디코더(codec decoder)는 오직 모델 자체의 추론 스택에만 존재합니다. POST /v1/audio/speech로 합성하거나, 채팅에서 음성-텍스트 모델을 선택하고 텍스트를 보내 들을 수 있습니다.
| 모델 | 크기 | 목소리 | 참고 사항 |
|---|---|---|---|
openbmb/VoxCPM2 | 4.6 GB | 레퍼런스-오디오 복제 (Reference-audio cloning) | 네이티브 스트리밍; 오디오 VAE는 모델과 함께 제공됨 |
| ... |
GET /api/tts-voices?model=<id>는 주어진 모델이 렌더링할 수 있는 목록을 보여주는데, 이는 목소리가 고정된 세트가 아니라 모델별로 다르기 때문입니다. transformers 네이티브 경로는 SpeechT5, Bark, ParlerTTS, CSM, Dia 및 FastSpeech2 모델도 포함합니다.
실시간 음성 (Realtime voice)
OpenAI Realtime API와 호환되며 동일한 인식 및 합성 런타임에서 제공되는 풀-듀플렉스(Full-duplex) 음성은 다음과 같습니다:
| Transport | Endpoint | Audio |
|---|---|---|
| WebRTC | POST /v1/realtime/calls (SDP offer in, SDP answer out) | 미디어 트랙: Opus 입력, PCMU 출력; oai-events DataChannel에서 이벤트 수신 |
| WebSocket | GET /v1/realtime | Base64 PCM16을 input_audio_buffer.append 및 response.output_audio.delta에 입력 |
GET /v1/realtime/transcription은 인식 전용 세션을 엽니다. 사용자가 말하는 동안 부분적인 스크립트를 스트리밍하고, 문장이 끝나기 전에 합성(synthesis)이 재생을 시작하며, response.cancel를 통해 바지인(barge-in) 시 재생을 중단할 수 있습니다. 기본값과 제한은 config.json의 realtime 섹션(default_asr_model, default_tts_model, max_sessions, 그리고 미디어 포트를 고정해야 하는 배포를 위한 ICE 옵션)에서 설정합니다. 프로토콜 및 측정된 지연 시간(latencies)은 docs/guides/realtime-audio-api.md에 있습니다.
결정 (Decisions)
CSGLite는 로컬 결정 모델을 위해 OpenAI Decisions API의 POST /v1/decisions를 구현합니다: jev 태그가 지정된 JEV 모델 또는 typed-decisions(예: autotrust/JEV-9B 및 그 GGUF 양자화 버전)을 사용하거나, head llama.cpp가 직접 실행하는 네이티브 결정 모델(예: convaiinnovations/laya 및 laya-typed-decisions)을 사용합니다. 요청은 최대 200개의 질문에 걸쳐 하나의 input을 공유하며 생성된 텍스트 대신 보정된 확률(calibrated probabilities)을 반환합니다:
| Question type | 용도 | 주요 결과 |
|---|---|---|
predicate | 조건이 참인지 확인 | probability |
| ... | ||
| Model | 크기 | 채팅 |
| --- | --- | --- |
autotrust/JEV-9B | 17 GB (BF16) | 예 |
| ... | ||
| 다른 GGUF 모델 중 llama.cpp가 네이티브 결정 모델로 실행하는 경우(Julia, OpenJev, Lev, Kev, Nimble, Clef, Perplexity Decider, LFM2-D1)는 GGUF 메타데이터에서 인식되며 동일한 방식으로 제공됩니다. |
curl http://localhost:11435/v1/decisions -H "Content-Type: application/json" -d '{
"model": "huggingface/mradermacher/JEV-9B-GGUF",
"input": "I was charged twice for my order.",
...
'
OpenAI SDK의 client.decisions.create(...)는 base_url="http://localhost:11435/v1"을 사용하여 변경 없이 작동합니다. GGUF 양자화 모델은 기본 가중치만 포함하므로, 의사결정 어댑터가 담겨 있는 원본 저장소(autotrust/JEV-9B)도 가져와야 합니다. CSGLite는 이를 자동으로 변환하고 로드하며, 동일한 모델이 일반 채팅 답변을 계속 제공합니다. Laya는 의사결정 헤드가 있는 ModernBERT 인코더입니다: CSGLite가 첫 사용 시 GGUF로 변환하며, 오직 의사결정만 답변하고, Chat에서는 Decide 모드로 바로 열립니다. 다른 모델의 경우, Chat에서 모델을 선택하고 컴포저를 Decide로 전환하세요. 텍스트 입력만 가능합니다: input_image 부분은 거부됩니다. JEV API에 맞춰 작성된 클라이언트들을 위해 POST /v1/decide는 계속 사용 가능합니다. 자세한 내용은 docs/guides/typed-decisions.md을 참조하세요.
통합 (Integrations)
타사 모델 제공업체 (Third-Party Model Providers)
CSGLite는 타사의 OpenAI 호환 API 제공업체를 통합하는 것을 지원합니다. 설정(Settings)에서 제공업체를 구성하면, 해당 모델들이 Chat에서 로컬 및 OpenCSG 모델과 함께 표시됩니다.
지원되는 제공업체:
| Provider | Notes | Base URL |
|---|---|---|
| OpenAI | OpenAI-compatible | https://api.openai.com/v1 |
| ... |
코딩 에이전트 (Coding Agents)
인기 있는 코딩 에이전트에 대한 원클릭 구성입니다. 로컬, OpenCSG 또는 타사 제공업체의 모델들이 끊김 없이 작동합니다:
| Agent | Config Location | One-Click Setup |
|---|---|---|
| Claude Code | ~/.claude/settings.json | csghub-lite launch claude-code --model <model> |
| ... | ||
| 첫 번째 CSGLite 실행 후에는, 이후 실행들이 구성된 설정을 자동으로 사용하므로 수동 API 키나 base URL 설정이 필요하지 않습니다. |
예시:
# GLM 모델로 Claude Code 구성하기
csghub-lite launch claude-code --model "glm-4-flash"
...
AI 애플리케이션 (AI Applications)
AI 어시스턴트 애플리케이션을 위한 원클릭 설정:
| 앱 | 설명 | 설정 |
|---|---|---|
| Claude Code | Anthropic 에이전틱 코딩 도구 | csghub-lite launch claude-code 또는 Web UI → AI Apps |
| ... | ||
| 관리되는 앱은 선택한 모델과 함께 CSGLite의 OpenAI 호환 API 엔드포인트를 사용하도록 자동 구성됩니다. |
CLI 명령어
| 명령어 | 설명 |
|---|---|
csghub-lite run <model> | 풀(Pull), 서버 시작, 채팅 (모두 자동) |
| ... | |
모델 이름은 namespace/name 형식을 사용합니다. 예: Qwen/Qwen3-0.6B-GGUF. |
run 대 chat
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기