Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
"docs/agents/codex",
"docs/agents/crabbox",
"docs/agents/devin",
"docs/agents/devin-outposts",
"docs/agents/grok",
"docs/agents/deep-agents",
"docs/agents/open-swe",
Expand Down
128 changes: 128 additions & 0 deletions docs/agents/devin-outposts.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
title: "Devin Outposts"
description: "Run Devin sessions in isolated E2B sandboxes."
icon: "/images/icons/devin.svg"
---

The public `devin-outposts` template runs a dispatcher in E2B. The dispatcher
watches one Devin outpost and creates a dedicated `devin-outposts-worker`
sandbox for each session.

Create the dispatcher and connect to its terminal with the E2B CLI:

```bash
e2b sbx create devin-outposts
```

When the dispatcher is ready, the terminal prints its authenticated Outposts UI
URL. You can also launch it directly from the
[E2B dashboard](https://e2b.dev/dashboard/terminal?template=devin-outposts), or
from TypeScript:

```ts
import { Sandbox } from "e2b"

const sandbox = await Sandbox.create("devin-outposts", {
timeoutMs: 60 * 60_000,
lifecycle: { onTimeout: "pause", autoResume: true },
})

const { stdout } = await sandbox.commands.run(
'node /opt/devin-outposts/create-launch-url.mjs "$E2B_DOMAIN"',
{ envs: { E2B_DOMAIN: process.env.E2B_DOMAIN ?? "e2b.app" } },
)

console.log(stdout.trim())
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing e2b install instructions

Medium Severity

The TypeScript example imports e2b, but the page never tells readers to install that package (for example via npm install e2b), so copying the launch snippet fails on a clean machine.

Fix in Cursor Fix in Web

Triggered by learned rule: Code examples must not import packages missing from install instructions

Reviewed by Cursor Bugbot for commit 8ac0776. Configure here.


## Prerequisites

- an E2B API key
- a Devin Enterprise organization
- a Devin v3 service-user token beginning with `cog_`

Give the primary service user both **Use outpost machine** and **Manage
outposts**. Create it under **Settings → Devin API → Service users**, then copy
the token when Devin displays it. If you configure a separate worker token, it
only needs **Use outpost machine**.

See [Cognition's Outposts guide](https://docs.devin.ai/cloud/outposts/overview)
for the current permission and token flow.

## Set up the dispatcher

<Steps>
<Step title="Launch the template">
Run the SDK example or open the dashboard link above. Open the exact
setup URL printed by the sandbox. Its token works once and expires after 10
minutes. Treat the URL as a credential until it has been used: do not share
it or leave it in shared logs.
</Step>
<Step title="Connect Devin">
Enter the primary service-user token and choose **Check Devin account**.
Select the organization and enter its full browser URL, including
`/org/<organization-slug>`, if it was not detected.
</Step>
<Step title="Choose the outpost">
Select an existing outpost or create one. Keep `devin-outposts-worker` as
the worker template unless you have prepared a custom template or snapshot.
</Step>
<Step title="Connect E2B">
Enter the E2B API key that should create the worker sandboxes.
</Step>
<Step title="Start the dispatcher">
Choose **Save and start dispatcher**. Wait until its status shows that it is
listening before sending a task.
</Step>
</Steps>

## Run a session

1. Under **Tasks**, enter the task and choose **Review task in Devin**.
2. In Devin, open **Configuration → Virtual environment** and select the
configured outpost.
3. Send the task.
4. Return to **Tasks** in the dispatcher to follow the session. Use **View in
Devin** to open the original conversation.

The virtual environment must be selected before sending. A session sent to the
wrong environment cannot be moved; start a new session with the correct
outpost.

Each Devin session gets its own E2B worker sandbox and writable `/mnt/repos`
workspace. The dispatcher removes the worker after the session finishes.

## Lifecycle

Do not pause the dispatcher while it needs to accept sessions. Devin queue
traffic cannot wake it. With `lifecycle.autoResume` (JavaScript) /
`lifecycle.auto_resume` (Python) enabled, opening its E2B URL resumes it manually.

## Troubleshooting

<AccordionGroup>
<Accordion title="The outpost is missing in Devin">
Confirm that Devin is using the organization selected during setup and that
the primary service user has both required permissions.
</Accordion>
<Accordion title="The session is waiting for a machine">
Confirm that the dispatcher is listening and that the task was sent to the
same outpost.
</Accordion>
<Accordion title="The worker template is unavailable">
Confirm that the E2B API key can create the public
`devin-outposts-worker` template. A custom template must be visible to the
same E2B team as the key.
</Accordion>
<Accordion title="Inspect the dispatcher">
Open its terminal and run:

```bash
tail -200 /home/user/devin-supervisor.log
jq '{state, detail, activeCount, provisioningCount}' \
/home/user/.config/devin-outposts/worker-status.json
```
</Accordion>
</AccordionGroup>

See the [demo](https://share.descript.com/view/XNZQMQBGf9m) for a complete run.
2 changes: 2 additions & 0 deletions docs/agents/devin.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ icon: "/images/icons/devin.svg"

[Devin for Terminal](https://devin.ai/terminal) is Cognition's coding agent for working directly from a terminal. You can install it in an E2B sandbox and use the sandbox as an isolated workspace for agent tasks.

To run Devin cloud sessions in isolated E2B sandboxes, see [Devin Outposts](/docs/agents/devin-outposts).

## Installation

Use a PTY for install and login because Devin's setup is interactive. You can create a Devin account during sign up if you don't have one.
Expand Down
Loading