본문으로 건너뛰기
5분 AI.
TRENDSHIFT #6 · 2026.05.22 · anomalyco/opencode

OpenCode 딥다이브
터미널에서 사는 오픈소스 코딩 에이전트

CLI·앱

빠른 판단

무엇
여러 모델 제공자를 연결해 코드 편집·명령 실행·개발 작업을 수행하는 오픈소스 코딩 에이전트
이럴 때
특정 모델 회사에 고정되지 않고 원하는 API나 로컬 추론 서버로 코딩 작업을 진행할 때

193.7k stars, 23개 모노레포 패키지, Bun + SST + Tauri + SolidJS로 짜인 풀스택 AI 코딩 도구. Claude Code와 비슷한 자리에 있지만 모든 게 오픈되어 있다.

0먼저, OpenCode 가 뭔가?

한 마디로, 터미널에서 도는 오픈소스 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 자동화까지 같은 코어 위에서 돌아가는 모노레포 플랫폼이다.

용어
코딩 에이전트 (Coding Agent)
사람의 자연어 지시를 받아 코드베이스를 자율적으로 읽고 쓰는 AI 프로그램. 단순 자동완성과 달리, 파일을 직접 수정하고, 셸 명령을 실행하고, 결과를 보고 다음 행동을 결정한다. 옆자리 주니어 개발자에게 "이거 좀 해줘" 하는 감각.
용어
TUI (Terminal User Interface, 터미널 사용자 인터페이스)
마우스 없이 키보드만으로 조작하는 터미널 안 UI. Vim, htop, k9s 같은 도구가 대표적. OpenCode의 메인 UI가 이 형태라 모니터 위에 깔끔하게 떠 있고, 마우스 없이 Tab 하나로 에이전트를 전환한다.

1한 줄 요약

이 글의 핵심 메시지.

핵심 메시지

"Claude Code가 닫힌 1편이라면,
OpenCode는 모든 페이지가 펼쳐진 백과사전이다."

같은 코딩 에이전트 카테고리에서, 한쪽은 모델·UI·툴이 한 회사에 묶여 있고, 다른 한쪽은 LLM 공급자·UI 폼팩터·도구 시스템·플러그인까지 전부 교체 가능한 오픈 플랫폼이다. "바이브 코딩"을 하면서 동시에 내부 구조까지 학습 재료로 쓸 수 있는 보기 드문 레포다.

2왜 지금 주목받는가

트렌딩에 머무는 이유 세 가지.

2026년 들어 코딩 에이전트 시장은 폭발적으로 커졌다. 트렌딩 상위에는 Claude Code, Codex, cc-switch, opencode가 거의 매일 같이 떠 있다. 그 중 OpenCode가 193.7k stars · 24.7k forks · 15,318 commits · 855 releases까지 올라온 데에는 명확한 이유가 있다.

이유 1

LLM 공급자 락인이 없다

Anthropic, OpenAI, Google, OpenRouter, AWS Bedrock, Groq, Mistral, 로컬 Ollama 등 어떤 공급자든 opencode.json 한 줄로 갈아 끼울 수 있다. 자체 큐레이션 모델 묶음인 "OpenCode Zen"도 제공하지만, 강제하지 않는다.

"Run the /connect command in the TUI, select opencode, and head to opencode.ai/auth … Alternatively, you can select one of the other providers."
이유 2

한 코어 위에 모든 폼팩터가 다 있다

같은 OpenCode 엔진이 터미널 TUI · 데스크탑 앱(Tauri, BETA) · 웹 인터페이스 · VS Code/JetBrains 익스텐션 · Slack 봇 · GitHub/GitLab Action · 외부 SDK로 동시에 노출된다. 23개 패키지 모노레포가 그 증거.

이유 3

에이전트·툴·스킬·MCP·ACP·LSP가 전부 1급 시민

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)처럼 누구나 분기·수정·재배포할 수 있는 오픈 플랫폼"이다. 두 진영 다 살아남을 수밖에 없는 이유와 정확히 같다.

3기술 스택 전체 지도

백엔드 · 프론트엔드 · 인프라 · 데스크탑.

OpenCode는 단일 언어 단일 프레임워크가 아니다. TypeScript 65.7% · MDX 30.9% · CSS 2.9%로 구성되며, 핵심 런타임은 Bun, 빌드 시스템은 Turbo, 인프라 코드는 SST를 쓴다.

🛠 런타임 · 빌드

