<p align="center">
<h1 align="center">agentpack</h1>
<p align="center">
<strong class="">AI 코딩 에이전트를 위한 패키지 관리자</strong>
</p>
<p align="center">
Claude Code, Cursor, OpenCode, Codex, Grok, 그리고 Antigravity 전반에 걸쳐 스킬 및 플러그인을 하나의 매니페스트에서 핀(Pin), 해결(resolve), 동기화(sync)할 수 있습니다.
</p>
</p>
<p align="center">
<a href="https://olegpustovit.github.io/agentpack"><img alt="Documentation" src="https://img.shields.io/badge/docs-olegpustovit.github.io-1f6feb.svg"></a>
<a href="https://olegpustovit.com/posts/agentpack/"><img alt="Writeup" src="https://img.shields.io/badge/writeup-olegpustovit.com-ff6b6b.svg"></a>
<a href="https://github.com/olegpustovit/agentpack/blob/dev/LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
<a href="https://github.com/olegpustovit/agentpack/releases"><img alt="Version" src="https://img.shields.io/badge/version-v0.6.1-blue.svg"></a>
<a href="https://github.com/olegpustovit/agentpack"><img alt="Built with Go" src="https://img.shields.io/badge/built_with-Go-00ADD8.svg"></a>
</p>
<p align="center">
<a href="https://olegpustovit.github.io/agentpack"><strong class="">Documentation</strong></a> ·
<a href="https://olegpustovit.com/posts/agentpack/"><strong class="">Writeup</strong></a> ·
<a href="#quick-start">Quick Start</a> ·
<a href="#how-it-works">How It Works</a> ·
<a href="https://olegpustovit.github.io/agentpack/reference/cli.html">CLI Reference</a>
</p>
brew install --cask olegpustovit/tap/agentpack
<p align="center"><sub class="">선빌드 바이너리 또는 소스 빌드를 선호하십니까? <a href="#install">모든 설치 옵션</a>을 참조하십시오.</sub></p>
문제점 (The Problem)
모든 코딩 에이전트는 스킬(skills), 플러그인(plugins), 명령어(commands), 규칙(rules)을 각자 다른 방식으로 관리합니다. 파일 레이아웃, 설정 형식, 검색 규칙이 모두 다릅니다. 여러 개의 에이전트를 실행하거나 팀 전체에 맞춤화된 도구 세트를 공유하려고 할 때, 결국 모든 에이전트의 설정 파일에 같은 파일을 수동으로 붙여넣고 복사본들이 서로 달라지는 것을 지켜봐야 합니다. 실제로 모두가 어떤 버전을 사용하고 있는지 알려주는 잠금 파일(lockfile)이 없습니다.
agentpack의 기능
agentpack.toml에 에이전트 의존성을 한 번 선언하기만 하면 됩니다. agentpack은 이를 정확한 커밋으로 해결하고, 해당 버전을 잠금 파일에 고정하며, 내용을 캐싱하고, 각 아티팩트를 대상 에이전트의 네이티브 형식으로 재렌더링한 다음, 모든 것이 준비된 상태로 에이전트를 실행합니다. 저장소는 깨끗하게 유지됩니다: 아무것도 복사되지 않고, 전역 에이전트 설정에도 아무것도 쓰여지지 않습니다. 휴대 가능한 **외부 환경(external environments)**은 매니페스트와 잠금 파일을 체크아웃 외부(env / --env / preflight / probe)에 보관할 수 있습니다. environments 문서를 참조하세요.
agentpack.toml ──> pack.lock ──> staged bundles ──> launch
(작성하는 부분) (고정된 버전) (개별 환경) (에이전트 실행)
설치
모든 릴리스마다 미리 빌드된 바이너리가 게시됩니다. 사용자의 플랫폼에 맞는 것을 선택하세요.
설치 스크립트
macOS 및 Linux:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/olegpustovit/agentpack/releases/latest/download/agentpack-installer.sh | sh
Windows PowerShell:
irm https://github.com/olegpustovit/agentpack/releases/latest/download/agentpack-installer.ps1 | iex
두 설치 스크립트 모두 기본적으로 실행 파일만 $HOME/.local/bin에 작성합니다. 셸 프로필이나 사용자 PATH를 수정하지 않습니다. 다른 사용자의 공간 디렉토리를 선택하려면 AGENTPACK_INSTALL_DIR을 사용하세요.
Homebrew — macOS 및 Linux (권장)
brew install --cask olegpustovit/tap/agentpack
다음 청크를 번역해주세요.
업그레이드는 brew upgrade --cask agentpack으로 수행할 수 있습니다. 공유 탭 olegpustovit/homebrew-tap에서 제공됩니다 (brew tap olegpustovit/tap && brew install --cask agentpack도 작동합니다).
미리 빌드된 바이너리 (Prebuilt binaries)
최신 릴리스에서 플랫폼에 맞는 아카이브를 다운로드하고, 압축을 해제한 후 agentpack을 PATH에 배치하세요. 지원되는 대상(Target)은 다음과 같습니다:
| 플랫폼 | 대상 (Target) |
|---|
| macOS (Apple Silicon) | darwin_arm64 |
| ... | |
각 릴리스에는 모든 아카이브를 포함하는 SHA-256 checksums.txt가 포함되어 있습니다. | |
소스에서 빌드하기 (From source)
go install ./cmd/agentpack
make install
사전 요구 사항 (소스 빌드 전용): Go 1.26 이상.
빠른 시작 (Quick Start)
실험적 Claude 프록시 모드 (Experimental Claude Proxy Mode)
agentpack --proxy claude는 OpenAI/Codex 자격 증명을 기반으로 하는 실험적인, Anthropic 호환 감독(supervised) 프록시를 통해 Claude Code를 시작합니다. 이 프록시는 해당 Claude 세션 동안 시작되며, ANTHROPIC_BASE_URL과 ANTHROPIC_AUTH_TOKEN이 자식 프로세스에 주입되고, Claude가 종료되면 프록시도 종료됩니다.
인증은 먼저 OPENAI_API_KEY에서 확인하고, 그 다음 Codex 인증(~/.codex/auth.json, Codex 키체인 항목 또는 agentpack의 공유 Codex 인증 파일)에서 확인합니다. Go 프록시 코어는 raine/claude-code-proxy의 Codex/OpenAI 경로를 따릅니다. 원본 프로젝트와 참조 동작을 제공해주신 @raine님께 감사드립니다.
프록시 진단(Proxy diagnostics)은 기본적으로 $AGENTPACK_HOME/projects/<project-hash>/proxy-logs/ 아래에 JSONL 형식으로 작성됩니다. AGENTPACK_PROXY_LOG_DIR을 설정하여 디렉토리를 재정의할 수 있습니다. 로그는 AGENTPACK_PROXY_LOG_PAYLOADS=1이 설정되지 않는 한 요청 페이로드(request payloads)를 생략합니다.
작동 방식 (How It Works)
agentpack.toml — 의존성(GitHub 저장소, 하위 디렉터리, 단일 플러그인 마켓플레이스 저장소 또는 로컬 경로)을 버전 제약 조건과 함께 선언합니다.
pack.lock — 결정론적 잠금 파일(deterministic lockfile)로 모든 패키지를 정확한 커밋 및 파일 트리 콘텐츠 해시와 연결하며, 각 MCP 서버가 실행하는 내용을 기록합니다.
sync — 다운로드하고, 캐싱하며, 잠금 파일과 비교하여 캐시를 검증하고, 아티팩트를 개별 하네스 스테이징 디렉터리로 변환합니다.
- Launchers —
agentpack claude, agent, opencode, codex, grok, agy는 각각 대상 에이전트를 시작하며, 이 과정에서 해당 에이전트의 네이티브 확장 메커니즘을 통해 스테이징된 번들(staged bundle)이 주입됩니다.
크로스-하네스 아티팩트 변환 (Cross-Harness Artifact Conversion)
agentpack은 단순히 파일을 복사하는 것이 아니라, 각 아티팩트를 **파싱(parse)**하고 대상 형식으로 **재렌더링(re-render)**합니다:
| 종류 (Kind) | 모든 6개 에이전트의 네이티브 형태 (Native form for) | 변환된 형태 (Converted to) |
|---|
| Skills | all six agents | |
| ... | | |
변환은 경고(warnings)로 보고됩니다. 서브에이전트는 agents/의 하위 디렉터리에 패키지 형태로 보관되며, 해당 레벨만 읽는 에이전트를 위해 agents/ 최상단에 스테이징됩니다. 전체 매트릭스는 변환 가이드를 참조하십시오. | | |
Manifest 예시 (Manifest Example)
name = "my-project"
version = "0.1.0"
...
주요 기능 (Key Features)
- 하나의 매니페스트로 여섯 개의 에이전트 —
agentpack.toml을 한 번 작성하면 Claude, Cursor, OpenCode, Codex, Grok 또는 Antigravity를 동일한 스킬 세트로 실행할 수 있습니다.
- 결정론적 락파일(Deterministic lockfile) —
pack.lock은 직접 종속성(direct)과 간접 종속성(transitive)을 포함하여 모든 패키지를 정확한 커밋 및 콘텐츠 해시로 고정합니다. 따라서 어떤 환경에서도 일관된 해결이 가능합니다.
- 사용할 때마다 검증 — 캐시는 무언가를 스테이징하기 전에 락파일과 비교하여 재해싱됩니다. 파일이 변경되면
sync와 모든 실행기가 중지되고, sync --repair를 사용하면 고정된 커밋을 다시 가져옵니다.
- 락에 포함된 MCP 서버 —
npx-스타일의 서버는 정확한 버전으로 해결되어 해당 버전으로 스테이징되며, 다른 실행기들은 명시적인 pinned / unpinned / unpinnable 상태로 기록됩니다.
- 전체 마켓플레이스와 언어 서버 —
agentpack add <마켓플레이스>는 카탈로그에 나열된 모든 플러그인(또는 --plugin을 사용해 하나)을 추가합니다. 이 플러그인의 언어 서버는 Claude Code, OpenCode 및 Grok용으로 작성됩니다.
- 간접 해결(Transitive resolution) — 패키지는 자체
agentpack.toml을 선언할 수 있습니다. agentpack은 전체 그래프를 탐색하여 충돌을 해결합니다.
- 공유 캐시 — 각 패키지는 저장소, 경로 및 커밋으로 키가 지정되어
$AGENTPACK_HOME/cache/<캐시_키>/에 한 번만 가져와지며, 해당 머신의 모든 프로젝트에서 공유됩니다.
- 작업 공간 오염 방지(No workspace pollution) — Pack의 내용은 리포지토리 외부의 스테이징 트리 내에 유지되며, 실제
~/.claude나 ~/.cursor로 심볼릭 링크되지 않습니다.
- 복원력 있는 해결(Resilient resolution) — 캐시된 메타데이터와
local/ 미러가 네트워크 호출을 대체합니다. GitHub REST API가 제한될 경우, agentpack은 Git 프로토콜로 폴백합니다.
- 빠른 실행 경로(Fast launch path) — 매니페스트, 락파일, 그리고
./.agents/가 변경되지 않은 경우, 실행기들은 스테이징을 검증하고 전체 재동기화를 건너뜁니다.
- 프로젝트별 모드 —
agentpack --mode <이름>은 작업별로 패키지, 개별 파일 및 MCP 서버를 활성화하거나 비활성화합니다.
비교
| 기능 | agentpack | 수동 복사 | 심볼릭 링크 | Git 서브모듈 |
|---|
| 다중 에이전트 지원 | Claude, Cursor, OpenCode, Codex, Grok, Antigravity | 한 번에 하나씩 | 한 번에 하나씩 | 한 번에 하나씩 |
| ... | | | | |
명령어
| 명령어 | 설명 |
|---|
init | 현재 프로젝트에 agentpack.toml 및 pack.lock 생성 |
| ... | |
리디렉션된 harness 홈은 재개 기록을 임시로 만들지 않습니다: Codex 기록은 ~/.codex와 공유되고, Grok 세션은 ~/.grok/sessions에 저장되며, 레거시 임시 스테이징 기록은 네이티브 파일을 덮어쓰지 않고 업그레이드 시 가져옵니다. | |
문서화
전체 문서는 **https://olegpustovit.github.io/agentpack**에서 확인할 수 있습니다. 여기에는 시작하기, 핵심 개념(manifest, lockfile, resolution, cache, staging, modes, MCP), 각 harness별 가이드, 그리고 완전한 CLI / manifest / 환경 참조가 포함되어 있습니다.
책의 소스 코드는 docs/에 있습니다. 로컬에서 변경 사항을 미리 보려면 mdbook을 설치하고 다음 명령어를 실행하세요:
내부 구조에 대해서는 AGENTS.md가 기여자 대상의 진실 공급원(source of truth)입니다: 데이터 레이아웃, 스테이징 내부 동작, 개별 harness 메커니즘, 그리고 lockfile 형식.
릴리스 (유지보수자)
릴리스는 GoReleaser에 의해 자동화됩니다: v* 태그를 푸시하면 .github/workflows/release.yml이 트리거되어 플랫폼별 바이너리(macOS arm64/x86_64, Linux x86_64/arm64, Windows x86_64)를 빌드하고, 아카이브 및 체크섬을 생성하며, GitHub 릴리스를 게시하고, 생성된 Homebrew cask를 olegpustovit/homebrew-tap에 푸시합니다.
| 목표 | 명령어 |
|---|
| 마이너 버전 증가 + 태그 + 푸시 (→ CI 릴리스) | make ship-minor |
| ... | |
CI가 리포지토리 간에 cask를 푸시할 수 있도록 **HOMEBREW_TAP_TOKEN**이라는 저장소 비밀(repo secret)이 필요합니다 (이는 olegpustovit/homebrew-tap에 쓰기 접근 권한을 가진 PAT입니다). | |
라이선스
MIT — LICENSE 참조.
연구 아티팩트의 경우, 평가 픽스처 및 데모 스토리보드와 계약/증거 참조를 참고하십시오. 네이티브 디스커버리 증거는 범위가 한정되어 있습니다; 패키지 무결성, 생성된 구성, 그리고 모델 동작은 별개의 주장입니다.