Skip to main content
Devin Outposts를 사용하면 Devin의 계획 수립과 모델 추론은 Devin Cloud에서 그대로 수행되고, 명령어 실행, 파일 편집, 저장소 액세스는 사용자가 운영하는 머신에서 이루어집니다. 이 가이드에서는 해당 머신으로 CoreWeave 샌드박스를 사용합니다. 샌드박스는 이미지, CPU, 메모리, GPU, lifetime을 직접 선택할 수 있는 격리된 환경입니다. outpost는 Devin Cloud에 있는 이름이 지정된 큐입니다. 워커는 devin worker 프로세스로, 아웃바운드 HTTPS로 Devin Cloud에 연결한 뒤 큐에서 세션을 가져와 로컬에서 실행합니다. 인바운드 포트, 공용 IP 주소, 가상 사설망(VPN)은 필요하지 않습니다. 이 가이드에서는 샌드박스 하나가 워커 하나를 실행하며, 이 워커는 샌드박스가 살아 있는 동안 세션을 차례로 서빙합니다. 각 워커는 한 번에 하나의 활성 세션만 서빙하며, 나머지 세션은 사용 가능한 워커가 생길 때까지 대기합니다. 이 가이드에서는 정해진 수의 워커만 시작하므로, 세션이 큐에 쌓여도 샌드박스가 추가로 생성되지 않습니다. 워커가 더 필요하면 직접 시작하거나 오케스트레이터를 사용해 자동으로 프로비저닝하세요.

사전 요구 사항

시작하기 전에 다음 사항을 확인하세요:
  • Outposts가 활성화된 Devin 조직. Devin Cloud의 설정 > 환경에 Outposts가 보이지 않으면 Devin Admin에게 문의하세요.
  • SANDBOX_USER 액션이 부여된 CoreWeave API 액세스 토큰.
  • SDK를 직접 사용하는 경우 Python 3.11 이상과 uv, 또는 Node.js 22 이상.
이 가이드를 실행할 터미널에서 CoreWeave API 액세스 토큰을 export하세요:

Devin Cloud에서 outpost 생성

outpost를 생성하고 토큰을 조회하려면 다음 단계를 따르세요:
  1. Devin Cloud에서 Settings > Environment > Outposts로 이동하세요.
  2. Create Outpost를 클릭하고, 이름을 입력한 후 Linux를 선택하세요.
  3. outpost 토큰을 복사하세요. Devin Cloud는 이 토큰을 한 번만 표시합니다.
outpost가 준비되면 cws-agent 또는 Sandboxes SDK 중 하나를 선택해 워커를 시작한 다음, 확인 세션을 실행하세요.

cws-agent 빠른 시작

cws-agent 설치 안내를 따르세요. 이 도구는 파일 시스템 스냅샷으로 워크스페이스를 저장하고 복원할 수 있도록 스냅샷 볼륨을 설정합니다. [OUTPOST-TOKEN]은 복사한 토큰으로, [OUTPOST-NAME]은 outpost 이름으로, [SANDBOX-NAME]은 이 샌드박스에 사용할 cws-agent 세션 이름으로 바꾸세요. 세션 이름은 영문 소문자, 숫자, 하이픈으로 구성된 1~40자여야 하며, 영문자나 숫자로 시작해야 합니다.
이 도구는 토큰을 샌드박스에 전달하고 워커 하나를 시작합니다. 워커의 터미널을 보려면 다음 명령을 실행하세요.
Ctrl-b를 누른 다음 d를 눌러 세션에서 분리한 후 Devin 세션 실행 및 확인으로 넘어가세요. 이 워커는 Devin Cloud에 연결되며, --agent devin으로 실행하는 대화형 Devin 명령줄 인터페이스(CLI)와는 별개입니다.

Sandboxes SDK로 설정

cws-agent 없이 워커를 직접 실행하는 대안입니다. persistent storage를 설정하지 않습니다. Configure 사용자 인증 정보 and install the client에서 생성한 가상 환경에서 Python 스니펫을 실행하세요. TypeScript 스니펫을 클라이언트를 설치한 프로젝트에 .mts 파일로 저장한 후 npx tsx [FILENAME].mts로 실행하세요.

사용자 인증 정보 설정 및 클라이언트 설치

스크립트를 실행할 터미널에서 outpost를 생성할 때 복사한 토큰을 export하세요:
클라이언트를 선택하고 로컬에 설치하세요:
Python 3.11 이상과 uv를 사용하세요:

워커 시작