용어
Bun (1.3.14)
Node.js 대체 자바스크립트 런타임 + 번들러 + 테스트 러너 + 패키지 매니저를 한 바이너리에 다 넣은 도구. Zig로 짜여 있어 빠르고, Bun.file() 같은 자체 API가 풍부하다. OpenCode는 가능하면 Node 표준 API보다 Bun 네이티브 API를 쓰는 게 코딩 규칙이다.
용어
Turbo (2.8.13)
Vercel이 만든 모노레포 빌드 오케스트레이터. 23개 패키지의 typecheck · build · test를 의존 그래프에 맞춰 병렬로 돌리고 캐싱한다. bun turbo typecheck 한 줄이 23개 패키지 전체 타입 체크.
용어
SST (Serverless Stack, v4.13.1)
Cloudflare Workers + AWS를 코드로 정의하는 IaC(Infrastructure as Code) 프레임워크. sst.config.ts의 home: 'cloudflare'가 기반이며, AWS 리소스(Lambda 등)는 일부 서비스에 병행 사용된다. OpenCode가 Anomaly 사의 클라우드 기능(Share, Zen, GitHub App)을 운영하는 기반.

🌐 백엔드 · 데이터

용어
Hono (4.10.7) + hono-openapi
Express보다 가벼우면서 Cloudflare Workers · Bun · Deno · Node 어디서나 도는 웹 프레임워크. hono-openapi로 라우트에서 자동으로 OpenAPI 스펙을 뽑아 SDK까지 생성한다. ./packages/sdk/js/script/build.ts로 JS SDK가 자동 재생성되는 게 이 흐름.
용어
Drizzle ORM (1.0.0-rc.2) + SQLite
TypeScript 우선 SQL 빌더. ORM보다 SQL에 가까운 추상화로, Prisma처럼 코드 생성을 강요하지 않는다. 세션·메시지·툴 호출 기록 같은 로컬 상태를 사용자 머신의 SQLite에 저장. packages/effect-drizzle-sqlite에 Effect와의 통합 레이어가 따로 있다.
용어
Zod (4.1.8) + ai SDK (6.0.168)
Zod는 런타임 스키마 검증 라이브러리. 사용자 입력 · 모델 응답 · 툴 인자가 다 Zod로 검증된다. ai는 Vercel AI SDK, OpenAI/Anthropic/Google 등 공급자를 통합 인터페이스로 호출하는 추상화 계층. OpenCode는 자체 LLM 추상화 + ai SDK를 같이 쓴다.

🎨 프론트엔드 · UI

용어
SolidJS · SolidStart (1.9.10)
React처럼 생긴 컴포넌트 모델을 쓰지만, 가상 DOM 없이 시그널(Signal) 기반 미세 반응성을 쓰는 프레임워크. 번들 크기와 런타임 비용이 React 대비 훨씬 작다. SolidStart는 Solid의 풀스택 메타 프레임워크(Next의 Solid 버전).
용어
Astro · Starlight (Docs)
packages/docs는 Starlight(=Astro 기반 문서 사이트 빌더). MDX 30.9%가 여기서 나온다. opencode.ai/docs가 그 결과.
용어
Tailwind 4 + Kobalte
Tailwind 4는 CSS 변수 기반의 zero-config 빌드를 지원하는 차세대 Tailwind. Kobalte는 Solid 용 헤드리스 UI 컴포넌트(Radix UI의 Solid 판). 모달·드롭다운·툴팁의 접근성은 Kobalte가 책임진다.

🖥 데스크탑 · 인터랙션

용어
Tauri (packages/desktop)
Rust + 시스템 웹뷰로 만든 경량 일렉트론 대안. Electron이 Chromium을 통째로 묶어 다니는 반면 Tauri는 OS 내장 웹뷰를 쓰므로 바이너리가 수십 MB 수준으로 작다. OpenCode 데스크탑 앱(.dmg/.exe/.deb/.rpm/.AppImage)이 이걸로 빌드된다.
용어
Effect
TypeScript 용 함수형 효과 시스템. 비동기·실패·환경 의존성을 타입으로 감싸 안전하게 합성하게 해 준다. packages/effect-drizzle-sqlite에 Drizzle 어댑터가 별도 존재한다는 점에서, Effect가 OpenCode의 코어 비즈니스 로직을 지탱하는 패러다임임을 알 수 있다.

4아키텍처 심화 분석

