npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@daytona/n8n-nodes-daytona

v0.1.1

Published

n8n community node for Daytona — manage sandboxes/snapshots/volumes, execute code and commands, drive Git pipelines, and manage the sandbox filesystem inside Daytona from your workflows.

Downloads

270

Readme

@daytona/n8n-nodes-daytona

The official Daytona community node for n8n.

Overview

Daytona provides secure, elastic sandbox infrastructure for AI agents. Each sandbox is a complete, isolated environment that is fully programmable, spun up on demand, and built for autonomous use without human intervention.

Using n8n, you can integrate Daytona into any automated workflow: create sandboxes from snapshots or custom Docker images, manage the full sandbox lifecycle, execute code and shell commands, expose running services via preview URLs, drive a complete Git pipeline (clone, status, add, commit, push, pull, checkout), and manage the sandbox filesystem (upload, download, list, move, delete, folder creation) — all as composable steps alongside thousands of other n8n nodes.

Contents

Installation

Once published, install from inside n8n:

  1. Go to Settings → Community Nodes.
  2. Click Install a community node.
  3. Enter @daytona/n8n-nodes-daytona and click Install.
  4. The Daytona node appears in the node search panel after refresh.

For local development against an unpublished version, see Development.

Credentials

Create an API key at app.daytona.io/dashboard/keys, then add a Daytona API credential in n8n.

