> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# E2B plugin

> Run isolated sandboxes and manage E2B sandbox, template, volume, secret, filesystem, process, and event APIs from Corsair.

Use **E2B** through Corsair: one client, typed API calls.

Platform operations use the project API key in the X-API-Key header. Sandbox envd and unary filesystem/process operations target the shared sandbox host and require e2bSandboxId, e2bSandboxPort (49983 for envd), and an e2bAccessToken where the official OpenAPI security scheme requires it. envd.health is keyless. The documented file upload/download routes are not included because they require raw file bodies or binary responses.

Four cursor-paginated collection-list operations return `{ items, nextToken? }`; pass the returned token as `query.nextToken` to fetch the next page. `templates.get` returns its build cursor beside the template data. Sandbox listing also returns `totalRunning` when E2B supplies it. Secret values are write-only and are redacted from errors and never included in event logs.

**What you get:**

* 62 typed API operations

## Setup

**1. Install**

```bash npm theme={null}
npm install corsair @corsair-dev/e2b better-sqlite3
npm install --save-dev @types/better-sqlite3
```

```bash yarn theme={null}
yarn add corsair @corsair-dev/e2b better-sqlite3
yarn add --dev @types/better-sqlite3
```

```bash pnpm theme={null}
pnpm install corsair @corsair-dev/e2b better-sqlite3
pnpm install --save-dev @types/better-sqlite3
```

```bash bun theme={null}
bun add corsair @corsair-dev/e2b better-sqlite3
bun add --dev @types/better-sqlite3
```

**2. Add the plugin**

```ts corsair.ts theme={null}
import Database from 'better-sqlite3';
import { createCorsair } from 'corsair';
import { e2b } from '@corsair-dev/e2b';

export const corsair = createCorsair({
	plugins: [
		e2b(),
	],
	database: new Database('corsair.db'),
	kek: process.env.CORSAIR_KEK!,
	multiTenancy: true,
	hub: {
		projectApiKey: process.env.CORSAIR_API_KEY!,
		signingSecret: process.env.CORSAIR_SIGNING_SECRET!,
	},
});
```

With `multiTenancy: true`, scope calls with `corsair.withTenant(id)`. See [Quick start](https://docs.corsair.dev/quick-start.md) for KEK + Hub keys, and [Multi-tenancy](https://docs.corsair.dev/concepts/multi-tenancy.md) for account isolation.

**3. Choose authentication**

> [tab] API Key (Recommended)
>
> Store the E2B API key before the first call: `pnpm corsair setup --plugin=e2b --tenant=acme api_key=<your-key>` (leave out `--tenant` without `multiTenancy`), or pass it as `key` in the plugin options. With Hub, each tenant enters their own key on the connect page. See [API key auth](https://docs.corsair.dev/concepts/api-key).
>
> ```ts theme={null}
> e2b()
> ```
>
> More: [API Key](https://docs.corsair.dev/concepts/api-key)

**4. Connect a tenant**

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see [Connect / OAuth](https://docs.corsair.dev/management/connect).

```ts theme={null}
const { connectUrl } = await corsair.manage.connect.createLink({
	plugin: 'e2b',
	tenantId: 'acme',
});
// redirect the user's browser to connectUrl
```

## Example API calls

**Read the environment of a sandbox**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.e2b.api.envd.getEnvironmentVariables({
	headers: { e2bSandboxId: 'sandbox-test', e2bSandboxPort: 49983, e2bAccessToken: 'sandbox-access-token' },
});
```

**Create a directory inside a sandbox**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.e2b.api.filesystem.createDir({
	headers: { e2bSandboxId: 'sandbox-test', e2bSandboxPort: 49983, e2bAccessToken: 'sandbox-access-token' },
	body: { path: '/tmp/corsair-e2b' },
});
```

See the full list on the [API](https://docs.corsair.dev/plugins/e2b/api.md) page.

## What's next

> [card] [API reference](https://docs.corsair.dev/plugins/e2b/api.md)
>
> Every `e2b.api.*` operation with input and output types.

> [card] [Connect / OAuth](https://docs.corsair.dev/management/connect)
>
> createLink, Hub delivery, and tenant connect flows.

> [card] [Use with agents](https://docs.corsair.dev/mcp-adapters/mcp-adapters)
>
> Expose this plugin's operations as MCP tools.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.