워커 시작 시간을 줄이려면 Devin CLI, Git, 언어 런타임 및 프로젝트 의존성이 미리 설치된 자체 이미지를 사용하세요. Python에서는 container_image를, TypeScript에서는 containerImage를 해당 이미지로 설정하세요. 이미지에 Git과 인증 기관(CA) 인증서가 이미 포함되어 있다면 예시에서 apt-get 명령어를 제거하세요.
다음 스크립트는 Cognition의 공식 워커 이미지로 샌드박스를 생성하고 devin worker를 샌드박스의 메인 명령으로 실행합니다. 클라이언트는 로컬 환경에서 DEVIN_OUTPOSTS_TOKEN을 읽은 다음, 샌드박스 요청에 그 값을 전달하여 워커의 환경 변수를 설정합니다. 워커의 출력은 샌드박스 로그로 기록됩니다. 워커가 오류로 종료되면 플랫폼은 재시작 한도에 도달할 때까지 컨테이너를 다시 시작합니다.
start_outpost_worker.py
Devin Cloud에서 outpost 생성에서 만든 outpost 이름을 지정하여 실행하세요.
Python에서 sandbox.wait()는 샌드박스가 실행 중이거나 이미 완료되면 반환됩니다. 이 시점에도 설치와 워커 인증이 아직 진행 중일 수 있으므로, 작업을 제출하기 전에 워커 상태를 확인하세요. 워커는 /workspace에서 시작됩니다. your-org/app에 대한 세션은 해당 저장소를 /workspace/repos/app 아래에 체크아웃합니다. 이 스크립트는 with 블록을 사용하지 않으므로, 스크립트가 종료된 후에도 샌드박스는 계속 실행됩니다.
max_lifetime_seconds는 나중에 연장할 수 없는 고정 한도입니다. 이 시간이 지나면 플랫폼이 샌드박스를 종료하며, 해당 worker를 사용하는 모든 세션의 실행이 중단됩니다. 이 스크립트는 스냅샷이나 persistent volume을 설정하지 않습니다. 컨테이너가 다시 시작되면 /workspace 아래의 파일을 포함한 쓰기 가능한 파일 시스템이 재설정됩니다. 결과는 Devin이 push하는 저장소처럼 샌드박스 외부에 보관하세요.

선택: 시크릿 스토어 사용

outpost 토큰 값 대신 Forge 시크릿 레퍼런스를 전달할 수 있습니다. 이 옵션을 사용하려면 Forge 인증과 서버리스 배치가 필요합니다. outpost 토큰을 Forge 팀의 Secret Manager에 저장한 다음, 해당 팀의 사용자 인증 정보를 export하세요.
이 사용자 인증 정보로 SDK를 명시적으로 설정하세요. FORGE_API_KEY와 FORGE_TEAM은 예시로 든 환경 변수이므로 SDK가 자동으로 감지하지 않습니다.
샌드박스를 생성하기 전에 AuthHeaders를 임포트하고 auth를 정의하세요.
Sandbox.run()에 auth=auth를 전달하세요. 이후의 Python 예시에서도 이 설정을 포함하고, 모든 Sandbox.from_id() 호출에도 auth=auth를 전달하세요.
[SECRET-NAME]을 팀 시크릿의 이름으로 바꾸세요.
cwsandbox에서 Secret을 임포트하고, environment_variables에서 DEVIN_OUTPOSTS_TOKEN을 제거한 다음, Sandbox.run()에 secrets=[Secret(store="wandb", name="[SECRET-NAME]", env_var="DEVIN_OUTPOSTS_TOKEN")]를 추가하세요.
이제 outpost 토큰을 로컬에서 export할 필요가 없습니다. 플랫폼이 레퍼런스를 확인하여 워커의 환경 변수를 설정합니다.

Devin 세션 실행 및 확인

테스트에는 이 워커만 연결되어 있고 대기 중이거나 실행 중인 다른 세션이 없는 outpost를 사용하세요. 이 테스트에 사용할 고유한 값(시크릿이 아닌 값)을 정하고, 다음 작업의 [PROOF-VALUE]를 해당 값으로 바꾸세요. Devin Cloud에서 새 세션을 시작하고 Configuration > Virtual environment에서 outpost를 선택하세요. Write the exact text로 시작하는 다음 작업을 제출하세요. 또는 Slack에서 다음 메시지 전체를 보내세요:
Devin이 완료를 보고하면 사용 중인 설정에 맞는 명령어로 직접 터미널에서 파일을 읽으세요. [SANDBOX-NAME]은 cws-agent 워크스페이스 이름으로, [SANDBOX-ID]는 SDK 스크립트가 출력한 ID로 바꾸세요:
출력이 지정한 고유 값과 일치하는지 확인하세요. 해당 샌드박스의 ID로 파일을 읽으면 세션이 쓴 파일이 직접 생성한 샌드박스의 것임을 확인할 수 있습니다. 절대 경로를 사용하므로 세션의 작업 디렉터리에 의존하지 않습니다. 세션이 계속 큐에 머물러 있으면 다음 섹션의 안내에 따라 워커 로그를 확인하세요. 이전 세션을 처리 중인 워커는 해당 세션이 종료되거나 일시 중단되기 전까지 다른 세션을 가져올 수 없습니다. 이전 세션이 더 이상 필요 없다면 Devin Cloud에서 종료하거나, 다른 워커를 시작하세요.

