164k stars, 23개 모노레포 패키지, Bun + SST + Tauri + SolidJS로 짜인 풀스택 AI 코딩 도구. Claude Code 와 비슷한 자리에 있지만 모든 게 오픈되어 있다.
한 마디로, 터미널에서 도는 오픈소스 Claude Code.
OpenCode는 anoma.ly(SST 팀이 만든 회사)에서 공개한 오픈소스 AI 코딩 에이전트다. 터미널에서 opencode 한 줄로 띄우면, 내 코드베이스를 이해하고, 파일을 수정하고, 테스트를 돌리고, git 워크플로우까지 자연어 명령으로 처리해 준다.
Claude Code, Cursor, Codex, Gemini CLI 처럼 "코딩 에이전트 CLI" 카테고리에 들어가지만, 결정적 차이가 두 가지 있다. 첫째, MIT 라이선스로 코드가 전부 열려 있어 어떤 LLM 공급자든 갈아 끼울 수 있다. 둘째, 단순 CLI 가 아니라 TUI · 데스크탑 · 웹 · IDE 익스텐션 · SDK · Slack 봇 · GitHub/GitLab 자동화까지 같은 코어 위에서 돌아가는 모노레포 플랫폼이다.
이 글의 핵심 메시지.
같은 코딩 에이전트 카테고리에서, 한쪽은 모델·UI·툴이 한 회사에 묶여 있고, 다른 한쪽은 LLM 공급자·UI 폼팩터·도구 시스템·플러그인까지 전부 교체 가능한 오픈 플랫폼이다. "바이브 코딩"을 하면서 동시에 내부 구조까지 학습 재료로 쓸 수 있는 보기 드문 레포다.
트렌딩에 머무는 이유 세 가지.
2026년 들어 코딩 에이전트 시장은 폭발적으로 커졌다. 트렌딩 상위에는 Claude Code, Codex, cc-switch, opencode 가 거의 매일 같이 떠 있다. 그 중 OpenCode 가 164k stars · 19.4k forks · 13,287 commits · 809 releases까지 올라온 데에는 명확한 이유가 있다.
Anthropic, OpenAI, Google, OpenRouter, AWS Bedrock, Groq, Mistral, 로컬 Ollama 등 어떤 공급자든 opencode.json 한 줄로 갈아 끼울 수 있다. 자체 큐레이션 모델 묶음인 "OpenCode Zen"도 제공하지만, 강제하지 않는다.
같은 OpenCode 엔진이 터미널 TUI · 데스크탑 앱(Tauri, BETA) · 웹 인터페이스 · VS Code/JetBrains 익스텐션 · Slack 봇 · GitHub/GitLab Action · 외부 SDK 로 동시에 노출된다. 23개 패키지 모노레포가 그 증거.
Claude Code 가 정의한 "Agent Skills" 표준은 그대로 호환되고, MCP(Model Context Protocol), ACP(Agent Client Protocol), LSP(Language Server Protocol) 까지 별도 어댑터 없이 설정 한 줄로 붙는다. 결과적으로 한번 짠 도구를 어떤 에이전트에서든 재사용할 수 있다.
안드로이드 vs 아이폰을 떠올리면 쉽다. Claude Code 가 "공식 펌웨어가 가장 매끄러운 아이폰"이라면, OpenCode 는 "AOSP(Android Open Source Project) 처럼 누구나 분기·수정·재배포할 수 있는 오픈 플랫폼"이다. 두 진영 다 살아남을 수밖에 없는 이유와 정확히 같다.
백엔드 · 프론트엔드 · 인프라 · 데스크탑.
OpenCode 는 단일 언어 단일 프레임워크가 아니다. TypeScript 65.7% · MDX 30.9% · CSS 2.9%로 구성되며, 핵심 런타임은 Bun, 빌드 시스템은 Turbo, 인프라 코드는 SST를 쓴다.
Bun.file() 같은 자체 API 가 풍부하다. OpenCode 는 가능하면 Node 표준 API 보다 Bun 네이티브 API 를 쓰는 게 코딩 규칙이다.bun turbo typecheck 한 줄이 23개 패키지 전체 타입 체크.sst.config.ts의 home: 'cloudflare'가 기반이며, AWS 리소스(Lambda 등)는 일부 서비스에 병행 사용된다. OpenCode 가 Anomaly 사의 클라우드 기능(Share, Zen, GitHub App)을 운영하는 기반.hono-openapi로 라우트에서 자동으로 OpenAPI 스펙을 뽑아 SDK 까지 생성한다. ./packages/sdk/js/script/build.ts로 JS SDK 가 자동 재생성되는 게 이 흐름.packages/effect-drizzle-sqlite에 Effect 와의 통합 레이어가 따로 있다.ai는 Vercel AI SDK, OpenAI/Anthropic/Google 등 공급자를 통합 인터페이스로 호출하는 추상화 계층. OpenCode 는 자체 LLM 추상화 + ai SDK 를 같이 쓴다.packages/docs는 Starlight(=Astro 기반 문서 사이트 빌더). MDX 30.9%가 여기서 나온다. opencode.ai/docs 가 그 결과.packages/effect-drizzle-sqlite에 Drizzle 어댑터가 별도 존재한다는 점에서, Effect 가 OpenCode 의 코어 비즈니스 로직을 지탱하는 패러다임임을 알 수 있다.시스템 구조도 + 핵심 설계 패턴.
OpenCode 의 아키텍처를 한 장으로 그리면 이렇게 된다. 왼쪽은 사용자가 보는 폼팩터, 가운데는 공통 코어, 오른쪽은 외부 통합점이다.
┌──────────────────────────────────────────────────────────────────┐
│ 사용자 폼팩터 (Frontend) │
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ TUI(CLI) │ │ Desktop │ │ Web App │ │ IDE Ext. │ │
│ │ Bun+ANSI │ │ Tauri+Rust│ │ SolidStart │ │ vscode/zed │ │
│ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │
│ └────────┬───────┴───────┬──────┴────────┬──────┘ │
└─────────────────┼───────────────┼───────────────┼───────────────┘
│ Hono + zod │ SSE/WS │
▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────┐
│ OpenCode Core (packages/opencode + packages/core) │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Session Manager ──▶ Drizzle ORM ──▶ SQLite (로컬) │ │
│ │ Agent Runner ──▶ Build / Plan / General / Explore │ │
│ │ Tool Executor ──▶ read/edit/grep/bash/task/webfetch │ │
│ │ Permission Layer ──▶ ask / allow / deny (글로브 매칭) │ │
│ │ Plugin Host ──▶ @opencode-ai/plugin (workspace:*) │ │
│ │ Skill Registry ──▶ AGENTS.md + .opencode/agents/*.md │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────┐ │
│ │ LLM Router (ai SDK) │ │
│ └─────────┬────────────┘ │
└────────────────────────┼─────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌────────┐ ┌──────────┐ ┌────────────┐
│Anthropic│ │ OpenAI │ │ Google / │
│ Claude │ │ GPT-5 │ │ Groq / │
│ │ │ │ │ Bedrock / │
└────────┘ └──────────┘ │ OpenRouter │
└────────────┘
▲
│ 외부 통합 (MCP · ACP · LSP)
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌────────┐ ┌──────────┐ ┌────────────┐
│ MCP │ │ ACP │ │ LSP │
│ Server │ │ Server │ │ Server │
│ (any) │ │ (Zed) │ │ (any lang)│
└────────┘ └──────────┘ └────────────┘
packages/opencode + packages/core 가 모든 비즈니스 로직을 들고 있고, TUI/Desktop/Web 은 같은 코어 위에 얇은 UI 레이어만 얹는다. 새로운 UI 폼팩터를 추가해도 에이전트 동작은 그대로 재사용되는 구조.
이게 가능한 이유는 코어가 자체 HTTP 서버를 띄우기 때문이다. opencode serve 한 번이면 SDK·웹·IDE 가 같은 엔드포인트로 붙는다.
사용자가 직접 대화하는 Primary Agent(build, plan) 와, 그 안에서 자동으로 호출되는 Subagent(general, explore, scout) 가 분리되어 있다. Primary 는 Tab 키로, Subagent 는 @general 같은 @멘션으로 호출.
거기에 사용자에게 보이지 않는 Hidden 시스템 에이전트 세 종(compaction, title, summary)이 백그라운드로 도는데, 각각 긴 컨텍스트 요약 · 세션 제목 자동 생성 · 종료 후 회고를 담당한다.
에이전트가 어떤 툴을 쓰는지 다 opencode.json의 permission 으로 통제된다. edit · bash · webfetch · websearch · skill · task 같은 키마다 "allow" / "ask" / "deny" 셋 중 하나. 글로브 패턴까지 받아서 "git push": "ask" 같은 세밀한 룰이 가능하다.
package.json의 workspaces.catalog 에 모든 외부 의존성 버전을 한 곳에 못 박는다. 각 패키지는 "zod": "catalog:" 처럼 가리키기만 한다. 버전 드리프트를 한 파일로 막는 단순하면서 강력한 패턴.
23개 패키지가 각자 무엇을 하는가.
레포 루트의 packages/ 아래에 23개 워크스페이스가 들어 있다. 역할에 따라 묶어 보면 이렇다.
opencode는 사용자가 실제로 실행하는 CLI 엔트리. core는 그 안에서 쓰이는 도메인 로직(세션 · 메시지 · 툴 호출 · 컨텍스트 압축). 모든 폼팩터가 이 둘에 의존한다.
LLM 공급자 추상화 레이어. provider/model-id 형식의 모델 ID 를 받아 Anthropic/OpenAI/Google/Groq/Bedrock/OpenRouter 등 어떤 백엔드로든 라우팅. @openrouter/ai-sdk-provider는 패치까지 적용되어 있다.
app은 SolidStart 웹 앱(opencode.ai 의 일부). web은 랜딩/문서 자산. ui는 Kobalte + Tailwind 기반 공용 컴포넌트. console은 Anomaly 대시보드. storybook은 UI 컴포넌트 카탈로그.
Tauri 데스크탑 앱. bun --cwd packages/desktop tauri dev 한 줄로 개발 모드 실행. .dmg / .exe / .deb / .rpm / .AppImage 멀티 플랫폼 빌드.
Astro Starlight 기반 공식 문서 사이트(opencode.ai/docs). 20+ 개 언어 번역. README 의 README.ko.md 등 21개 언어 README 가 여기서 관리된다.
Slack 봇 패키지. 채널에서 멘션으로 OpenCode 를 호출할 수 있게 해 준다(예: @opencode "main 브랜치 머지 충돌 좀 봐줘").
tui는 터미널 UI 패키지 — Bun + ANSI 렌더링으로 키보드만으로 조작하는 인터페이스. cli는 커맨드라인 진입점 패키지. IDE 통합(VS Code · Zed)은 독립 패키지가 아니라 레포 루트의 .vscode/·.zed/ 에디터 설정 파일로 구현된다.
plugin은 외부 개발자가 OpenCode 동작을 후킹할 수 있는 플러그인 API. script는 빌드/배포 자동화. sdk는 자동 생성되는 JS SDK(./packages/sdk/js/script/build.ts로 재생성).
containers는 격리된 코드 실행 샌드박스. function은 서버리스 핸들러. http-recorder는 LLM 호출/네트워크 트래픽 기록(디버깅·재현용). identity는 사용자 인증(OpenAuth 기반). enterprise는 SSO·감사 로그 등 유료 기능.
Effect + Drizzle ORM + SQLite 의 조합을 깔끔하게 추상화한 어댑터. 다른 OpenCode 패키지가 로컬 SQLite 와 상호작용할 때 이걸 통한다.
OpenCode 자기 자신의 코딩 규칙. "Bun 네이티브 API 우선", "try/catch 회피", "any 금지", "destructuring 자제", "Drizzle snake_case", "테스트는 mock 회피" 같은 룰이 적혀 있다. 이게 사용자 프로젝트에 /init으로 생성되는 AGENTS.md 의 본보기다.
인프라 정의(SST) · Nix 빌드 환경 · Turbo 파이프라인 · Bun 락파일 · Bun 런타임 설정. "같은 코드가 어떤 OS, 어떤 머신에서도 똑같이 빌드되도록" 굳히는 데 들어간 정성이 보인다.
@standard-community/standard-openapi, solid-js, @ai-sdk/google 등 총 9개 패키지에 직접 패치 적용(@openrouter/ai-sdk-provider는 패치 목록에 없음). 외부 의존성에 버그가 있으면 fork 가 아니라 patches/로 우회한다 — Bun 의 patchedDependencies 기능 활용.
이 레포에서 뽑아낼 수 있는 학습 모듈.
OpenCode 의 가치는 "써 보기"보다 "코드를 읽기"에 있다. 다음 7가지 학습 트랙은 각자 별개의 책 한 권 분량이고, 이 한 레포에서 다 만져 볼 수 있다.
packages/* 23개를 workspaces.catalog로 묶어 버전 드리프트를 막는 패턴은 어떤 풀스택 회사에서도 그대로 적용 가능. Turbo 의 캐시 키 설계 · 원격 캐시 · dryrun 도 같이 학습.
실습 아이디어: 본인의 작은 모노레포를 만들고, catalog 패턴을 적용해 zod 버전을 한 곳에서 바꾸면 모든 패키지가 따라가게 만들기.
라우트 정의 → OpenAPI 스펙 → JS SDK 자동 생성의 파이프라인이 packages/sdk/js/script/build.ts에 통째로 들어 있다. 토이 프로젝트 한 개로 그대로 모방 가능.
실습 아이디어: Hono + zod + hono-openapi 로 "할 일" REST API 를 짜고, 거기서 자동 생성된 SDK 를 프론트엔드에서 호출.
React 익숙한 사람에게는 "왜 useEffect 가 필요 없는가"가 충격. createSignal/createMemo/createResource 만으로 상태/계산/비동기를 다룬다. 번들 크기도 React 의 1/4 수준.
실습 아이디어: Counter → Todo → Chat UI 순으로 SolidStart 앱을 만들어 보고, 같은 걸 React 로도 짜서 번들 크기·렌더 횟수 비교.
packages/desktop이 어떻게 멀티 OS 바이너리를 짜내는지(서명·공증·자동 업데이트 포함) 그대로 따라할 수 있는 청사진. Electron 이 무겁다고 느꼈다면 Tauri 가 답.
실습 아이디어: SolidJS 로 만든 작은 메모 앱을 Tauri 로 감싸 macOS .dmg + Windows .exe 까지 빌드해 보기. GitHub Actions 의 release 워크플로우까지 모방.
sst.config.ts에 람다·CloudFront·도메인을 코드로 정의. Pulumi 와 비슷한 흐름이지만 풀스택 친화적. "vercel 이 너무 비싸지면 SST 로 AWS 직접 띄우는 게 답"이라는 결론에 자연스럽게 도달한다.
실습 아이디어: Next.js 사이드 프로젝트 하나를 Vercel 에서 SST 의 OpenNext 로 옮겨 보고, 비용·콜드스타트·배포 시간 비교.
3대 프로토콜이 한 레포에 다 들어 있다. MCP 서버 만들기 → OpenCode 에 붙이기 → 다른 에이전트(Claude Code, Cursor)에서 재사용까지 한 번에 학습 가능.
실습 아이디어: 사내 위키 검색 MCP 서버를 만들고, OpenCode·Claude Code 둘 다에 등록해서 같은 도구가 양쪽에서 동작하는지 확인.
.opencode/agents/*.md에 마크다운 프론트매터로 에이전트를 선언하는 방식은 Claude Code 의 Skills 표준과 거의 동일. 권한 글로브 매칭("git push": "ask") 같은 패턴은 사내 에이전트 운영 룰북에 그대로 쓰일 수 있다.
실습 아이디어: 보안 감사용 read-only 에이전트, 문서 작성용 docs-writer 에이전트, 디버깅용 debug 에이전트 3개를 만들고 권한을 다르게 설정.
실제로 돌리려면 뭐가 필요한가.
OpenCode 자체는 LLM 을 로컬에서 돌리지 않는다(=Ollama 처럼 모델 가중치를 들고 다니지 않는다). 따라서 요구사항은 가볍다. 진짜 비용은 "어떤 LLM 공급자에 얼마를 쓰느냐"에서 결정된다.
macOS / Linux / Windows(WSL 권장) 모두 지원. 터미널은 WezTerm, Alacritty, Ghostty, Kitty 같은 현대적 에뮬레이터 권장(ANSI · 트루컬러 · 마우스 이벤트가 잘 처리되어야 함). cmd.exe / PowerShell 기본 콘솔은 TUI 렌더가 깨질 수 있다.
설치 자체는 100MB 미만. 메모리도 200~500MB 면 충분. $HOME/.opencode/bin이 기본 설치 경로이고, $OPENCODE_INSTALL_DIR / $XDG_BIN_DIR 로 커스터마이즈 가능.
적어도 한 곳의 LLM 공급자 API 키가 필요. 권장은 OpenCode Zen(자체 큐레이션 모델 묶음) 또는 Anthropic Claude / OpenAI GPT-5 / OpenRouter. 로컬 Ollama 도 붙일 수 있어서 인터넷 없이 돌리는 시나리오도 가능하지만, 코딩 품질은 모델에 강하게 의존.
OpenCode 는 MIT 오픈소스지만, 코딩 에이전트의 핵심 가치는 LLM 추론에서 나오고 그건 거의 항상 유료다. Claude Sonnet 으로 풀스택 코딩 하루를 풀가동하면 수십~수백 달러도 가능. 월간 한도와 예산 알람을 먼저 설정하고 시작.
새 코드베이스 탐색은 plan 에이전트(읽기 전용)로 시작하고, build 모드는 자신 있는 시나리오에만 사용. steps: 5 같은 max-step 으로 의도치 않은 에이전트 루프 비용 차단.
난이도별 5단계 코스.
"읽기만 해도 배운다"는 말은 절반만 맞다. 다음 과제 5개를 차례로 해 보면 OpenCode 의 거의 모든 기능을 만져 보게 된다.
본인이 잘 아는 (혹은 잘 모르는) 작은 레포에 cd 한 뒤 opencode 실행. Tab 으로 plan 모드 전환 후 "이 프로젝트 구조 설명해줘"로 시작. plan 은 파일 수정 권한이 없어서 안전.
배우는 것: Primary/Subagent 전환, @멘션, /undo, /share.
본인 사이드 프로젝트 루트에서 /init 실행. OpenCode 가 자동 분석한 AGENTS.md 를 사람이 다듬는다. 코딩 스타일·테스트 정책·금지 패턴을 명시적으로 적어 두면, 이후 모든 에이전트 호출의 품질이 올라간다.
배우는 것: AGENTS.md = 에이전트 컨텍스트 부트스트랩. 좋은 AGENTS.md 의 형식 감각.
.opencode/agents/security-auditor.md를 만들고 마크다운 프론트매터로 permission.edit: deny 적용. 그 다음 @security-auditor 인증 모듈 좀 봐줘로 호출.
배우는 것: 마크다운 에이전트 정의, 권한 글로브 매칭, 모델별 분기.
@modelcontextprotocol/sdk 로 미니 MCP 서버 작성(예: "사내 위키 검색"). opencode.json의 mcp 섹션에 등록하고 plan 모드에서 호출. Claude Code 에도 같은 서버를 등록해 양쪽 도구 호환성 확인.
배우는 것: MCP 프로토콜 본체, 도구 정의, 사용자 정의 통합의 표준 진입로.
packages/llm을 fork 해서 신규 공급자(예: 사내 LLM 게이트웨이) 어댑터를 짠다. ai SDK 의 패턴을 따르고, opencode.json에서 "mycompany/llama3-70b"로 지목 가능하게.
배우는 것: OpenCode 내부 LLM 추상화, 공급자 SDK 와 자체 인터페이스의 분리, 패치 vs fork 의사결정.
매주 한 트랙씩, 두 달 코스.
OpenCode 가 빨아들이고 있는 기술 스택은 너무 넓어서 한 번에 다 못 본다. 8주 로드맵으로 잘게 나누면 부담이 줄어든다.
Bun 공식 문서 워크스루 + workspaces.catalog + Turbo 파이프라인 만들기. 작은 모노레포 토이 빌드.
REST API 작성 → OpenAPI 자동 추출 → SDK 자동 생성. Hono Adapter 로 Bun · Cloudflare · Vercel 셋 다 배포.
Drizzle 스키마 → 마이그레이션 → Effect 로 비즈니스 로직 합성. effect-drizzle-sqlite 패턴 분석.
Counter → Todo → Realtime Chat. React 와 비교 학습. 시그널 · createResource · 서버 함수.
SolidJS 앱 → Tauri 래핑 → 자동 업데이트 + 코드사이닝. macOS notarize 까지.
AWS 계정 발급 → SST 로 Next.js/SolidStart 배포. 비용 알람 · 도메인 · CDN 캐싱 설정.
Anthropic 의 mcp-builder 스킬을 기반으로 사내용 MCP 서버 작성. OpenCode/Claude Code 둘 다 등록.
레포 issue 중 "good first issue" 라벨 찾아 PR. AGENTS.md의 코딩 스타일 따르기 — destructuring 자제, try/catch 회피, Bun API 우선.
검색 · 면접 · 사내 토론에서 그대로 쓰는 용어들.
SKILL.md(YAML 프론트매터 + 마크다운) + 옵션 references/·scripts/·assets/로 구성. OpenCode 는 이 표준을 그대로 받아 .opencode/agents/에 마크다운 에이전트로 로드./connect 한 번이면 opencode.ai/auth 로 가서 결제 후 API 키 한 줄 받음. 어떤 모델을 쓸지 모를 때의 기본 옵션.$schema: "https://opencode.ai/config.json"으로 IDE 자동완성도 지원./init 명령으로 자동 분석되며, 모든 에이전트 호출의 첫 컨텍스트로 주입된다. git 커밋 권장 — 팀 전체가 에이전트 응답 품질을 공유.{ "git *": "ask", "git status *": "allow" }처럼 같은 명령군 안에서 안전한 것만 자동 허용 가능. 마지막 매칭 규칙이 우선.공식 + 비공식.
이 글을 읽고 나서 다음 자료들을 순서대로 따라가면 OpenCode 의 거의 모든 측면을 직접 확인할 수 있다.
· 공식 사이트 — opencode.ai
· 공식 문서 — opencode.ai/docs
· 한국어 README — github.com/anomalyco/opencode/README.ko.md
· 디스코드 — opencode.ai/discord
· Bun — bun.com/docs
· Turbo — turborepo.com/docs
· SST — sst.dev/docs
· SolidStart — docs.solidjs.com/solid-start
· Tauri — tauri.app
· Drizzle ORM — orm.drizzle.team
· Hono — hono.dev
· Effect — effect.website
· Claude Code (Anthropic 공식) — github.com/anthropics/claude-code
· OpenAI Codex CLI — github.com/openai/codex
· cc-switch (5종 코딩 CLI 통합 매니저) — github.com/farion1231/cc-switch
· chrome-devtools-mcp (구글의 표준 MCP) — github.com/ChromeDevTools/chrome-devtools-mcp
· anthropics/skills (Skills 레퍼런스) — github.com/anthropics/skills
curl -fsSL https://opencode.ai/install | bash 한 줄 후 익숙한 폴더에서 opencode 실행. Tab 키로 plan 모드 잡고 "이 프로젝트 진입점 어디야?"부터 시작./init으로 자동 분석된 초안을 다듬어 코딩 스타일·테스트 정책·금지 패턴을 명문화. 팀 공유 시 에이전트 응답 일관성이 눈에 띄게 올라간다..opencode/agents/reviewer.md를 만들어 mode: subagent + permission.edit: deny 로 세팅. @reviewer 호출로 PR 전 셀프 리뷰 자동화."bash": { "*": "ask", "git status *": "allow", "git diff *": "allow" }처럼 안전한 명령만 자동 허용. 무심결의 git push를 ask 로 묶어 사고 예방.packages/opencode나 packages/llm 중 한 곳만 골라 코드를 읽고, 본인의 사이드 프로젝트에 비슷한 패턴을 적용. 23개 다 보려 들지 말 것 — 한 패키지만 깊이 보는 게 더 남는다.