시스템 구조도 + 핵심 설계 패턴.

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)│
└────────┘         └──────────┘          └────────────┘

핵심 설계 패턴 4가지

패턴 1

코어/폼팩터 분리 (Headless Core)

packages/opencode + packages/core 가 모든 비즈니스 로직을 들고 있고, TUI/Desktop/Web은 같은 코어 위에 얇은 UI 레이어만 얹는다. 새로운 UI 폼팩터를 추가해도 에이전트 동작은 그대로 재사용되는 구조.

이게 가능한 이유는 코어가 자체 HTTP 서버를 띄우기 때문이다. opencode serve 한 번이면 SDK·웹·IDE가 같은 엔드포인트로 붙는다.

패턴 2

Primary / Subagent 이중 구조

사용자가 직접 대화하는 Primary Agent(build, plan)와, 그 안에서 자동으로 호출되는 Subagent(general, explore, scout)가 분리되어 있다. Primary는 Tab 키로, Subagent는 @general 같은 @멘션으로 호출.

거기에 사용자에게 보이지 않는 Hidden 시스템 에이전트 세 종(compaction, title, summary)이 백그라운드로 도는데, 각각 긴 컨텍스트 요약 · 세션 제목 자동 생성 · 종료 후 회고를 담당한다.

패턴 3

권한 시스템 (Permission)

에이전트가 어떤 툴을 쓰는지 다 opencode.json의 permission 으로 통제된다. edit · bash · webfetch · websearch · skill · task 같은 키마다 "allow" / "ask" / "deny" 셋 중 하나. 글로브 패턴까지 받아서 "git push": "ask" 같은 세밀한 룰이 가능하다.

패턴 4

워크스페이스 catalog 의존성 관리

package.json의 workspaces.catalog 에 모든 외부 의존성 버전을 한 곳에 못 박는다. 각 패키지는 "zod": "catalog:" 처럼 가리키기만 한다. 버전 드리프트를 한 파일로 막는 단순하면서 강력한 패턴.

5디렉토리 구조 해부

23개 패키지가 각자 무엇을 하는가.

레포 루트의 packages/ 아래에 23개 워크스페이스가 들어 있다. 역할에 따라 묶어 보면 이렇다.

📌 핵심 (Core)

패키지

opencode · core

opencode는 사용자가 실제로 실행하는 CLI 엔트리. core는 그 안에서 쓰이는 도메인 로직(세션 · 메시지 · 툴 호출 · 컨텍스트 압축). 모든 폼팩터가 이 둘에 의존한다.

패키지

llm

LLM 공급자 추상화 레이어. provider/model-id 형식의 모델 ID를 받아 Anthropic/OpenAI/Google/Groq/Bedrock/OpenRouter 등 어떤 백엔드로든 라우팅. @openrouter/ai-sdk-provider는 패치까지 적용되어 있다.

🎨 UI · 폼팩터

패키지

app · web · ui · console · storybook

app은 SolidStart 웹 앱(opencode.ai의 일부). web은 랜딩/문서 자산. ui는 Kobalte + Tailwind 기반 공용 컴포넌트. console은 Anomaly 대시보드. storybook은 UI 컴포넌트 카탈로그.

패키지

desktop

Tauri 데스크탑 앱. bun --cwd packages/desktop tauri dev 한 줄로 개발 모드 실행. .dmg / .exe / .deb / .rpm / .AppImage 멀티 플랫폼 빌드.

패키지

docs

Astro Starlight 기반 공식 문서 사이트(opencode.ai/docs). 20+ 개 언어 번역. README의 README.ko.md 등 21개 언어 README가 여기서 관리된다.

🔌 통합 · 자동화

패키지

slack

Slack 봇 패키지. 채널에서 멘션으로 OpenCode를 호출할 수 있게 해 준다(예: @opencode "main 브랜치 머지 충돌 좀 봐줘").

패키지

tui · cli

tui는 터미널 UI 패키지 — Bun + ANSI 렌더링으로 키보드만으로 조작하는 인터페이스. cli는 커맨드라인 진입점 패키지. IDE 통합(VS Code · Zed)은 독립 패키지가 아니라 레포 루트의 .vscode/·.zed/ 에디터 설정 파일로 구현된다.

패키지

plugin · script · sdk

plugin은 외부 개발자가 OpenCode 동작을 후킹할 수 있는 플러그인 API. script는 빌드/배포 자동화. sdk는 자동 생성되는 JS SDK(./packages/sdk/js/script/build.ts로 재생성).