| Field | Required | Description | |---|---|---| | API Key | Yes | Bearer token from the Daytona dashboard. Stored encrypted by n8n. | | Base URL | No (default https://app.daytona.io/api) | Override only when targeting a self-hosted Daytona instance. | | Organization ID | No | Required when authenticating with a JWT token. Always safe to set with an API key — Daytona accepts the header on every request. Sent as X-Daytona-Organization-ID. |

The credential is verified against GET /api-keys/current when you save — n8n reports success or failure inline.

Operations

| Resource | Operation | Description | |---|---|---| | Sandbox | Create | Create a sandbox. Set Snapshot (pre-built template ID/name) or Image (Docker image reference like python:3.11). Snapshot takes precedence if both are set; if neither is set, Daytona's organization default snapshot is used. Optional name, ephemeral flag, and advanced options (CPU/memory/disk, region, env vars, labels, network policy, auto-stop/archive/delete intervals). Optional poll-until-started. | | | Get | Fetch a single sandbox by ID. | | | Get Many | List sandboxes (paginated when Return All is checked). | | | Delete | Permanently delete a sandbox. | | | Start | Start a stopped sandbox. Optional poll-until-started. | | | Stop | Stop a running sandbox. Optional poll-until-stopped. | | | Get Preview URL | Generate a public URL for a port exposed inside a sandbox. Signed (default, browser-friendly, token in URL) or Standard (token returned separately, sent via x-daytona-preview-token header). | | Code | Run Code | Execute Python, JavaScript, or TypeScript inside a sandbox. With Use Ephemeral Sandbox checked (default), creates a temporary sandbox just for this execution and auto-deletes afterward. | | | Run Command | Execute a shell command inside a sandbox. Same ephemeral-or-existing modes as Run Code. Supports working directory and environment variables. | | File | Upload | Upload an n8n binary field to a sandbox path. Multipart with content-type preservation. | | | Download | Read a file from a sandbox path and emit it as binary output for downstream nodes. | | | List | List entries in a directory. Returns structured metadata (name, isDir, size, mode, modTime, owner, group, permissions) plus a count summary. | | | Create Folder | Create a directory with Unix-style octal permissions (e.g. 0755). | | | Move | Move or rename a file/directory. Atomic — handles both renames and cross-directory moves. | | | Delete | Delete a file or directory. Set Recursive to remove non-empty folders. | | Git | Clone | Clone a Git repository into a sandbox path. Supports branch, commit ID pinning, and HTTPS basic auth for private repositories. | | | Status | Return working tree status: current branch, ahead/behind counts vs the tracked remote, and per-file staging/worktree changes. | | | Add | Stage one or more files for the next commit. | | | Commit | Commit staged changes with required author/email/message. Optional Allow Empty Commit for re-triggering CI when nothing changed. | | | Push | Push local commits to the remote. Optional HTTPS basic auth for private remotes. | | | Pull | Fetch and merge updates from the remote tracking branch. Optional HTTPS basic auth for private remotes. | | | Checkout | Check out a branch (existing local or remote-tracking) or a specific commit SHA. | | Snapshot | Create | Create a snapshot from a Docker image with optional resource specs (CPU/memory/disk) and entrypoint. | | | Get | Fetch a single snapshot by ID or name. | | | Get Many | List snapshots with optional name filter, sort (by createdAt, lastUsedAt, name, state), and order. | | | Delete | Permanently delete a snapshot. | | | Activate | Mark a snapshot as active so it becomes usable for sandbox creation. | | | Deactivate | Mark a snapshot as inactive. | | Volume | Create | Create a persistent volume that can be mounted into sandboxes. | | | Get | Fetch a single volume by ID or name. | | | Get Many | List volumes; optionally include soft-deleted ones. | | | Delete | Delete a volume. |

Operation behavior notes

  • Run Code / Run Command output: result contains stdout and stderr combined. artifacts carries any extra metadata Daytona returns (e.g. matplotlib charts for Python). Branch on $json.exitCode for success/failure — non-zero exit codes are returned as data, not thrown as errors.
  • Ephemeral mode creates a sandbox with autoDeleteInterval: 0 so it auto-deletes as soon as it stops. Cleanup also runs in a try/finally so the sandbox is deleted even if the operation throws.
  • Preview URL Signed flavor embeds the auth token directly in the URL — no need for downstream nodes to add headers. The Standard flavor returns { url, token } separately for callers that prefer header-based auth.
  • Toolbox URL caching — Daytona returns a per-sandbox toolboxProxyUrl from GET /sandbox/{id} that all toolbox operations (code/command/file/git) use to route requests. Within a single node execution this URL is fetched once per sandbox and reused for subsequent toolbox operations. The cache is invalidated on Start, Stop, and Delete so that subsequent calls re-fetch the URL and reflect any state change.

Snapshot picker on Sandbox.Create

The Snapshot field on Sandbox.Create is a dropdown populated dynamically from your Daytona organization. Pick from the list, leave at (Use Daytona Default), or switch to expression mode to pass a dynamic value.

AI Agent integration

This node is marked usableAsTool: true and appears in n8n's AI Agent tool picker. Each operation's description and action strings are exposed to the agent's LLM as tool metadata.

Examples

Three importable example workflows live in docs/examples/:

  1. run-python-ephemeral.json — AI agent runs ad-hoc Python in a one-shot ephemeral sandbox. The simplest possible code-execution workflow.
  2. clone-build-download.json — Persistent sandbox: clone a Git repo, run a build command, download the build artifact back to n8n as binary. Good template for CI-style flows.
  3. web-app-with-preview.json — Spin up a long-lived sandbox, upload a server script, run it on port 3000, return a signed preview URL. Demonstrates web-service exposure for sharing demos.

To use them: in n8n, click Workflows → Import from File and select the JSON. You'll need to configure the Daytona credential after import.

Compatibility

  • n8n version: 1.x and later. Tested against the latest stable n8n at the time of release.
  • Node.js: 20.x and later (matches n8n's runtime requirements).
  • Daytona API: v1 (current stable as of 2026-05). Self-hosted Daytona instances supported via the Base URL credential field.

Development

git clone https://github.com/daytona/n8n-nodes-daytona.git
cd n8n-nodes-daytona
npm install
npm run dev          # boots n8n on http://localhost:5678 with hot reload

The dev server symlinks the node into ~/.n8n-node-cli/.n8n/custom/. First run downloads n8n and takes 1–2 minutes; subsequent runs are fast.

Tests

DAYTONA_API_KEY=… npm test

Or set values in .env.local (gitignored). Set DAYTONA_TEST_INCLUDE_EPHEMERAL=1 to also run ephemeral-mode tests (creates extra real sandboxes).

The integration suite covers the core operations across all six resources end-to-end against the real Daytona API in ~20–30 seconds.

Lint + build

npm run lint
npm run build

The lint config is locked by n8n.strict: true for n8n Cloud compatibility — don't modify eslint.config.mjs.

Resources

License

MIT © Daytona Platforms Inc.