클라우드 없이 터미널에서 AI 코딩 에이전트 돌리기 — Ollama + OpenCode로 로컬 LLM 연결하기
솔직히 고백하자면, 저도 처음엔 로컬 LLM 세팅을 몇 번이나 포기했습니다. "그냥 Claude API 쓰면 되지"라는 생각으로 클라우드 API에 의존하다가, 어느 날 비행기 안에서 급하게 코드를 수정해야 하는 상황이 생겼을 때 손발이 완전히 묶여버린 경험을 했거든요. 그때부터 진지하게 오프라인 AI 코딩 환경을 파기 시작했습니다.
결국 한 달 정도 이것저것 삽질한 끝에 꽤 쓸 만한 구성을 찾아냈고, 그 내용을 여기에 정리해봤습니다. 터미널은 익숙하지만 로컬 LLM은 처음인 분들께 딱 맞는 글입니다. OpenCode는 SST 팀이 Go로 만든 터미널 기반 AI 코딩 에이전트인데, 오프라인으로 연결하는 구조가 생각보다 훨씬 단순합니다. 핵심은 OpenCode가 OpenAI 호환 API 엔드포인트를 지원하기 때문에, baseURL만 로컬 LLM 서버 주소로 바꾸면 끝이라는 것입니다. 클라우드 종속 없이 내 컴퓨터에서 모든 연산이 돌아가고, 코드가 외부로 한 줄도 나가지 않습니다.
이 글을 읽고 나면 Ollama나 LM Studio를 OpenCode와 연결하는 방법, 내 하드웨어에 맞는 모델을 고르는 기준, 그리고 실무에서 자주 걸리는 함정들을 파악할 수 있습니다. 특히 코드 프라이버시가 중요하거나 API 비용 없이 개발 자동화를 원하신다면 이 구성이 꽤 실용적인 선택지가 됩니다.
핵심 개념
OpenCode가 로컬 LLM과 연결되는 원리
OpenCode의 아키텍처를 한 줄로 요약하면 "설정 파일이 가리키는 곳이 모델이다"입니다. 실행 시점에 opencode.json을 읽어 baseURL을 로컬 서버 주소로 인식하면, 그 이후 동작은 클라우드 API와 완전히 동일하게 흘러갑니다.
[opencode.json 설정] ──실행 시 읽기──▶ [OpenCode TUI]
│
▼
[로컬 LLM 서버 (Ollama / LM Studio)]
│
▼
[모델 파일: Qwen3-Coder, Llama 3, Gemma 3 등]OpenAI 호환 API: OpenAI가 정의한
/v1/chat/completions엔드포인트 규격을 따르는 인터페이스입니다. Ollama, LM Studio 등 대부분의 로컬 LLM 서버가 이 규격을 지원하기 때문에, 클라이언트 코드 변경 없이baseURL만 교체하면 연결됩니다.
OpenCode는 두 가지 에이전트 모드를 Tab 키로 전환할 수 있습니다. Build 에이전트는 파일 편집과 셸 실행을 포함한 전체 권한을 갖고, Plan 에이전트는 읽기 전용으로 bash 실행 전 사용자 승인을 요구합니다. 처음 오프라인 환경을 구성할 때는 Plan 모드로 먼저 동작을 확인해보는 것이 안전합니다. 저도 이 순서로 시작해서 실수를 많이 줄였습니다.
내 하드웨어에 맞는 모델 고르기
모델 선택이 오프라인 환경에서 체감 성능의 거의 전부를 결정합니다. 메모리 기준으로 현실적인 선택지를 정리하면 다음과 같습니다.
| 환경 | 권장 모델 | 비고 |
|---|---|---|
| 8GB VRAM (독립 GPU) | 7B 4-bit 양자화 모델 | RTX 3060/4060 등 |
| 16GB RAM (통합 메모리) | Qwen2.5-Coder 7B, Gemma 3 4B | M1/M2 MacBook 기준 |
| 32GB RAM (통합 메모리) | Qwen3-Coder 30B, Gemma 3 27B | M2 Pro/Max 이상 |
| RTX 4060 Ti (16GB VRAM) | Llama 3.1 8B (~60 tokens/s) | 독립 GPU 고성능 |
표를 보다가 "통합 메모리"와 "VRAM"이 같은 표에 있어서 헷갈릴 수 있는데, 한 가지만 짚어두면 좋겠습니다. Apple Silicon의 통합 메모리는 CPU와 GPU가 같은 메모리 풀을 공유하는 구조라 16GB RAM 전체를 모델 로딩에 사용할 수 있습니다. 반면 독립 GPU는 VRAM 용량 안에서만 모델이 올라가고, 나머지는 시스템 RAM으로 넘어가면 속도가 크게 떨어집니다. 그래서 같은 16GB라도 M1 MacBook과 RTX 3060(12GB VRAM)의 체감이 다를 수 있습니다.
저는 M2 MacBook Pro 16GB로 qwen2.5-coder:7b를 주로 쓰는데, 간단한 리팩터링이나 파일 편집 정도는 충분히 쓸 만한 속도가 나옵니다. 단, 복잡한 멀티스텝 작업을 기대하면 조금 실망할 수 있습니다.
실전 적용
예시 1: Ollama + Qwen2.5-Coder로 오프라인 환경 구축 (가장 빠른 시작)
가장 많이 쓰이는 조합입니다. Ollama가 GPU 자동 감지와 OpenAI 호환 API를 모두 챙겨주기 때문에 설정이 단순합니다.
# 1. Ollama 설치 (macOS)
brew install ollama
# 2. 모델 다운로드
ollama pull qwen2.5-coder:7b # 16GB RAM 환경, ~4.5GB
# ollama pull qwen3-coder:30b # 32GB RAM이라면 이 쪽 권장, ~20GB
# 3. OpenCode 설치
npm install -g opencode-ai
# pnpm을 쓰신다면: pnpm add -g opencode-ai
# macOS에서 Homebrew를 선호한다면: brew install opencode
# (brew 방식은 패키지 관리자가 자동 업데이트를 처리해 편리합니다)
# 4. 설정 파일 작성
# 경로: ~/.config/opencode/opencode.json설정 파일이 핵심인데, 이거 하나 때문에 처음에 두 시간을 날렸습니다. 필드 하나씩 짚어드리겠습니다.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen2.5-coder:7b": { "name": "Qwen2.5 Coder 7B" }
}
}
},
"disabled_providers": ["openai", "anthropic", "gemini"]
}| 설정 키 | 역할 |
|---|---|
npm |
OpenCode가 이 공급자와 통신할 때 내부적으로 사용하는 어댑터 패키지. @ai-sdk/openai-compatible은 OpenAI 호환 API를 처리하는 공식 어댑터입니다. |
baseURL |
OpenCode가 쿼리를 보낼 로컬 서버 주소 |
disabled_providers |
클라우드 API 키 없어도 오류가 나지 않도록 비활성화 |
models |
OpenCode가 모델 목록을 자동 감지 못할 때 명시적으로 등록 |
# 5-A. Ollama v0.15+ 신버전 — 설정 파일 없이 바로 시작하고 싶다면
ollama launch opencode
# 5-B. 설정 파일을 직접 작성한 경우
opencodeollama launch opencode는 Ollama v0.15부터 지원되는 기능으로, Ollama가 OpenCode와의 연결 설정을 자동으로 처리해줍니다. 처음 세팅하는 분께는 이 방법으로 동작을 먼저 확인해보는 것을 권장합니다. 다만 모델 선택이나 공급자 비활성화 같은 세밀한 설정이 필요하다면 위 JSON 설정 파일 방식으로 가는 것이 더 유연합니다.
예시 2: LM Studio로 GPU 가속 오프라인 환경 구성 (GUI 기반)
LM Studio는 GUI로 모델을 관리할 수 있어서 터미널이 익숙하지 않은 분들도 접근하기 편합니다. 로컬 서버를 켜면 http://localhost:1234/v1에 OpenAI 호환 API가 노출됩니다. 예시 1과 구조는 동일하고, baseURL 포트 번호와 모델 경로만 다릅니다.
LM Studio 앱에서 원하는 모델을 로드하고 "Start Server" 버튼을 누른 뒤 설정 파일을 작성하면 됩니다.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"lmstudio": {
"npm": "@ai-sdk/openai-compatible",
"name": "LM Studio (local)",
"options": {
"baseURL": "http://localhost:1234/v1"
},
"models": {
"lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF": {
"name": "Llama 3.1 8B"
}
}
}
},
"disabled_providers": ["openai", "anthropic", "gemini"]
}독립 GPU가 있는 환경이라면 LM Studio가 자동으로 GPU 레이어를 활용하기 때문에, 같은 모델이라도 CPU 추론 대비 속도 차이가 꽤 납니다. 저는 예전에 동료가 RTX 4060에서 LM Studio로 돌리는 걸 봤는데, 같은 Llama 3.1 8B 모델인데도 제 MacBook CPU 추론보다 체감이 확실히 빠르더군요.
예시 3: 팀 공유 오프라인 LLM 환경 (기업 내부망, 중급 이상)
이 예시는 환경 변수와 내부 IP 설정이 포함되어 있어 중급 이상을 대상으로 합니다. 인터넷이 차단된 보안망 환경에서 Ollama를 내부 서버에 배포하고 팀 전체가 공유하는 구성입니다. 금융, 의료, 공공 도메인처럼 데이터 보안 요구사항이 엄격한 환경에서도 코드가 외부로 나가지 않기 때문에 활용할 수 있습니다. 지인 중 한 명이 이 방식으로 팀 내 공유 환경을 구축해서 꽤 잘 쓰고 있습니다.
# 내부 서버에서 Ollama를 팀 접근 가능하게 실행
OLLAMA_HOST=0.0.0.0:11434 ollama serve보안 주의:
0.0.0.0으로 열면 같은 네트워크의 모든 호스트에서 접근할 수 있습니다. 기업 내부망이라도 방화벽 규칙으로 허용 IP를 제한하는 것을 권장합니다. 인증 없이 열려 있는 Ollama 서버는 보안 담당자가 걸고 넘어질 지점입니다.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"internal-llm": {
"npm": "@ai-sdk/openai-compatible",
"name": "Internal LLM Server",
"options": {
"baseURL": "http://192.168.1.100:11434/v1"
},
"models": {
"qwen3-coder:30b": { "name": "Qwen3-Coder 30B (Shared)" }
}
}
}
}팀원 각자의 opencode.json에서 baseURL을 내부 서버 IP로 지정하면 됩니다. 192.168.1.100 부분을 실제 서버 IP로 바꿔주시면 됩니다.
실무에서 가장 흔한 실수
-
disabled_providers를 빠뜨리는 경우 — 클라우드 공급자를 비활성화하지 않으면 API 키가 없다는 오류가 뜨거나, 의도치 않게 클라우드로 요청이 나갈 수 있습니다. 오프라인 전용으로 쓸 때는 반드시 명시해주는 것이 좋습니다. -
Ollama 서버가 실행 중이지 않은 상태에서 OpenCode를 여는 경우 — OpenCode를 켰을 때 모델 연결이 안 된다면, 터미널에서
ollama serve가 실행 중인지 먼저 확인해볼 수 있습니다. 저도 처음엔 이것 때문에 한참 헤맸습니다. -
모델 이름을 정확히 쓰지 않는 경우 —
opencode.json의models키에 적는 모델 이름은ollama list명령으로 확인한 이름과 정확히 일치해야 합니다. 예를 들어qwen2.5-coder와qwen2.5-coder:7b는 다르게 인식될 수 있습니다.
장단점 분석
장점
| 항목 | 내용 |
|---|---|
| 완전한 프라이버시 | 코드와 컨텍스트가 외부 서버로 전송되지 않음 |
| API 비용 없음 | 초기 설정 후 쿼리 수 무제한, 요금 0원 |
| 오프라인 동작 | 비행기, 폐쇄망, 인터넷 불안정 환경에서 사용 가능 |
| 레이트 리밋 없음 | 하드웨어가 허용하는 만큼 쿼리 가능 |
| 지연 시간 단축 | API 라운드트립 없이 토큰 생성 즉시 시작 |
| 벤더 종속 없음 | 모델·공급자를 언제든 교체 가능 |
단점 및 주의사항
| 항목 | 내용 | 대응 방안 |
|---|---|---|
| 모델 품질 차이 | GPT-4o, Claude Sonnet 대비 복잡한 추론 성능 열위 | 파일 편집·리팩터링 등 단순 작업 위주로 활용 |
| 하드웨어 비용 | "무료"이지만 GPU VRAM·전력·유지보수 비용 발생 | 이미 보유한 장비 활용, 클라우드 API와 병행 사용 고려 |
| 설정 복잡도 | 클라우드 API 키 방식보다 초기 구성 단계 많음 | ollama launch opencode 단일 명령으로 간소화 가능 |
| 모델 다운로드 용량 | 7B 기준 ~4.5GB, 30B 기준 20GB+ 초기 다운로드 필요 | 네트워크 환경 좋을 때 미리 받아두기 |
| 멀티스텝 자율 작업 한계 | 복잡한 에이전트 작업에서는 여전히 클라우드 모델이 우위 | Plan 모드로 단계별 확인하며 진행 |
양자화(Quantization): 모델 가중치를 32비트 부동소수점에서 4비트 정수 등으로 압축하는 기법입니다. 메모리 사용량과 속도는 개선되지만 미세한 품질 손실이 있습니다. Ollama에서 다운로드하는 모델 대부분이 GGUF 포맷의 4-bit 양자화 버전입니다.
TUI(Terminal User Interface): 터미널 환경에서 텍스트로 구성된 그래픽 인터페이스입니다. OpenCode는 마우스 없이 키보드만으로 조작하는 TUI 앱입니다.
마치며
오프라인 OpenCode 환경의 핵심은 단순합니다 — 로컬 LLM 서버를 띄우고, opencode.json의 baseURL을 그 주소로 가리키면 됩니다.
코드 프라이버시가 중요하거나, 인터넷 없는 환경에서 개발해야 하거나, 단순 편집 작업을 API 비용 없이 자동화하고 싶다면 이 구성이 충분히 실용적인 선택입니다. 저는 Plan 모드로 먼저 시작하는 것을 항상 선호하는데, 처음엔 파일 읽기와 간단한 질문 응답으로 동작을 확인하다가 익숙해지면 Build 모드로 넘어가는 방식이 실수를 많이 줄여줬습니다.
지금 바로 시작해볼 수 있는 3단계:
brew install ollama후ollama pull qwen2.5-coder:7b로 모델을 받아두실 수 있습니다. 16GB RAM 환경이라면 이 조합으로 충분히 시작할 수 있습니다.~/.config/opencode/opencode.json을 위 예시 형식대로 작성해볼 수 있습니다.baseURL을http://localhost:11434/v1로 지정하고disabled_providers에 클라우드 공급자를 나열하는 것이 핵심입니다.- 프로젝트 폴더에서
opencode를 실행하고 Plan 모드로 먼저 탐색해볼 수 있습니다.Tab키로 Build와 Plan 모드를 전환할 수 있습니다.
참고 자료
- OpenCode 공식 사이트 | opencode.ai
- OpenCode 공식 문서 — Config | opencode.ai
- OpenCode 공식 문서 — Providers | opencode.ai
- OpenCode 공식 문서 — Models | opencode.ai
- GitHub — opencode-ai/opencode
- Building a Local AI Coding Environment with Ollama and OpenCode | DevelopersIO
- I Built a Local AI Coding Agent Home Lab Setup With OpenCode and Ollama | Virtualization Howto
- Run Gemma 4 Locally + OpenCode: Free, Offline, Unlimited Vibe Coding | Popular AI Tools
- OpenCode: A model-neutral AI coding assistant for OpenShift Dev Spaces | Red Hat Developer
- Drive a Local LLM From Your Terminal With OpenCode and LM Studio | Abishek Lakandri
- OpenCode with Local LLMs — Can a 16 GB GPU Compete With The Cloud? | Patshead.com
- OpenCode: AI-Assisted Coding with Free and Local LLMs | Infralovers
- OpenCode Quickstart | LiteLLM Docs
- OpenCode 튜토리얼 – Ollama + Qwen3-Coder로 무료 로컬 AI 코딩 환경 구축 | AI Sparkup
- Local Agentic Development with Ollama and OpenCode | DEV Community
- OpenCode: The Open Source AI Coding Agent Reviewed | DEV Community