워커 확인 및 중지

cws-agent의 경우, 빠른 시작에 나온 대로 워커 터미널에 연결하세요. SDK를 사용하는 경우에는 상태와 최근 로그를 확인하세요. [SANDBOX-ID]를 출력된 ID로 바꾸세요.
최신 로그를 가져오려면 이 확인 작업을 다시 실행하세요. Python 클라이언트는 컨테이너별 상태, 종료 코드, 재시작 횟수도 함께 보고합니다. TypeScript 클라이언트는 이러한 세부 정보를 제공하지 않습니다. Outposts API가 워커의 토큰을 거부했다는 로그가 표시되면, outpost를 생성할 때 복사한 토큰을 사용했는지 확인하세요. 또한 해당 토큰이 outpost를 소유한 계정의 토큰인지 확인하세요. 서비스 사용자의 v3 API 토큰을 대신 사용하는 경우, 해당 역할에 Outposts write(account.outposts.write) 권한이 있어야 합니다. 사용자 인증 정보를 수정한 후 샌드박스를 다시 생성하세요. 워커가 종료와 재시작을 반복하는 중에도 샌드박스는 running 상태로 표시될 수 있습니다. 로그를 확인하고, Python 클라이언트를 사용하는 경우 앞의 예제에 나온 컨테이너별 세부 정보도 확인하세요. 인증에 계속 실패하는 워커는 대체 워커를 생성하기 전에 중지하세요. 뚜렷한 원인 없이 시작에 실패하면 샌드박스 ID와 로그를 보관해 두었다가 CoreWeave Support에 전달하세요. 워커가 더 이상 필요하지 않으면 샌드박스를 중지하세요. 서버리스 설정 방법은 시작하기를 참조하세요. 활성 Devin 세션이 종료되고 결과가 저장될 때까지 기다린 후, 설정에 맞는 명령을 사용해 compute를 중지하세요.
down은 중지하기 전에 워크스페이스의 스냅샷을 생성합니다. 캡처에 실패하면 보고된 오류와 cws-agent status [SANDBOX-NAME]을 확인하고, 문제를 해결한 후 다시 시도하세요. 저장되지 않은 변경 사항을 버려도 되는 경우 cws-agent down [SANDBOX-NAME] --no-snapshot을 사용하세요.
Devin 세션을 종료해도 이 워커의 샌드박스는 중지되지 않습니다. cws-agent 워크스페이스를 복원하려면 Devin Outposts guide를 참조하세요.

선택: 환경 사용자 지정하기

다음과 같은 방법으로 워커 환경을 사용자 지정할 수 있습니다.
  • 자체 이미지 사용. 공식 이미지에는 devin CLI 외에 포함된 것이 거의 없습니다. 이 이미지를 기반으로 필요한 도구 체인을 추가한 이미지를 구축한 다음, Python에서는 container_image로, TypeScript에서는 containerImage로 전달하세요. Devin을 실행하려면 git이 필요합니다. 화면 녹화에는 ffmpeg가 필요하며, 브라우저 및 컴퓨터 사용 도구에는 호환되는 브라우저 바이너리가 필요합니다. 공식 Ubuntu 이미지를 기반으로 하는 amd64 이미지라면 Google Chrome을 설치하세요. Ubuntu의 chromium 패키지는 snap 스텁이므로 컨테이너에서 작동하지 않습니다. 자세한 내용은 Devin의 컨테이너 설정을 참조하세요. 컴퓨터 사용 기능을 쓰려면 Xvfb 같은 그래픽 디스플레이가 실행 중이어야 하며, 워커에 DISPLAY도 설정되어 있어야 합니다. 워커는 표준 설치 위치에서 바이너리를 검색합니다. 바이너리를 찾지 못하면 DEVIN_CHROME_PATH를 해당 바이너리의 절대 경로로 설정하세요. 자세한 내용은 Devin Outposts 레퍼런스를 참조하세요.
  • GPU 설정. 사용 가능한 옵션은 샌드박스 GPU 설정을 참조하세요. 이 가이드의 워커 예시는 CPU 리소스만 사용합니다.
  • 워커 추가 실행. 워커 하나는 한 번에 하나의 세션만 처리합니다. 같은 outpost 이름으로 스크립트를 다시 실행하면 해당 큐에 워커를 하나 더 시작할 수 있습니다.
  • 세션마다 샌드박스 생성. 이 예시의 워커는 여러 세션에서 같은 샌드박스를 재사용합니다. 세션마다 새 샌드박스를 사용하려면 Devin의 오케스트레이션 가이드를 참조하세요.
마지막 수정일 2026년 10월 15일