Tabby: 자체 호스팅 AI 코딩 어시스턴트
(github.com/TabbyML)- Tabby는 GitHub Copilot의 오픈소스·온프레미스 대안으로 제공되는 자체 호스팅 AI 코딩 어시스턴트이며, 클라우드 서비스 없이 운영하는 흐름을 목표로 함
- 서버는 DBMS나 클라우드 서비스가 필요 없는 자체 포함형 구성을 내세우며, OpenAPI 인터페이스로 Cloud IDE 같은 기존 인프라와 통합하기 쉽게 설계됨
- 실행 환경은 소비자급 GPU를 지원하며, Docker 명령 하나로
StarCoder-1B코드 모델과Qwen2-1.5B-Instruct채팅 모델을 사용해 서버를 띄울 수 있음 - 최근 업데이트에는 GitLab Merge Request를 컨텍스트로 인덱싱하는 v0.30, REST API로 자체 문서를 추가하는 v0.29, 공유 가능한 Pages로 Answer Engine 메시지를 바꾸는 v0.28 등이 포함됨
- IDE/Editor 확장, 설치, 설정 문서와 기여 가이드가 제공되며, Rust 환경과 일부 의존성을 준비하면
cargo build로 직접 빌드할 수 있음
Tabby의 역할과 기본 특징
- Tabby는 자체 호스팅 AI 코딩 어시스턴트로, GitHub Copilot의 오픈소스 및 온프레미스 대안임
- 주요 특징은 세 가지로 정리됨
- 자체 포함형이라 DBMS나 클라우드 서비스가 필요 없음
- OpenAPI 인터페이스를 제공해 Cloud IDE 같은 기존 인프라와 통합하기 쉬움
- 소비자급 GPU를 지원함
- 프로젝트는 문서, Slack, 로드맵 링크를 제공함
- 라이브 데모는 Tabby 웹사이트에서 열 수 있음
최근 변경 사항
- 2025-12-12: GitHub 이슈를 Pochi 작업에 연결해 구현하고, 사이드바에서 CI/Lint/Test 결과 분석과 함께 PR을 만들 수 있는
vscode@0.20.0이 제공됨 - 2025-07-02: v0.30이 GitLab Merge Request를 컨텍스트로 인덱싱하는 기능을 지원함
- 2025-05-25: Agent 비공개 프리뷰 대기열 참여 안내가 제공됨
- 2025-05-20: v0.29에서 REST API를 통해 자체 문서를 Tabby에 추가할 수 있음
- 2025-05-01: v0.28이 Answer Engine 메시지를 지속적이고 공유 가능한 Pages로 변환함
- 2025-03-31: v0.27이 채팅 사이드 패널의
@메뉴를 더 풍부하게 제공함
이전 업데이트에서 드러나는 기능 범위
- Answer Engine은 v0.13.0에서 내부 엔지니어링 팀을 위한 중앙 지식 엔진으로 소개됐으며, 개발팀 내부 데이터와 통합해 답변을 제공함
- Tabby는 GitLab SSO, 자체 호스팅 GitHub/GitLab, HTTP API 통합, Code Browser의 repo-context 같은 통합·설정 기능을 추가해 왔음
- IDE 플러그인 흐름에는 VSCode/Vim/IntelliJ 업데이트, VSCode 채팅 사이드 패널, 채팅 명령을 통한 편집, 인라인 완성의 여러 선택지, 자동 생성 커밋 메시지가 포함됨
- 코드 완성은 로컬 LSP 선언과 최근 수정된 코드 같은 로컬 관련 스니펫을 활용하며, v0.3.0에서는 RAG 기반 코드 완성이 기본 활성화됐음
- 모델 지원 측면에서는 CodeGemma, CodeQwen, Codestral, CodeLlama 7B 실험 지원, Apple M1/M2 Metal 추론 지원 등이 언급됨
시작 방법과 실행 예시
- 시작 문서는 Getting Started에서 제공됨
- 가장 쉬운 서버 실행 방식은 Docker 명령 사용임
docker run -it \
--gpus all -p 8080:8080 -v $HOME/.tabby:/data \
tabbyml/tabby \
serve --model StarCoder-1B --device cuda --chat-model Qwen2-1.5B-Instruct
- 추가 옵션은 추론 타입과 병렬성 같은 설정을 포함하며, 별도 문서 페이지에서 확인할 수 있음
기여와 빌드
- 전체 기여 가이드는 CONTRIBUTING.md에 있음
- 소스 코드는 서브모듈까지 함께 클론함
git clone --recurse-submodules https://github.com/TabbyML/tabby
cd tabby
- 이미 저장소를 클론했다면
git submodule update --recursive --init명령으로 모든 서브모듈을 가져올 수 있음 - 빌드 전 준비 사항은 다음과 같음
- Rust 환경 설정
- macOS:
brew install protobuf - Ubuntu/Debian:
apt install protobuf-compiler libopenblas-dev - Ubuntu 유용 도구:
apt install make sqlite3 graphviz
- 준비가 끝나면
cargo build로 Tabby를 빌드할 수 있음 - 기여 흐름은 변경 후 Pull Request 제출로 이어짐
댓글과 토론
Hacker News 의견들
-
홈페이지의
findMaxElement함수 완성 데모는 앞으로 올 모습, 어쩌면 이미 현재 상태를 잘 보여주는 예시 같음
그 함수에 제안된 Python 6줄은 그냥return max(arr)로 대체 가능하고, 동작은 하지만 완전히 주니어 수준 코드임
이런 끔찍한 코드 자체도 무섭지만, 이를 맹목적으로 자동완성하는 사람들이 실력 성장을 멈출 것 같아 더 걱정됨
스토리 포인트는 벌 수 있겠지만, 실제로 개발자로서 더 나아졌는지는 의문임- 이건 자기 보정될 문제라고 봄. 이 정도 품질의 코드는 제품으로 내보낼 수 없고, 결국 테스트를 통과하려면 LLM이 못 해주는 마지막 20~30%의 세부사항을 이해해야 함
그런데 그 20%를 이해하려면 LLM이 처리한 80%도 이해해야 하므로, LLM이 배포까지 대신하진 못한다는 점에서 크게 걱정하지 않음 - 반대로 이게 다음 단계의 추상화 계층이 될 수도 있음
기계어 → 어셈블리 → C → Python → LLM(자연어)처럼, 사람의 프롬프트를 Python 같은 중간 코드로 컴파일하는 셈임
CPython 초기 버전도 완벽하지 않았을 테고 엔지니어들도 불안했을 것임. 운이 좋다면 이 새 “컴파일러”도 점점 더 좋아지고 효율적이 되겠지만, 완벽하진 않을 것임
그래도 사람들이 어셈블리를 직접 다루지 않는 대가를 이미 치르고 있는 것과 비슷한 비용을 내게 될 수 있음 - Cursor 제안을 받을 때 거의 매번 이어서 “더 나은 방법이 있나?”라고 물어보는 게 과소평가된 습관임
- 예전에는 뭔가를 알고 있었음. Google이 생긴 뒤엔 그냥 찾아봤지만, 그래도 직접 할 수는 있었음
이제 AI가 생겨서 대신 해달라고 물어보게 됐고, 결국 아는 것도 없고 할 수 있는 것도 없어짐 - 그 예시는 그 코드를 홈페이지 데모로 고른 회사 판단을 더 많이 보여주는 것 같음
- 이건 자기 보정될 문제라고 봄. 이 정도 품질의 코드는 제품으로 내보낼 수 없고, 결국 테스트를 통과하려면 LLM이 못 해주는 마지막 20~30%의 세부사항을 이해해야 함
-
우리 프로젝트가 일요일에 HN 첫 페이지에 오를 줄은 몰랐음
Tabby는 2년 전 출시 이후 크게 발전했고 https://www.tabbyml.com, 이제 코드 완성과 코드베이스 채팅을 갖춘 종합 AI 개발자 플랫폼이 됐음
팀/엔터프라이즈 용도에 맞춰 SSO, 접근 제어, 사용자 인증도 지원함 https://demo.tabbyml.com/search/how-to-add-an-embedding-api-...
도입한 사용자들은 Tabby가 온프레미스 제공 방식에서 완전한 셀프서비스 온보딩을 제공하는 유일한 플랫폼이라는 점을 발견했고, 성능도 시장의 다른 선택지와 견줄 만하니 궁금하면 시도해보길 권함
https://www.reddit.com/r/LocalLLaMA/s/lznmkWJhAZ
https://www.linkedin.com/posts/kelvinmu_last-week-i-introduc...- MSVC용 플러그인이 있는지 궁금함
- Nvidia와 Apple에서만 호환되나? AMD GPU에서도 동작하는지 궁금함
-
로컬 AI를 잘 모르지만 써보고 싶은 입장에서, “run tabby in 1 minute” https://github.com/TabbyML/tabby#run-tabby-in-1-minute가 예를 들어 ChatGPT 무료 4o-mini와 비교해 어떤 수준인지 궁금함
중간 사양 MacBook Pro에서 아래 Docker 명령을 실행하면 속도와 능력이 비슷한 AI를 쓸 수 있는지, 아니면 아직 그 정도는 아닌지 알고 싶음
docker run -it --gpus all -p 8080:8080 -v $HOME/.tabby:/data tabbyml/tabby serve --model StarCoder-1B --device cuda --chat-model Qwen2-1.5B-Instruct
보니 MacBook용 별도 안내 페이지가 있고 문맥이 더 있음 https://tabby.tabbyml.com/docs/quick-start/installation/appl...
“M1/M2의 연산 능력은 제한적이라 개인 사용에는 충분할 수 있지만, 팀용 공유 인스턴스가 필요하면 CUDA나 ROCm 기반 Docker 호스팅을 고려하라”고 되어 있음- gpt-4o-mini는 코드에서 좋은 LLM이 무엇을 할 수 있는지 판단하는 기준으로는 최선이 아닐 수 있음: https://aider.chat/docs/leaderboards/#aider-polyglot-benchma...
1.5B 같은 아주 작은 모델은 꽤 멍청해서 대화형으로 코드를 생성하는 데는 좋지 않지만, 3B 이하 모델도 탭 완성 제안은 꽤 잘할 수 있음
로컬에서 돌릴 수 있는 더 큰 “오픈” 모델도 있고, 32B~70B 범위 모델은 코드 작성 포함 거의 모든 면에서 gpt-4o-mini보다 훨씬 나을 수 있음. 예를 들면llama3.3-70b-instruct와qwen2.5-coder-32b-instruct가 꽤 괜찮음
RAM이 정말 부족하면qwen2.5-coder-7b-instruct나codegemma-7b-it도 간단한 작업에는 쓸 만할 수 있음
“중간 사양 MacBook Pro”라는 표현만으로는 부족하고, RAM이 얼마나 되는지가 중요함. 경험칙으로 매개변수 1B당 약 1GB RAM이 필요함
강하게 양자화하면 500MB, 비양자화 모델은 2GB 정도지만, 8비트 양자화는 보통 1GB 정도이고 대체로 괜찮음 - 부가 질문으로, 오픈소스 모델은 비공개 모델보다 덜 “똑똑한” 경향이 있는데, 관련 기술 문서를 질의해 문맥에 넣는 식으로 더 나은 컨텍스트를 제공해 보완할 계획이 있는지 궁금함
- gpt-4o-mini는 코드에서 좋은 LLM이 무엇을 할 수 있는지 판단하는 기준으로는 최선이 아닐 수 있음: https://aider.chat/docs/leaderboards/#aider-polyglot-benchma...
-
“IDE / 확장 telemetry 토글”이 Community Edition에서는 꺼지지 않음. 이 원격 측정 데이터에 무엇이 들어가는지 궁금함
- 수집되는 상태 정보는 대략 아래 구조임
struct HealthState {
model: String,
chat_model: Option,
device: String,
arch: String,
cpu_info: String,
cpu_count: usize,
cuda_devices: Vec,
version: Version,
webserver: Option,
}
https://tabby.tabbyml.com/docs/administration/usage-collecti...
- 수집되는 상태 정보는 대략 아래 구조임
-
비슷한 용도로 Continue.dev와 ollama를 쓰고 있는데, 이 분야에 도구가 더 늘어나는 건 늘 반가움
다만 평소처럼 실제로 좋은 모델, 예를 들면 Qwen2.5-coder 32B를 돌리려면 꽤 강력한 하드웨어가 필요함 -
예시들이 전부 원래는 라이브러리에서 찾을 법한 코드이고, 일부 코드는 품질도 의심스러움
LLM은 코드베이스용 스팸 봇이 되는 건가? -
“여러 NVIDIA GPU를 활용하는 방법”에 따르면 Tabby는 단일 GPU만 지원하고, 여러 GPU를 쓰려면 Tabby 인스턴스를 여러 개 띄운 뒤 CUDA는
CUDA_VISIBLE_DEVICES, ROCm은HIP_VISIBLE_DEVICES를 설정하라고 되어 있음
그렇다면 NVLink로 연결된 GPU 2개를 추론에 쓰는 건 지원하지 않는 건지, 아니면 NVLink가 두 GPU를 하나처럼 다루므로 다른 상황인지 궁금함- 여러 GPU를 더 잘 활용하려면 모델 서빙 전용 백엔드를 쓰는 걸 권장함
예시는 https://tabby.tabbyml.com/docs/references/models-http-api/vl...를 참고하면 됨
- 여러 GPU를 더 잘 활용하려면 모델 서빙 전용 백엔드를 쓰는 걸 권장함
-
멋진 프로젝트임. 큰 회사에 데이터를 보내고 약관을 믿어야 하지 않는다는 아이디어가 특히 마음에 듦
코딩 어시스턴트의 효과는 컨텍스트 길이에 직접 비례하는데, 개인 컴퓨터에서 돌릴 수 있는 오픈 모델은 보통 훨씬 작음
더 복잡한 코드베이스에서 얼마나 유용한지 정량화한 자료가 있으면 좋겠음- 100% 로컬 코딩 어시스턴트가 널리 퍼지길 바라지만, 지금은 “$10K+ GPU에서 가장 잘 동작”이라는 권장이 걸림돌이라 결국 큰 회사를 쓸 수밖에 없음
-
권장 하드웨어가 궁금함. GPU가 필요한가? 오래된 Ryzen APU(Zen 3와 Vega 7 그래픽)에서도 괜찮게 돌아갈 수 있을까?
- 자체 호스팅 LLM의 일반적인 병목은 메모리 대역폭임
내장 그래픽이 있든 없든 큰 차이는 없고, CPU만으로 돌리면 모델은 똑같이 매우 느리게 실행됨
Mac이 LLM에 그럭저럭 괜찮은 이유는 Apple Silicon의 메모리 대역폭이 특이하게 높기 때문이지만, 매우 빠른 VRAM을 갖춘 고급 GPU 속도에는 한참 못 미침
탭 완성에 쓰는 아주 작은 모델이라면 오래된 AMD CPU도 아마 괜찮게 처리할 수 있음 - 3090으로 로컬 구성한 예시는 https://www.reddit.com/r/LocalLLaMA/s/lznmkWJhAZ에서 볼 수 있음
- 자체 호스팅 LLM의 일반적인 병목은 메모리 대역폭임
-
아주 멋짐. 특히 Eclipse 클라이언트가 있어서 반가움 https://github.com/TabbyML/tabby/tree/3bd73a8c59a1c21312e812...
다만 Eclipse 클라이언트 정보를 찾으려면 좀 뒤져야 했음. 메인 README에도, 문서의 IDE 확장 목록에도 없었음
단순 누락인지, 아직 “본격 공개”할 준비가 안 된 건지는 모르겠음