🏢 인프라 · 기업 기능

패키지

containers · function · http-recorder · identity · enterprise

containers는 격리된 코드 실행 샌드박스. function은 서버리스 핸들러. http-recorder는 LLM 호출/네트워크 트래픽 기록(디버깅·재현용). identity는 사용자 인증(OpenAuth 기반). enterprise는 SSO·감사 로그 등 유료 기능.

패키지

effect-drizzle-sqlite

Effect + Drizzle ORM + SQLite의 조합을 깔끔하게 추상화한 어댑터. 다른 OpenCode 패키지가 로컬 SQLite와 상호작용할 때 이걸 통한다.

📂 레포 루트 핵심 파일

파일

AGENTS.md

OpenCode 자기 자신의 코딩 규칙. "Bun 네이티브 API 우선", "try/catch 회피", "any 금지", "destructuring 자제", "Drizzle snake_case", "테스트는 mock 회피" 같은 룰이 적혀 있다. 이게 사용자 프로젝트에 /init으로 생성되는 AGENTS.md의 본보기다.

"The default branch in this repo is `dev`. Local `main` ref may not exist; use `dev` or `origin/dev` for diffs."
파일

sst.config.ts · flake.nix · turbo.json · bun.lock · bunfig.toml

인프라 정의(SST) · Nix 빌드 환경 · Turbo 파이프라인 · Bun 락파일 · Bun 런타임 설정. "같은 코드가 어떤 OS, 어떤 머신에서도 똑같이 빌드되도록" 굳히는 데 들어간 정성이 보인다.

파일

patches/

@standard-community/standard-openapi, solid-js, @ai-sdk/google 등 총 9개 패키지에 직접 패치 적용(@openrouter/ai-sdk-provider는 패치 목록에 없음). 외부 의존성에 버그가 있으면 fork가 아니라 patches/로 우회한다 — Bun의 patchedDependencies 기능 활용.

6학습 포인트 — 기술별로 무엇을 배울까

이 레포에서 뽑아낼 수 있는 학습 모듈.

OpenCode의 가치는 "써 보기"보다 "코드를 읽기"에 있다. 다음 7가지 학습 트랙은 각자 별개의 책 한 권 분량이고, 이 한 레포에서 다 만져 볼 수 있다.

학습 트랙 1

Bun 모노레포 · Turbo 캐싱

