
yoloai v0.11.0
당신의 에이전트는 보안 위험이므로 그렇게 취급하세요. yoloAI는 AI 에이전트 샌드박싱을 제대로 구현합니다.
yoloAI
AI 코딩 에이전트를 위한 샌드박스 러너. 권한 피로 없음, 박스 안에 자격 증명 없음, 승인하기 전까지 프로젝트에 변경 사항 없음.
AI 코딩 에이전트는 가드레일이 없을 때 가장 잘 작동하지만, 실제 머신에서 그렇게 실행하는 것은 매우 위험합니다. yoloAI는 에이전트에게 아무것이나 편집하고 실행할 수 있는 일회용 샌드박스를 제공하여 무인으로 작업할 수 있게 합니다. 프로젝트, 자격 증명, 네트워크는 모두 사용자의 통제 하에 유지됩니다. 에이전트가 작업을 마치면 diff를 검토하고 유지하고 싶은 부분만 적용하세요.
You Sandbox Your project
│ │ │
├─ yoloai new fix-bug . ├─ sandbox copy of project │
│ │ │
├─ << your prompt(s) >> ├─ agent works freely │
│ │ (no permission prompts) │
│ │ │
├─ yoloai diff fix-bug ├─ shows what changed │
│ │ │
├─ yoloai apply fix-bug │ ├─ patches applied
│ (you choose which ones) │ │
│ │ │
├─ yoloai destroy fix-bug ├─ destroys sandbox │
왜?
권한 프롬프트는 에이전트가 실수를 하기 때문에 존재합니다. 백 번째 승인/거부를 지나면 더 이상 읽지 않게 되고, --dangerously-skip-permissions는 혼란스러운 에이전트 하나가 아주 나쁜 날을 만들 수 있습니다. yoloAI는 프롬프트가 불필요해질 때까지 폭발 반경을 줄입니다:
- 파일이 안전합니다. 에이전트는 프로젝트의 격리된 복사본에서 작업합니다.
diff는 정확히 무엇이 변경되었는지 보여주고,apply는 개별 커밋을 보존하면서 실제 프로젝트에 패치를 적용합니다. 적용하기 전까지 원본은 절대 변경되지 않습니다. - 비밀이 안전합니다. 샌드박스는 최소한의 로컬 빌드 환경에서 시작됩니다. 호스트 환경 변수는 호스트에 남아 있습니다. 자격 증명은 환경 변수가 아닌 읽기 전용 파일 마운트로 전달됩니다. 자격 증명 브로커링이 적용되는 경우(현재 Claude, Gemini, Codex, 기본적으로 활성화), API 키는 완전히 호스트 측에 유지됩니다. 로컬 프록시가 공급자로 가는 경로에 키를 주입하므로, 완전히 손상된 에이전트라도 유출할 것이 없습니다.
- 네트워크는 사용자의 것입니다.
--network-isolated는 에이전트의 API 엔드포인트와 허용한 도메인으로만 외부 통신을 제한합니다.--network-none은 네트워크를 완전히 제거합니다. - 머신이 격리됩니다. Linux 네임스페이스부터 gVisor, 하드웨어 VM까지 원하는 수준을 선택하세요.
전체 모델과 솔직한 한계를 포함한 자세한 내용은 보안을 참조하세요.
설치
사전 빌드된 바이너리 (권장)
최신 릴리스에서 플랫폼에 맞는 아카이브를 다운로드하고, yoloai 바이너리를 추출한 후 PATH에 추가하세요:
# Linux x86-64 (필요에 따라 linux_arm64 / darwin_amd64 / darwin_arm64로 교체).
# 위에 링크된 최신 릴리스 페이지에 표시된 태그를 VERSION에 설정하세요.
# 앞의 "v"는 제외 — 예: 태그 v1.2.3의 경우 VERSION=1.2.3.
VERSION=X.Y.Z
curl -fsSL "https://github.com/kstenerud/yoloai/releases/download/v${VERSION}/yoloai_${VERSION}_linux_amd64.tar.gz" \
| tar -xz yoloai
sudo install yoloai /usr/local/bin/
각 아카이브에는 셸 완성, LICENSE, 변경 로그도 포함되어 있습니다. 릴리스는 cosign(checksums.txt)으로 서명되며 GitHub 빌드 출처 증명(gh attestation verify yoloai_… --repo kstenerud/yoloai)을 포함합니다. Debian/RPM 패키지도 각 릴리스에 첨부됩니다.
Homebrew (macOS / Linux)
brew install --cask kstenerud/tap/yoloai
go install 사용
# 최신 릴리스
go install github.com/kstenerud/yoloai/cmd/yoloai@latest
# 최신 개발 버전 (불안정)
go install github.com/kstenerud/yoloai/cmd/yoloai@main
Go 1.26+ 필요. 바이너리는 $GOPATH/bin(일반적으로 ~/go/bin)에 배치됩니다.
소스에서 빌드
git clone https://github.com/kstenerud/yoloai.git
cd yoloai
git checkout "$(git describe --tags --abbrev=0)" # 최신 릴리스 태그; 또는 개발 버전을 위해 main에 유지
make build
sudo install yoloai /usr/local/bin/
선택한 백엔드 외에 런타임 종속성이 없는 단일 Go 바이너리입니다. 첫 실행 시 yoloAI는 기본 이미지를 빌드하고 ~/.yoloai/(또는 --data-dir로 지정한 디렉터리)를 생성합니다.
빠른 시작
비대화형
# 인증 (yoloAI는 기존 자격 증명을 자동으로 감지)
export ANTHROPIC_API_KEY=sk-ant-... # Claude Code
export GEMINI_API_KEY=... # Gemini CLI
# 또는 이미 인증된 세션을 자동으로 감지하도록 두기
# 1. 샌드박스 생성. 프롬프트를 제공하면 에이전트가 즉시 작업 시작
yoloai new fix-bug ./my-project --prompt "fix the failing tests"
# 2. 에이전트가 변경한 내용 확인
yoloai diff fix-bug
# 3. 실제 프로젝트에 좋은 부분 적용
yoloai apply fix-bug
# 4. 샌드박스 폐기
yoloai destroy fix-bug
대화형
yoloai new exploration ./my-project -a
# 샌드박스의 tmux에서 실행 중인 에이전트 안에 있습니다.
# Ctrl-B, D로 분리.
# yoloai attach exploration으로 다시 연결.
반복 작업
더 긴 세션의 경우 루프로 작업하세요: 에이전트에게 진행하면서 커밋하도록 지시하고, 완성된 커밋을 실제 프로젝트로 가져오고 싶을 때마다 다른 터미널에서 yoloai apply를 실행하세요. 각 apply는 마지막 이후의 새 커밋만 가져옵니다. 결과에 만족하면 평소처럼 푸시하고 샌드박스를 폐기하세요. 전체 워크플로는 사용 가이드를 참조하세요.
데모
샌드박스 생성, 에이전트 프롬프트, 결과 적용:
https://github.com/user-attachments/assets/9d6740b4-a34e-4253-82ec-cb0e4c7a8bd9
기능
샌드박싱
- 6가지 백엔드: Docker, Podman, containerd(Kata), Apple Container, Tart, Seatbelt. Linux, macOS, Windows(WSL2)에서 실행.
- 샌드박스별 선택 가능한 격리 강도: runc부터 gVisor, Kata VM(QEMU 또는 Firecracker)까지.
- 샌드박스별 네트워크 정책: 개방, 허용 목록, 또는 없음.
- 샌드박스 내부의 최소 환경. 호스트의 모든 것은 명시적 옵트인(
--env,--dir). - 리소스 제한(
--cpus,--memory) 및 포트 포워딩(--port). - 저렴한 작업 디렉터리 복사: macOS의 전체 트리 클론(APFS
clonefile), 이를 지원하는 Linux 파일시스템(btrfs, XFS)의 파일별 reflink. reflink가 없는 파일시스템(ext4)은 일반 복사. .gitignore존중: 무시된 항목은 샌드박스로 복사되지 않음(디스크의 개발 자격 증명에 대한 보안 관행).
자격 증명
- 기존 에이전트 로그인을 자동으로 감지: API 키, 구독 자격 증명, macOS Keychain.
- 자격 증명 브로커링은 API 키를 호스트 측에 유지(현재 Claude, Gemini, Codex); Aider 및 OpenCode 자격 증명은 읽기 전용 파일 마운트로 전달.
워크플로
- git이 샌드박스 측에서 실행되는 복사/diff/apply로 필터와 훅이 있는 저장소도 올바르게 동작.
- 원하는 방식으로 적용: 커밋 재생(기본), 단일 패치로 스쿼시,
.patch파일 내보내기, ref로 커밋 선택, 또는 먼저--dry-run. - 전체 수명 주기: 생성, 연결, 중지, 재시작, 대기, 복제, 리셋, 폐기. 에이전트 상태는 중지와 재시작을 거쳐도 유지.
- 스크립트 및 CI용 헤드리스 원샷:
yoloai run --prompt ... --rm, 모든 명령에--json출력. - 에이전트가 종료되면 tmux 창이 셸로 전환되어 샌드박스를 검사할 수 있습니다.
통합
- Claude Code, Codex, Gemini CLI, Aider, OpenCode 내장, 그 외 모든 것을 위한
shell모드. - VS Code: 컨테이너에 연결하거나 샌드박스 내부에서 Remote Tunnel 열기(
--vscode-tunnel). - 양방향 MCP:
yoloai mcp serve는 외부 에이전트가 샌드박스를 도구로 구동하게 하고,yoloai mcp proxy는 샌드박스 내부에서 MCP 서버를 실행. - 프로필: 프로젝트별 이미지 및 기본값(Dockerfile + 구성, 상속 포함).
- 확장: YAML로 래핑된 셸 스크립트로 사용자 정의 하위 명령 추가(
yoloai x). - 임베딩 가능: CLI는 공개 Go API 위의 얇은 계층.
- 단일 정적 바이너리. 상태는
~/.yoloai/에 저장(--data-dir로 이동 가능).
지원 인프라
샌드박스 백엔드
| Backend | Supported Hosts | Dependencies |
|---|---|---|
| docker | Linux, macOS, Windows (WSL2) | Docker Engine, Docker Desktop, 또는 OrbStack |
| podman | Linux, macOS | Podman (macOS에서는 brew install podman) |
| containerd | Linux | Kata Containers |
| apple | macOS (Apple Silicon) | Apple Container |
| tart | macOS (Apple Silicon) | Tart (brew install cirruslabs/cli/tart) |
| seatbelt | macOS (모든 모델) | 없음 (내장 sandbox-exec 사용) |
참고: Tart는 전체 macOS VM을 제공하므로 샌드박스 내에서 시뮬레이터를 실행할 수 있습니다.
격리 모드
선택적으로 OCI 런타임을 업그레이드하여 더 강력한 격리를 제공합니다. gVisor 모드는 docker와 podman에서 사용 가능하며, VM 모드는 containerd 백엔드와 함께 제공됩니다.
| Mode | Description |
|---|---|
container | 기본 runc: 표준 Linux 네임스페이스 및 cgroups |
container-enhanced | 사용자 공간 커널(gVisor/runsc): syscall 인터셉트, KVM 불필요 |
container-privileged | 모든 capabilities, seccomp/AppArmor 비제한. Docker-in-Docker 및 Compose용 |
vm | Kata Containers(QEMU): 하드웨어 VM 격리 |
vm-enhanced | Kata + Firecracker microVM: 경량 VM 격리 |
# 모든 새 샌드박스에 gVisor 사용
yoloai config set isolation container-enhanced
# 또는 샌드박스별로
yoloai new task . --isolation container-enhanced
에이전트
| Mode | Description |
|---|---|
claude | API 키 또는 구독 자격 증명으로 Claude Code 실행 (기본) |
codex | API 키 또는 구독 자격 증명으로 Codex 실행 |
gemini | API 키 또는 구독 자격 증명으로 Gemini CLI 실행 |
aider | Aider 실행 (구성이 복사됨) |
opencode | OpenCode 실행 (구성이 복사됨) |
shell | 모든 에이전트 자격 증명이 시드된 tmux 셸 실행 |
idle | MCP 프록시를 허용하는 유휴 프로세스 실행 |
사용 가능한 에이전트를 나열하려면 yoloai system agents를 사용하세요.
더 알아보기
상태
공개 베타. 핵심 워크플로는 안정적이며 매일 사용됩니다. 인터페이스는 0.x 릴리스 사이에 변경될 수 있으며, 모든 호환성 변경 사항은 BREAKING-CHANGES에 문서화됩니다. 피드백을 환영합니다.