[PR #188] [MERGED] feat(daytona): adding sandbox integration #190

Closed
opened 2026-02-16 06:17:24 -05:00 by yindo · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/langchain-ai/deepagentsjs/pull/188
Author: @christian-bromann
Created: 2/4/2026
Status: Merged
Merged: 2/5/2026
Merged by: @christian-bromann

Base: mainHead: cb/daytona


📝 Commits (10+)

📊 Changes

35 files changed (+8255 additions, -158 deletions)

View changed files

.changeset/modal-sandbox.md (+15 -0)
.changeset/tiny-dolls-move.md (+5 -0)
📝 .github/workflows/ci.yml (+1 -0)
.pr-description.md (+51 -0)
📝 examples/package.json (+2 -0)
examples/sandbox/daytona-sandbox.ts (+129 -0)
examples/sandbox/modal-sandbox.ts (+133 -0)
libs/providers/daytona/.npmignore (+22 -0)
libs/providers/daytona/LICENSE (+21 -0)
libs/providers/daytona/README.md (+354 -0)
libs/providers/daytona/package.json (+72 -0)
libs/providers/daytona/src/auth.test.ts (+122 -0)
libs/providers/daytona/src/auth.ts (+134 -0)
libs/providers/daytona/src/index.ts (+62 -0)
libs/providers/daytona/src/sandbox.int.test.ts (+325 -0)
libs/providers/daytona/src/sandbox.test.ts (+312 -0)
libs/providers/daytona/src/sandbox.ts (+776 -0)
libs/providers/daytona/src/types.ts (+248 -0)
libs/providers/daytona/tsconfig.json (+8 -0)
libs/providers/daytona/tsdown.config.ts (+27 -0)

...and 15 more files

📄 Description

Summary

  • Adds @langchain/daytona-sandbox package providing a Daytona Sandbox implementation of the SandboxBackendProtocol
  • Enables agents to execute commands, read/write files, and manage isolated cloud sandbox environments using Daytona's infrastructure
  • Follows the same pattern as the existing @langchain/deno-sandbox package

Features

DaytonaSandbox class extends BaseSandbox providing:

  • execute() - Run shell commands in isolated environment
  • uploadFiles() / downloadFiles() - File operations with automatic directory creation
  • start() / stop() / close() - Sandbox lifecycle management
  • getWorkDir() / getUserHomeDir() - Directory helpers
  • All inherited BaseSandbox methods (read, write, edit, ls, grep, glob)

Configuration options:

  • Multi-language support: TypeScript, JavaScript, Python
  • Custom Docker images with resource allocation (CPU, memory, disk)
  • Snapshot-based sandbox creation
  • Auto-stop intervals, custom labels, environment variables

Authentication:

  • DAYTONA_API_KEY environment variable
  • Explicit auth: { apiKey: '...' } option

Usage

import { DaytonaSandbox } from "@langchain/daytona-sandbox";
import { createDeepAgent } from "deepagents";

const sandbox = await DaytonaSandbox.create({
  language: "typescript",
  autoStopInterval: 15,
});

try {
  const agent = createDeepAgent({
    model: new ChatAnthropic({ model: "claude-sonnet-4-20250514" }),
    backend: sandbox,
  });
  // Use agent...
} finally {
  await sandbox.close();
}

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/langchain-ai/deepagentsjs/pull/188 **Author:** [@christian-bromann](https://github.com/christian-bromann) **Created:** 2/4/2026 **Status:** ✅ Merged **Merged:** 2/5/2026 **Merged by:** [@christian-bromann](https://github.com/christian-bromann) **Base:** `main` ← **Head:** `cb/daytona` --- ### 📝 Commits (10+) - [`f11a63c`](https://github.com/langchain-ai/deepagentsjs/commit/f11a63cebf6cad0c058de1f9a4e7b24912b6d5fb) feat: add support for Vercel sandbox - [`8c9a6fa`](https://github.com/langchain-ai/deepagentsjs/commit/8c9a6fac526d7011e7eb2bd91c104586c215008b) format - [`1c823c7`](https://github.com/langchain-ai/deepagentsjs/commit/1c823c703c5a9a9afa68285f803b10e855e5ce01) switch to deno - [`1a161d2`](https://github.com/langchain-ai/deepagentsjs/commit/1a161d22871ee0196b492f859637b028cbb29751) cr - [`d77f77c`](https://github.com/langchain-ai/deepagentsjs/commit/d77f77c2956f288be33c893318e5e6c2c8066225) format - [`013f2b0`](https://github.com/langchain-ai/deepagentsjs/commit/013f2b0522e0cd3b79ca2090998aad3973d3a6e1) rename - [`f3871d2`](https://github.com/langchain-ai/deepagentsjs/commit/f3871d2a306e13e6a723abbff2d512d530946c66) format - [`0a92c30`](https://github.com/langchain-ai/deepagentsjs/commit/0a92c30aa04fd919dd4aba0ed934d07d41cc0e73) auto bump peer dep - [`00f437a`](https://github.com/langchain-ai/deepagentsjs/commit/00f437a10a84bbbf887f304a6b2e9acc0030222d) format - [`fdaa56b`](https://github.com/langchain-ai/deepagentsjs/commit/fdaa56ba9b61822682d625fa013b6166400ce9e8) feat(daytona): adding sandbox integration ### 📊 Changes **35 files changed** (+8255 additions, -158 deletions) <details> <summary>View changed files</summary> ➕ `.changeset/modal-sandbox.md` (+15 -0) ➕ `.changeset/tiny-dolls-move.md` (+5 -0) 📝 `.github/workflows/ci.yml` (+1 -0) ➕ `.pr-description.md` (+51 -0) 📝 `examples/package.json` (+2 -0) ➕ `examples/sandbox/daytona-sandbox.ts` (+129 -0) ➕ `examples/sandbox/modal-sandbox.ts` (+133 -0) ➕ `libs/providers/daytona/.npmignore` (+22 -0) ➕ `libs/providers/daytona/LICENSE` (+21 -0) ➕ `libs/providers/daytona/README.md` (+354 -0) ➕ `libs/providers/daytona/package.json` (+72 -0) ➕ `libs/providers/daytona/src/auth.test.ts` (+122 -0) ➕ `libs/providers/daytona/src/auth.ts` (+134 -0) ➕ `libs/providers/daytona/src/index.ts` (+62 -0) ➕ `libs/providers/daytona/src/sandbox.int.test.ts` (+325 -0) ➕ `libs/providers/daytona/src/sandbox.test.ts` (+312 -0) ➕ `libs/providers/daytona/src/sandbox.ts` (+776 -0) ➕ `libs/providers/daytona/src/types.ts` (+248 -0) ➕ `libs/providers/daytona/tsconfig.json` (+8 -0) ➕ `libs/providers/daytona/tsdown.config.ts` (+27 -0) _...and 15 more files_ </details> ### 📄 Description ## Summary - Adds `@langchain/daytona-sandbox` package providing a Daytona Sandbox implementation of the `SandboxBackendProtocol` - Enables agents to execute commands, read/write files, and manage isolated cloud sandbox environments using Daytona's infrastructure - Follows the same pattern as the existing `@langchain/deno-sandbox` package ## Features **DaytonaSandbox class** extends `BaseSandbox` providing: - `execute()` - Run shell commands in isolated environment - `uploadFiles()` / `downloadFiles()` - File operations with automatic directory creation - `start()` / `stop()` / `close()` - Sandbox lifecycle management - `getWorkDir()` / `getUserHomeDir()` - Directory helpers - All inherited `BaseSandbox` methods (`read`, `write`, `edit`, `ls`, `grep`, `glob`) **Configuration options:** - Multi-language support: TypeScript, JavaScript, Python - Custom Docker images with resource allocation (CPU, memory, disk) - Snapshot-based sandbox creation - Auto-stop intervals, custom labels, environment variables **Authentication:** - `DAYTONA_API_KEY` environment variable - Explicit `auth: { apiKey: '...' }` option ## Usage ```typescript import { DaytonaSandbox } from "@langchain/daytona-sandbox"; import { createDeepAgent } from "deepagents"; const sandbox = await DaytonaSandbox.create({ language: "typescript", autoStopInterval: 15, }); try { const agent = createDeepAgent({ model: new ChatAnthropic({ model: "claude-sonnet-4-20250514" }), backend: sandbox, }); // Use agent... } finally { await sandbox.close(); } ``` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
yindo added the pull-request label 2026-02-16 06:17:24 -05:00
yindo closed this issue 2026-02-16 06:17:24 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langchain-ai/deepagentsjs#190