packages/* 23개를 workspaces.catalog로 묶어 버전 드리프트를 막는 패턴은 어떤 풀스택 회사에서도 그대로 적용 가능. Turbo의 캐시 키 설계 · 원격 캐시 · dryrun도 같이 학습.

실습 아이디어: 본인의 작은 모노레포를 만들고, catalog 패턴을 적용해 zod 버전을 한 곳에서 바꾸면 모든 패키지가 따라가게 만들기.

학습 트랙 2

Hono + Zod + hono-openapi로 자동 SDK 생성

라우트 정의 → OpenAPI 스펙 → JS SDK 자동 생성의 파이프라인이 packages/sdk/js/script/build.ts에 통째로 들어 있다. 토이 프로젝트 한 개로 그대로 모방 가능.

실습 아이디어: Hono + zod + hono-openapi로 "할 일" REST API를 짜고, 거기서 자동 생성된 SDK를 프론트엔드에서 호출.

학습 트랙 3

SolidJS · SolidStart의 시그널 모델

React에 익숙한 사람에게는 "왜 useEffect가 필요 없는가"가 충격. createSignal/createMemo/createResource 만으로 상태/계산/비동기를 다룬다. 번들 크기도 React의 1/4 수준.

실습 아이디어: Counter → Todo → Chat UI 순으로 SolidStart 앱을 만들어 보고, 같은 걸 React로도 짜서 번들 크기·렌더 횟수 비교.

학습 트랙 4

Tauri 데스크탑 앱 빌드 파이프라인

packages/desktop이 어떻게 멀티 OS 바이너리를 짜내는지(서명·공증·자동 업데이트 포함) 그대로 따라할 수 있는 청사진. Electron이 무겁다고 느꼈다면 Tauri가 답.

실습 아이디어: SolidJS로 만든 작은 메모 앱을 Tauri로 감싸 macOS .dmg + Windows .exe까지 빌드해 보기. GitHub Actions의 release 워크플로우까지 모방.

학습 트랙 5

SST v3 IaC 패턴

sst.config.ts에 람다·CloudFront·도메인을 코드로 정의. Pulumi와 비슷한 흐름이지만 풀스택 친화적. "vercel이 너무 비싸지면 SST로 AWS 직접 띄우는 게 답"이라는 결론에 자연스럽게 도달한다.

실습 아이디어: Next.js 사이드 프로젝트 하나를 Vercel에서 SST의 OpenNext로 옮겨 보고, 비용·콜드스타트·배포 시간 비교.

학습 트랙 6

MCP · ACP · LSP 통합

3대 프로토콜이 한 레포에 다 들어 있다. MCP 서버 만들기 → OpenCode 에 붙이기 → 다른 에이전트(Claude Code, Cursor)에서 재사용까지 한 번에 학습 가능.

실습 아이디어: 사내 위키 검색 MCP 서버를 만들고, OpenCode·Claude Code 둘 다에 등록해서 같은 도구가 양쪽에서 동작하는지 확인.

학습 트랙 7

Agent Skills · 권한 시스템 설계

.opencode/agents/*.md에 마크다운 프론트매터로 에이전트를 선언하는 방식은 Claude Code의 Skills 표준과 거의 동일. 권한 글로브 매칭("git push": "ask") 같은 패턴은 사내 에이전트 운영 룰북에 그대로 쓰일 수 있다.

실습 아이디어: 보안 감사용 read-only 에이전트, 문서 작성용 docs-writer 에이전트, 디버깅용 debug 에이전트 3개를 만들고 권한을 다르게 설정.

7하드웨어 · 시스템 요구사항

실제로 돌리려면 뭐가 필요한가.

OpenCode 자체는 LLM을 로컬에서 돌리지 않는다(=Ollama처럼 모델 가중치를 들고 다니지 않는다). 따라서 요구사항은 가볍다. 진짜 비용은 "어떤 LLM 공급자에 얼마를 쓰느냐"에서 결정된다.

최소 요건

OS · 터미널

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 키

적어도 한 곳의 LLM 공급자 API 키가 필요. 권장은 OpenCode Zen(자체 큐레이션 모델 묶음) 또는 Anthropic Claude / OpenAI GPT-5 / OpenRouter. 로컬 Ollama도 붙일 수 있어서 인터넷 없이 돌리는 시나리오도 가능하지만, 코딩 품질은 모델에 강하게 의존.

함정
"무료"라고 생각하면 안 된다

OpenCode는 MIT 오픈소스지만, 코딩 에이전트의 핵심 가치는 LLM 추론에서 나오고 그건 거의 항상 유료다. Claude Sonnet 으로 풀스택 코딩 하루를 풀가동하면 수십~수백 달러도 가능. 월간 한도와 예산 알람을 먼저 설정하고 시작.

해결책
Plan 모드 + steps 제한

새 코드베이스 탐색은 plan 에이전트(읽기 전용)로 시작하고, build 모드는 자신 있는 시나리오에만 사용. steps: 5 같은 max-step으로 의도치 않은 에이전트 루프 비용 차단.

8직접 해볼 수 있는 실습 과제

난이도별 5단계 코스.

"읽기만 해도 배운다"는 말은 절반만 맞다. 다음 과제 5개를 차례로 해 보면 OpenCode의 거의 모든 기능을 만져 보게 된다.

난이도 ★☆☆☆☆ — Lv.1

설치 + Plan 모드로 친숙한 레포 탐색

본인이 잘 아는 (혹은 잘 모르는) 작은 레포에 cd 한 뒤 opencode 실행. Tab으로 plan 모드 전환 후 "이 프로젝트 구조 설명해줘"로 시작. plan은 파일 수정 권한이 없어서 안전.

"이 프로젝트의 진입점이 어디고, 주요 모듈이 어떻게 연결되어 있어? 의존성 그래프를 텍스트로 그려줘."

배우는 것: Primary/Subagent 전환, @멘션, /undo, /share.

난이도 ★★☆☆☆ — Lv.2

AGENTS.md 작성 + /init 자동 분석

본인 사이드 프로젝트 루트에서 /init 실행. OpenCode가 자동 분석한 AGENTS.md를 사람이 다듬는다. 코딩 스타일·테스트 정책·금지 패턴을 명시적으로 적어 두면, 이후 모든 에이전트 호출의 품질이 올라간다.

배우는 것: AGENTS.md = 에이전트 컨텍스트 부트스트랩. 좋은 AGENTS.md의 형식 감각.

난이도 ★★★☆☆ — Lv.3

커스텀 서브에이전트 + 권한 세팅

.opencode/agents/security-auditor.md를 만들고 마크다운 프론트매터로 permission.edit: deny 적용. 그 다음 @security-auditor 인증 모듈 좀 봐줘로 호출.

---
description: 보안 감사 전문 에이전트
mode: subagent
permission:
  edit: deny
  bash: deny
---
당신은 보안 감사자입니다. 입력 검증, 인증, 데이터 노출, 의존성 취약점을 우선 확인하세요.

배우는 것: 마크다운 에이전트 정의, 권한 글로브 매칭, 모델별 분기.

난이도 ★★★★☆ — Lv.4

MCP 서버 만들어 OpenCode 에 붙이기

@modelcontextprotocol/sdk 로 미니 MCP 서버 작성(예: "사내 위키 검색"). opencode.json의 mcp 섹션에 등록하고 plan 모드에서 호출. Claude Code에도 같은 서버를 등록해 양쪽 도구 호환성 확인.

배우는 것: MCP 프로토콜 본체, 도구 정의, 사용자 정의 통합의 표준 진입로.

난이도 ★★★★★ — Lv.5

OpenCode 코어 fork 후 새 LLM 공급자 추가

packages/llm을 fork 해서 신규 공급자(예: 사내 LLM 게이트웨이) 어댑터를 짠다. ai SDK의 패턴을 따르고, opencode.json에서 "mycompany/llama3-70b"로 지목 가능하게.

배우는 것: OpenCode 내부 LLM 추상화, 공급자 SDK와 자체 인터페이스의 분리, 패치 vs fork 의사결정.

9관련 기술 심화 학습 로드맵 (8주)

매주 한 트랙씩, 두 달 코스.

OpenCode가 빨아들이고 있는 기술 스택은 너무 넓어서 한 번에 다 못 본다. 8주 로드맵으로 잘게 나누면 부담이 줄어든다.

Week 1

Bun + Turbo 모노레포 기초

Bun 공식 문서 워크스루 + workspaces.catalog + Turbo 파이프라인 만들기. 작은 모노레포 토이 빌드.

Week 2

Hono + zod + hono-openapi 백엔드

REST API 작성 → OpenAPI 자동 추출 → SDK 자동 생성. Hono Adapter로 Bun · Cloudflare · Vercel 셋 다 배포.

Week 3

Drizzle ORM + SQLite + Effect

Drizzle 스키마 → 마이그레이션 → Effect로 비즈니스 로직 합성. effect-drizzle-sqlite 패턴 분석.

Week 4

SolidJS · SolidStart 풀스택

Counter → Todo → Realtime Chat. React와 비교 학습. 시그널 · createResource · 서버 함수.

Week 5

Tauri 데스크탑 빌드

SolidJS 앱 → Tauri 래핑 → 자동 업데이트 + 코드사이닝. macOS notarize까지.

Week 6

SST v3 IaC

AWS 계정 발급 → SST로 Next.js/SolidStart 배포. 비용 알람 · 도메인 · CDN 캐싱 설정.

Week 7

MCP 서버 직접 만들기

Anthropic의 mcp-builder 스킬을 기반으로 사내용 MCP 서버 작성. OpenCode/Claude Code 둘 다 등록.

Week 8

OpenCode 자체 컨트리뷰션

레포 issue 중 "good first issue" 라벨 찾아 PR. AGENTS.md의 코딩 스타일 따르기 — destructuring 자제, try/catch 회피, Bun API 우선.

10핵심 키워드 사전

검색 · 면접 · 사내 토론에서 그대로 쓰는 용어들.

용어
Agent Skills
Anthropic이 표준화한 에이전트 능력 패키지 형식. SKILL.md(YAML 프론트매터 + 마크다운) + 옵션 references/·scripts/·assets/로 구성. OpenCode는 이 표준을 그대로 받아 .opencode/agents/에 마크다운 에이전트로 로드.
용어
MCP (Model Context Protocol, 모델 컨텍스트 프로토콜)
에이전트가 외부 도구·데이터에 접근하는 표준 프로토콜. JSON-RPC over stdio/HTTP. 한 번 짠 MCP 서버는 Claude Code·OpenCode·Cursor·Kiro 어디서든 재사용 가능 — USB 표준처럼 동작.
용어
ACP (Agent Client Protocol)
Zed 에디터가 정의한 에이전트 ↔ 에디터 통신 프로토콜. OpenCode가 Zed 익스텐션에서 채팅과 인라인 편집을 노출하는 통로. MCP가 "에이전트 ↔ 도구"라면 ACP는 "에이전트 ↔ 에디터".
용어
LSP (Language Server Protocol, 언어 서버 프로토콜)
VS Code가 표준화한 에디터 ↔ 언어 인텔리전스 프로토콜. OpenCode가 사용자 머신의 LSP 서버(tsserver, gopls, rust-analyzer 등)에 붙어 자동완성·진단·심볼 탐색을 그대로 활용.
용어
Plan 모드 vs Build 모드
OpenCode의 기본 Primary 에이전트 둘. Build는 모든 도구 허용(편집·셸·웹페치), Plan은 기본적으로 edit/bash 모두 deny — 코드베이스 탐색과 변경 계획만 함. 새 코드를 만지기 전엔 무조건 Plan으로 시작이 안전 패턴.
용어
Subagent · Hidden Agent
Subagent는 Primary 에이전트가 호출하는 전문가(general/explore/scout). Hidden Agent는 사용자에게 보이지 않고 백그라운드로 도는 시스템 에이전트(compaction=긴 컨텍스트 요약, title=세션 제목 생성, summary=종료 후 회고).
용어
OpenCode Zen
OpenCode 팀이 큐레이션한 LLM 묶음. /connect 한 번이면 opencode.ai/auth로 가서 결제 후 API 키 한 줄 받음. 어떤 모델을 쓸지 모를 때의 기본 옵션.
용어
opencode.json
프로젝트 루트의 설정 파일. 사용할 LLM, 에이전트 정의, 권한, 테마, 키바인드, MCP 서버, LSP 서버, 포매터를 다 여기서 선언. $schema: "https://opencode.ai/config.json"으로 IDE 자동완성도 지원.
용어
AGENTS.md
프로젝트의 코딩 규칙·도메인 지식·금지 패턴을 적은 마크다운. /init 명령으로 자동 분석되며, 모든 에이전트 호출의 첫 컨텍스트로 주입된다. git 커밋 권장 — 팀 전체가 에이전트 응답 품질을 공유.
용어
Permission Glob
권한 키마다 글로브 패턴을 받는 OpenCode의 세밀한 권한 시스템. { "git *": "ask", "git status *": "allow" }처럼 같은 명령군 안에서 안전한 것만 자동 허용 가능. 마지막 매칭 규칙이 우선.

11참고 링크 · 한 번에 모은 자료

공식 + 비공식.

이 글을 읽고 나서 다음 자료들을 순서대로 따라가면 OpenCode의 거의 모든 측면을 직접 확인할 수 있다.

공식

opencode.ai / github

· 공식 사이트 — 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

실용 가이드

지금 바로 시도해볼 만한 것 5가지

  1. 10분 안에 설치 → plan 모드로 본인 사이드 프로젝트 탐색. curl -fsSL https://opencode.ai/install | bash 한 줄 후 익숙한 폴더에서 opencode 실행. Tab 키로 plan 모드 잡고 "이 프로젝트 진입점 어디야?"부터 시작.
  2. AGENTS.md를 직접 작성해 git 커밋. /init으로 자동 분석된 초안을 다듬어 코딩 스타일·테스트 정책·금지 패턴을 명문화. 팀 공유 시 에이전트 응답 일관성이 눈에 띄게 올라간다.
  3. 커스텀 서브에이전트 1개 정의. .opencode/agents/reviewer.md를 만들어 mode: subagent + permission.edit: deny로 세팅. @reviewer 호출로 PR 전 셀프 리뷰 자동화.
  4. opencode.json 권한 글로브 실험. "bash": { "*": "ask", "git status *": "allow", "git diff *": "allow" }처럼 안전한 명령만 자동 허용. 무심결의 git push를 ask로 묶어 사고 예방.
  5. 레포 fork 해서 패키지 하나 정독. packages/opencode나 packages/llm 중 한 곳만 골라 코드를 읽고, 본인의 사이드 프로젝트에 비슷한 패턴을 적용. 23개 다 보려 들지 말 것 — 한 패키지만 깊이 보는 게 더 남는다.
원문 · github.com/anomalyco/opencode · TrendShift 2026-05-22 #6