Vercel이 오픈소스 에이전트 프레임워크 eve를 공개했습니다. 프로덕션 환경에서 에이전트를 구축·실행·확장하는 데 최적화되어 있으며, durable execution, 샌드박스 컴퓨팅, 승인 처리, 채널, 트레이싱, 평가 기능이 기본으로 내장되어 있습니다.
오늘, Vercel은 에이전트를 구축·실행·확장하기 위한 오픈소스 에이전트 프레임워크 eve를 공개합니다. eve는 에이전트를 만든다는 것이 곧 에이전트가 하는 일을 정의하는 것이어야 한다는 생각에서 출발했습니다. 프로덕션 운영에 필요한 모든 구성 요소를 직접 조립할 필요가 없도록, eve는 처음부터 프로덕션 환경을 내장하고 있습니다.
Durable execution
샌드박스 컴퓨팅
Human-in-the-loop 승인
서브에이전트
평가(Evals)
그 외 다수
eve는 Vercel이 자체 에이전트를 구축하고 운영하는 데 직접 사용하는 프레임워크입니다.
오늘날 에이전트 생태계는 프레임워크가 등장하기 전의 웹과 닮아 있습니다. 모든 팀이 똑같은 기반 코드를 처음부터 다시 짜고 있고, 그 결과물은 다음 프로젝트로 이어지지 않습니다. Next.js가 웹에서 이 문제를 해결했듯, eve는 에이전트에서 같은 역할을 합니다.
이것이 eve 에이전트의 구조입니다.
각 파일은 에이전트의 구성 요소 하나를 나타냅니다. 디렉토리 트리만 봐도 이 에이전트가 무엇인지, 무슨 일을 하는지, 어디에 배포되는지, 언제 스스로 동작하는지 한눈에 파악할 수 있습니다.
모든 에이전트는 정의에서 시작됩니다.
agent.ts 파일에서 에이전트 자체를 설정합니다. 모델은 한 줄로 지정할 수 있으며, AI Gateway를 통한 프로바이더 폴백도 지원됩니다. 컴팩션, 모델 옵션, 그 밖의 선택적 필드도 필요할 때 사용할 수 있습니다.
에이전트에 역할과 성격을 부여하는 것도 간단합니다. instructions.md 파일을 만들면 되는데, 이 파일이 곧 eve가 모든 모델 호출 앞에 붙이는 시스템 프롬프트가 됩니다.
에이전트가 수행할 기능은 post_chart.ts, revenue-definitions.md 같은 파일로 작성합니다. 도구와 스킬을 파일로 만들면, eve가 보일러플레이트나 배선 작업 없이 작동하는 에이전트로 연결해 줍니다. 에이전트가 어떻게 동작하는지보다, 무엇을 하는지에만 집중하면 됩니다.
Vercel은 수년간 에이전트를 구축해 왔습니다. v0도 그중 하나입니다. 코딩 에이전트 덕분에 에이전트 개발이 누구나 할 수 있는 일이 되자, 실제로 모든 팀이 에이전트를 만들기 시작했습니다. 수백 개의 에이전트와 내부 앱이 만들어졌고, 겉으로 보기엔 생산성 혁명처럼 보였습니다.
하지만 그 이면에서 각 팀은 에이전트가 무언가를 하기도 전에 똑같은 기반 코드를 반복해서 구축하고 있었고, 한 에이전트에서 만든 결과물은 다른 에이전트로 이어지지 않았습니다. 에이전트마다 목적은 달랐지만 필요한 것은 같았고, 이를 충족하기 위해 매번 같은 구조가 반복해서 등장했습니다. 에이전트에는 공통된 형태가 있습니다.
eve는 그 형태를 프레임워크로 구현한 것입니다. 소프트웨어의 모든 세대는 충분히 많은 사람들이 같은 것을 어렵게 만들어본 뒤에야 그 추상화를 얻어냅니다. 에이전트도 이제 그 단계에 이르렀습니다.
에이전트가 프로덕션에서 필요로 하는 모든 것이 프레임워크에 포함되어 있습니다.
에이전트는 사람을 기다리고, 느린 시스템을 호출하며, 몇 시간, 며칠, 혹은 몇 주에 걸쳐 실행됩니다. eve에서는 모든 대화가 각 단계가 체크포인트로 저장된 durable 워크플로우로 운영됩니다. 세션이 일시 중단되거나 크래시 또는 배포가 발생해도 정확히 멈춘 지점부터 재개할 수 있습니다. 이 내구성은 오픈소스 Workflow SDK를 기반으로 구현되어 있습니다.
에이전트가 작성한 코드는 신뢰할 수 없는 코드로 취급해야 합니다. 따라서 eve는 에이전트가 생성한 코드를 애플리케이션 런타임과 완전히 분리합니다. 각 에이전트는 전용 샌드박스를 갖습니다. 이 격리된 환경에서 셸 명령, 스크립트, 파일 읽기·쓰기가 실행되며, 에이전트를 제어하는 하네스와는 별도의 보안 컨텍스트에서 동작합니다. 샌드박스의 백엔드는 어댑터 방식으로 구현되어 있습니다. 배포 환경에서는 Vercel Sandbox에서 실행되고, 로컬에서는 Docker, microsandbox, 또는 just-bash에서 실행됩니다. 다른 프로바이더용 어댑터를 직접 작성하는 것도 가능합니다.
에이전트는 실제 시스템에 작용하며, 일부 작업은 사람의 승인이 필요합니다. eve에서는 모든 액션에 승인 요구를 설정할 수 있으며, 에이전트는 승인이 날 때까지 컴퓨팅 자원을 소비하지 않고 무기한 대기합니다. 승인이 완료되면 eve는 중단된 지점부터 작업을 이어갑니다.
에이전트는 백엔드, 데이터, 서드파티 서비스에 연결해야 합니다. eve에서 연결은 MCP 서버나 호환되는 OpenAPI 문서를 가진 API를 가리키는 파일 하나로 정의됩니다.
eve는 원격 도구를 자동으로 탐색해 모델에 전달하고 인증을 중개합니다. 모델은 연결의 URL이나 자격 증명을 직접 볼 수 없습니다. Vercel Connect는 동의 처리와 토큰 갱신이 내장된 인터랙티브 OAuth를 처리합니다. 출시 시점에 eve 에이전트는 Slack, GitHub, Snowflake, Salesforce, Notion, Linear에 연결할 수 있으며, OAuth, API 키, MCP 서버를 통해 접근 가능한 모든 서비스와도 연동됩니다.
대부분의 에이전트는 새로운 인터페이스마다 별도의 통합을 구축해야 하기 때문에 한 곳에만 존재합니다. eve에서는 동일한 에이전트가 모든 인터페이스를 지원하며, 각 채널은 작은 어댑터 파일 하나로 구성됩니다. HTTP API는 기본으로 활성화되어 있고, Slack, Discord, Teams, Telegram, Twilio, GitHub, Linear가 기본 제공됩니다. defineChannel로 커스텀 채널도 지원하며, 한 채널에서 다른 채널로 이어받기도 가능합니다. 예를 들어 인시던트 웹훅이 Slack에 조사 스레드를 열 수 있습니다.
에이전트가 오류를 냈을 때 가장 먼저 확인해야 할 것은 에이전트가 실제로 무엇을 했는지입니다. eve에서는 모든 실행이 트레이스를 생성합니다. 각 모델 호출과 도구 호출이 입출력과 함께 순서대로 기록되며, 에이전트가 샌드박스에서 실행한 명령까지 포함됩니다. 로그를 짜 맞추는 대신 실행을 그대로 재현할 수 있습니다.
스팬은 표준 OpenTelemetry 형식으로, 이미 사용 중인 트레이싱 서비스라면 Braintrust, Honeycomb, Datadog, Jaeger 어디에나 내보낼 수 있습니다. Vercel에서는 Observability의 Agent Runs 탭에 표시되어, 모든 세션을 한 곳에서 모니터링하고 원하는 실행을 상세히 살펴볼 수 있습니다. 평가 기능으로는 한 단계 더 나아가, 로컬에서 실행하거나 CI에 연결할 수 있는 점수 기반 테스트 스위트를 작성할 수 있습니다.
이제 남은 것은 어떤 프레임워크도 대신 써줄 수 없는 부분, 즉 에이전트가 실제로 무엇을 할지입니다.
에이전트에 기능을 추가하는 가장 일반적인 방법은 도구를 제공하고, 스킬로 방법을 가르치는 것입니다. 기존에는 도구를 만들고, 스킬을 작성하고, 에이전트 루프에 모두 연결하는 작업이 필요했습니다. eve에서는 도구는 TypeScript 파일 하나, 스킬은 마크다운 파일 하나입니다.
빠진 것이 보이시나요? 에이전트에 연결하고 등록하는 보일러플레이트 코드를 작성할 필요가 없습니다. eve가 알아서 처리합니다.
파일 이름과 트리 내 위치가 곧 그 파일의 정의입니다. eve는 빌드 타임에 도구와 스킬을 인식해 모델에 설명을 전달하고, 이후는 모델이 처리합니다. Next.js가 라우팅을 직접 관리함으로써 폴더를 라우트로 만들듯, eve는 에이전트 루프를 직접 관리함으로써 파일을 에이전트 기능으로 만듭니다.
액션에 승인을 요구하려면 도구에 필드 하나만 추가하면 됩니다.
이제 비용이 많이 드는 쿼리, 데이터를 변경하는 쓰기 작업, 또는 무인 실행을 원하지 않는 모든 작업을 안전하게 보호할 수 있습니다.
정의한 도구가 전부가 아닙니다. eve는 에이전트에게 셸이 있는 실제 컴퓨터를 제공하므로, 터미널에서 사용하는 bash, grep 등 모든 명령을 실행할 수 있습니다. 아직 존재하지 않는 코드가 필요한 작업이 생기면, 에이전트가 직접 코드를 작성하고 실행합니다.
에이전트는 안전한 샌드박스 안에서 스스로 문제를 해결합니다. 데이터셋을 재구성하거나, 일회성 분석을 수행하거나, 기존 도구로는 처리할 수 없는 작업에 필요한 코드를 직접 작성하는 것도 가능합니다.
eve 에이전트는 작업을 위임할 수도 있습니다. 서브에이전트는 한 단계 아래에 있는 동일한 구조, 즉 subagents/ 안에 자체 지침, 도구, 샌드박스를 갖춘 디렉토리입니다. 부모 에이전트는 도구를 호출하듯 서브에이전트를 호출합니다.
자식 에이전트는 깨끗한 컨텍스트 윈도우와 할당된 도구만 가지고 시작해, 작업을 완료한 뒤 결과를 부모에게 돌려줍니다.
이제 모든 개발자가 기대하는 단계, 에이전트 테스트입니다. 기존에는 프로세스를 시작하고, 질문하고, 로그를 읽는 방식이었습니다. 어떤 도구가 사용됐는지, 모델이 무엇을 로드했는지, 왜 그런 답변을 냈는지 한눈에 볼 수 있는 방법이 없었습니다. 에이전트와 대화하면서 동작을 실시간으로 보고 싶었지만, 돌아오는 것은 stdout뿐이었습니다. eve에서는 개발 루프가 명령어 하나입니다.
eve 에이전트를 시작하려면 개발 서버를 실행합니다.
에이전트가 수행한 모든 동작이 TUI에 표시됩니다. 에이전트가 스킬을 로드하고, 쿼리를 실행하고, 팀의 규칙에 따라 답변한 과정이 각각 durable 세션의 체크포인트 단계로 나타납니다. 터미널 UI는 클라이언트일 뿐이며, 에이전트는 동일한 구조화된 이벤트를 HTTP로 제공합니다. 따라서 curl, 테스트 스크립트, 또는 CI에서 에이전트를 구동하고 동작을 정확히 검증할 수 있습니다.
에이전트와 직접 대화하는 것은 한 번에 한 실행만 검증할 수 있습니다. 평가는 나머지 소프트웨어를 테스트하는 방식과 동일하게 에이전트를 테스트합니다. 프로젝트의 다른 모든 것과 마찬가지로 파일로 작성된 점수 기반 검사입니다.
eve eval를 로컬에서 실행하거나 배포된 앱을 대상으로 지정할 수 있어, 프롬프트 변경이나 모델 교체로 무엇이 깨졌는지 사용자보다 먼저 확인할 수 있습니다.
에이전트가 로컬 환경에 충분히 있었으니 이제 배포할 시간입니다. 보통 배포는 에이전트 개발이 멈추고 인프라 작업이 시작되는 단계입니다. eve에서는 프로비저닝할 것이 없습니다. 에이전트는 일반 Vercel 프로젝트이고, 다른 프런트엔드나 백엔드와 동일한 방식으로 배포됩니다.
배포해도 에이전트는 달라지지 않습니다. eve는 처음부터 어댑터를 염두에 두고 설계되었기 때문입니다. 출시 시점에 eve는 Vercel에 배포되며, 다른 플랫폼 지원도 준비 중입니다. 동일한 디렉토리가 로컬에서 실행되던 그대로 프로덕션에서도 실행됩니다. 코드 변경 없이 샌드박스가 Vercel Sandbox로 전환되고, 개발 중에 대화하던 에이전트가 이제 공개 URL로 접근 가능해집니다. 배포는 에이전트를 중단시키지도 않습니다. 푸시 시점에 작업 중이던 세션은 시작된 버전에서 끝까지 완료됩니다.
이 모든 과정에서 대시보드를 별도로 거칠 필요가 없습니다. 에이전트를 구축한 코딩 에이전트가 배포하고 결과를 검증할 수 있습니다.
하지만 배포가 완료라는 의미는 아닙니다. 프로덕션에서 에이전트는 만나야 할 사용자가 있고, 자체 일정에 따라 처리해야 할 작업이 있습니다.
기존에는 에이전트를 Slack에 연결하려면 Slack 앱을 먼저 만들어야 했습니다. 앱 설정, 봇 토큰, 이벤트 구독, 웹훅 엔드포인트, 서명 시크릿까지, 에이전트가 첫 마디를 꺼내기도 전에 이 모든 과정이 필요했습니다. eve에서는 채널 연결이 명령어 하나입니다.
이 명령어는 channels/slack.ts 파일 하나를 생성합니다. 이 파일은 다른 코드 변경과 똑같이 배포되고, 방금 배포한 에이전트가 Slack에서 응답하기 시작합니다. 채널의 플랫폼 기능도 함께 제공됩니다. 승인은 Slack 버튼으로, 질문은 선택 메뉴로 렌더링되며, 에이전트가 작업하는 동안 타이핑 인디케이터도 표시됩니다. 자격 증명을 Vercel Connect를 통해 관리하면 .env 파일에 봇 토큰을 복사할 필요가 없습니다. discord나 teams으로 같은 명령어를 다시 실행하면 동일한 에이전트가 해당 채널에도 연결됩니다. 채널 하나당 파일 하나입니다.
채널은 에이전트의 사용자 인터페이스이며, 세션은 채널 간에 이동합니다. Slack에서 시작된 질문이 웹에서 이어질 수 있고, HTTP로 수신된 인시던트 웹훅이 Slack에 조사 스레드를 열어 팀이 이미 있는 곳에서 작업을 마무리할 수 있습니다.
월요일 매출 리포트를 누군가가 요청할 때까지 기다릴 필요가 없습니다. 스케줄은 파일 하나로, 크론 표현식과 에이전트를 자체 일정에 따라 시작하는 핸들러로 구성됩니다.
Vercel에서 각 스케줄은 Vercel Cron Job으로 배포되므로, 아무도 기억하지 않아도 매주 월요일 리포트가 자동으로 게시됩니다.
팀이 의존하는 에이전트는 프로덕션 소프트웨어입니다. 지침을 변경하면 코드를 변경하는 것만큼 에이전트가 망가질 수 있습니다. eve 에이전트는 디렉토리 안의 파일들로 구성되어 있어, 나머지 코드와 마찬가지로 Git에서 관리됩니다. 새 프롬프트, 도구, 스킬은 커밋으로 남고 diff, 리뷰, 히스토리가 모두 갖춰집니다.
eve eval를 CI에 연결하면 작성한 테스트 스위트가 배포 게이트가 됩니다. 모든 커밋에 점수가 매겨지므로 회귀가 프로덕션이 아닌 CI에서 차단됩니다.
모든 커밋은 자체 프리뷰 배포를 갖게 되며, 에이전트 채널도 함께 배포됩니다. 팀은 매일 사용하는 Slack 봇이 교체되기 전에 다음 버전을 미리 사용해 볼 수 있습니다.
그리고 어떤 평가에서도 잡지 못한 변경이 문제를 일으킬 경우, 프로덕션을 이전 버전으로 즉시 롤백할 수 있습니다.
Vercel은 현재 100개 이상의 에이전트를 프로덕션에서 운영하고 있으며, 이 에이전트들은 회사의 일상적인 운영에서 각자의 역할을 담당하고 있습니다. 몇 가지를 소개합니다.
Vercel에서 가장 많이 사용되는 내부 도구는 에이전트입니다. d0는 한 달에 3만 건 이상의 질문을 처리합니다. 누구든 Slack에서 d0에게 무엇이든 물어보면 데이터 웨어하우스에서 답변을 받을 수 있습니다. 모든 쿼리는 질문자의 권한 범위로 제한되므로, d0는 사용자가 기존에 접근할 수 없는 테이블을 절대 노출하지 않습니다.
Lead Agent는 최고 영업 담당자의 플레이북을 24시간 365일 실행합니다. 새 리드가 들어오는 즉시 대응하고 자체적으로 팔로업을 진행하므로, 밤 사이에 리드가 식는 일이 없습니다. 연간 운영 비용은 약 5,000달러이고 32배의 수익을 올리며, 엔지니어 한 명이 파트타임으로 유지 관리합니다.
RevOps 팀이 엔지니어 없이 6주 만에 Athena를 구축했습니다. Snowflake와 Salesforce의 파이프라인 및 예측 질문에 자연어로 답변하며, 도입 후 파이프라인 커버리지가 거의 두 배로 늘었습니다.
Vertex는 헬프센터, 문서, Slack에서 24시간 티켓을 처리하는 지원 에이전트입니다. 언제 문의하더라도 빠른 응답을 받을 수 있습니다. 티켓을 읽고, 올바른 답을 찾아 응답하며, 티켓의 92%를 자체적으로 해결합니다. 나머지는 지원팀으로 에스컬레이션되어 팀이 실제로 주의가 필요한 문제에 집중할 수 있습니다.
Vercel에서는 콘텐츠팀뿐 아니라 누구나 글을 씁니다. draft0는 전체 리뷰 파이프라인을 실행해 가장 명백한 문제를 잡아내고, 글이 실제로 무엇을 다루는지 분석을 쌓아올린 뒤 편집팀에 전달합니다. 편집팀이 글을 받을 때는 이미 명백한 작업이 완료되어 있고, 글이 무엇을 필요로 하는지 훨씬 명확하게 파악되어 있습니다. 덕분에 작은 글은 빠르게 처리되고, 이 글처럼 충분한 주의가 필요한 글에 온전히 집중할 수 있습니다.
Vercel은 매일 수백 개의 에이전트를 활용하지만, 어떤 에이전트가 어떤 작업을 담당하는지 직접 파악하는 것은 비효율적입니다. 그래서 모든 작업은 먼저 Slack의 V에게 전달됩니다. V가 해당 작업을 실제로 처리할 수 있는 에이전트를 판단해 라우팅하므로, 수백 개의 에이전트가 하나처럼 동작합니다.
이 에이전트들은 처음에 각각 다른 스택 위의 별도 프로젝트로 시작했습니다. 상태 관리 방식도, 자격 증명 중개 방식도, 로그 출력 방식도 제각각이었는데, 두세 번째 에이전트를 만들고 나면 대부분의 팀이 맞닥뜨리는 상황이 바로 이것입니다. 오늘날 이 에이전트들은 하나의 모노레포에 모여, 담당 팀이 어디든 동일한 방식으로 구축·모니터링·업그레이드됩니다. 모두 같은 구조를 공유하기 때문에, 수백 개의 에이전트도 하나를 운영하는 것과 동일한 도구와 규칙으로 관리됩니다.
1년 전, 에이전트는 Vercel 전체 배포의 3% 미만을 트리거했습니다. 지금은 약 29%이며, 곧 전체 배포의 절반이 에이전트에서 시작될 것으로 예상됩니다. 이미 에이전트를 만들어보셨다면, 다음 에이전트는 처음부터 다시 시작할 필요가 없습니다.
퍼블릭 프리뷰가 오늘 공개되었습니다. CLI 마법사가 모델 선택부터 개발 서버 실행까지, 1분 안에 첫 번째 에이전트를 안내합니다.
코딩 에이전트는 프롬프트만 있으면 됩니다.
eve의 모든 기능은 docs.eve.dev에서 확인할 수 있으며, 개발은 github.com/vercel/eve에서 공개적으로 진행됩니다. 이슈, 토론, 기여 모두 환영합니다.
수백 개의 에이전트가 이미 Vercel에서 eve 위에서 실행되고 있습니다. 여러분은 무엇을 만드시겠습니까?