An open source template for building cloud agents.
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
Open Agents는 Vercel에서 백그라운드 코딩 에이전트를 구축하고 실행하기 위한 오픈소스 참조 앱입니다. 웹 UI, 에이전트 런타임, 샌드박스 오케스트레이션, 그리고 노트북을 켜지 않고도 프롬프트에서 코드 변경까지 이어주는 GitHub 통합을 포함합니다.
이 저장소는 블랙박스로 취급되지 않고 포크 및 수정되도록 설계되었습니다.
Open Agents는 3계층 시스템입니다:
Web -> Agent workflow -> Sandbox VM
에이전트는 VM 내부에서 실행되지 않습니다. 샌드박스 외부에서 실행되며 파일 읽기, 편집, 검색, 셸 명령과 같은 도구를 통해 샌드박스와 상호작용합니다.
이 분리가 프로젝트의 주요 포인트입니다:
현재 구현을 이해하는 데 중요한 몇 가지 세부 사항:
전체 목록은 apps/web/.env.example을 참조하세요. 요약:
POSTGRES_URL=
BETTER_AUTH_SECRET=
NEXT_PUBLIC_VERCEL_APP_CLIENT_ID=
VERCEL_APP_CLIENT_SECRET=
NEXT_PUBLIC_GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_APP_ID=
GITHUB_APP_PRIVATE_KEY=
NEXT_PUBLIC_GITHUB_APP_SLUG=
GITHUB_WEBHOOK_SECRET=
REDIS_URL=
KV_URL=
OPEN_AGENTS_RESOURCE_PROFILE=
VERCEL_PROJECT_PRODUCTION_URL=
NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL=
VERCEL_SANDBOX_BASE_SNAPSHOT_ID=
ELEVENLABS_API_KEY=
REDISURL / KVURL: 선택적 스킬 메타데이터 캐시 (설정되지 않으면 인메모리로 대체).OPENAGENTSRESOURCE_PROFILE: 선택적 배포 리소스 프로필. hobby로 설정하면 채팅 및 샌드박스 리소스에 Hobby 호환 기본값을 사용합니다. 설정하지 않으면 표준 동작.VERCELPROJECTPRODUCTIONURL / NEXTPUBLICVERCELPROJECTPRODUCTIONURL: 메타데이터 및 일부 콜백 동작을 위한 정식 프로덕션 URL.VERCELSANDBOXBASESNAPSHOTID: 새 샌드박스를 위한 선택적 기본 스냅샷. 설정하지 않으면 샌드박스는 Vercel의 표준 샌드박스 런타임에서 시작됩니다. 자신의 Vercel 범위에서 생성/접근 가능한 스냅샷을 사용하세요.ELEVENLABSAPIKEY: 음성 전사. openssl rand -base64 32 # BETTER_AUTH_SECRET
POSTGRES_URL=
BETTER_AUTH_SECRET=
https://YOUR_DOMAIN/api/auth/callback/vercel
NEXT_PUBLIC_VERCEL_APP_CLIENT_ID=
VERCEL_APP_CLIENT_SECRET=
https://YOUR_DOMAINhttps://YOUR_DOMAIN/api/auth/callback/githubhttps://YOUR_DOMAIN/api/github/app/callbackNEXTPUBLICGITHUBCLIENTID 및 GITHUBCLIENTSECRET에 GitHub App의 Client ID와 Client Secret 사용GitHub App 설정에서:
OPENAGENTSRESOURCEPROFILE=hobby, 정식 프로덕션 URL 변수, 그리고 새 샌드박스가 사전 구성된 이미지에서 시작하도록 하려면 자신의 VERCELSANDBOXBASESNAPSHOT_ID를 추가합니다. corepack enable
pnpm install
cp apps/web/.env.example apps/web/.env
apps/web/.env에 필요한 값을 입력합니다. pnpm web
이미 연결된 Vercel 프로젝트가 있다면 vc env pull로 로컬에 환경 변수를 가져올 수 있습니다.
인증은 Better Auth로 처리되며 Vercel과 GitHub를 소셜 공급자로 사용합니다. 모든 인증 라우트는 /api/auth/[...all] catchall에서 제공됩니다.
Vercel OAuth 앱을 생성하고 다음 콜백을 사용하세요:
https://YOUR_DOMAIN/api/auth/callback/vercel
로컬 개발의 경우:
http://localhost:3000/api/auth/callback/vercel
그런 다음 설정:
NEXT_PUBLIC_VERCEL_APP_CLIENT_ID=...
VERCEL_APP_CLIENT_SECRET=...
별도의 GitHub OAuth 앱이 필요하지 않습니다. Open Agents는 GitHub App의 OAuth 자격 증명을 Better Auth 소셜 공급자로 사용하고, App의 설치 토큰을 저장소 접근에 사용합니다.
설치 기반 저장소 접근을 위한 GitHub App을 생성하고 다음을 구성하세요:
https://YOUR_DOMAINhttps://YOUR_DOMAIN/api/auth/callback/githubhttps://YOUR_DOMAIN/api/github/app/callback로컬 개발의 경우 Homepage URL로 http://localhost:3000, Callback URL로 http://localhost:3000/api/auth/callback/github, Setup URL로 http://localhost:3000/api/github/app/callback을 사용하세요.
그런 다음 설정:
NEXT_PUBLIC_GITHUB_CLIENT_ID=... # GitHub App Client ID
GITHUB_CLIENT_SECRET=... # GitHub App Client Secret
GITHUB_APP_ID=...
GITHUB_APP_PRIVATE_KEY=...
NEXT_PUBLIC_GITHUB_APP_SLUG=...
GITHUB_WEBHOOK_SECRET=...
GITHUBAPPPRIVATE_KEY는 이스케이프된 줄바꿈이 있는 PEM 내용 또는 base64로 인코딩된 PEM으로 저장할 수 있습니다.
pnpm web # dev 서버 실행
pnpm check # 린트 + 포맷 검사
pnpm fix # 린트 + 포맷 수정
pnpm typecheck # 모든 패키지 타입체크
pnpm run ci # 전체 CI: 검사, 타입체크, 테스트, 마이그레이션 검사
pnpm sandbox:snapshot-base # 샌드박스 기본 스냅샷 새로고침
apps/web Next.js 앱, 워크플로우, 인증, 채팅 UI
packages/agent 에이전트 구현, 도구, 서브에이전트, 스킬
packages/sandbox 샌드박스 추상화 및 Vercel 샌드박스 통합
packages/shared 공유 유틸리티