Eden deploys an existing Vercel Eve project to your own Cloudflare account through one CLI.
Eden installs the project's pinned pnpm lockfile, runs its project-local Eve executable, packages the real Node/Nitro server into a Cloudflare Container, and publishes a generic Worker in front of it. Eve remains the application and workflow authority; Deploy never rewrites the Eve project or silently replaces its providers and services.
Use npm:
npm install --global @moinulmoin/eden@0.7.0Or pnpm:
pnpm add --global @moinulmoin/eden@0.7.0Or Bun:
bun add --global @moinulmoin/eden@0.7.0Confirm the installation:
eden --helpUsers install only @moinulmoin/eden; its companion packages are resolved
automatically. Bun is supported as an installer only. Node >=24.17.0 remains
the Eden runtime, so do not force the CLI through bunx --bun.
-
macOS or Linux
-
Node
>=24.17.0 -
a Cloudflare account on the Workers Paid plan (required for Containers)
-
Wrangler authentication:
npx wrangler@4.147.0 login
-
Docker or OrbStack with Linux/amd64 container support
-
an existing Eve project with an exact
packageManager: "pnpm@..."entry -
the matching root
pnpm-lock.yaml -
just-bashas a production dependency (pnpm add just-bash). Eve's default sandbox needs it inside Eden's builder, andeve initdoes not add it. -
the providers, credentials, databases, Workflow World, and external services already required by the Eve project
Eden Deploy supports pinned pnpm Eve projects in this release. Bun project lockfiles and native Windows are not currently supported.
From inside the Eve project:
npx @moinulmoin/eden deployWith no flags, deploy uses the current directory, the preview environment,
and a target name derived deterministically from the project's package.json
name. Deploy performs all required checks inline. A separate preflight is
optional.
Explicit selectors still work, and --name is required for --env production and destroy:
eden deploy \
--project ./my-eve-app \
--env preview \
--name my-eve-previewA successful deployment prints progress lines followed by a summary with the
target, the Eve version, and the public workers.dev URL on its own line. The
authored Eve directory is unchanged. All three commands accept --json for
the machine-readable result object.
If the project needs runtime values, provide an explicit environment file outside source control:
eden deploy \
--project ./my-eve-app \
--env preview \
--name my-eve-preview \
--env-file ~/.config/my-eve-app/preview.envEden passes values through its protected deployment path. Values are not placed in command arguments, image layers, generated artifacts, or normal logs.
Run the optional read-only diagnostic when troubleshooting:
eden preflight \
--project ./my-eve-app \
--env preview \
--name my-eve-previewRemove the exact deployment when finished:
eden destroy --name my-eve-previewDestroy always requires an explicit --name. It also requires Eden's
immutable ownership record, verifies the current remote identity, and never
broadens cleanup to similarly named resources.
The Eve project remains responsible for its:
- model providers and credentials
- databases, queues, and external APIs
- channels, schedules, authentication, and authorization
- sandbox and Workflow World
- Container disk survives sleep (Eden snapshots the filesystem and restores it on wake), and updates carry Eve's sandbox sessions — every conversation's files — across the image change through the Durable Object's storage (capped at 1 GiB compressed). Local Workflow World state is not durable across an update, and Eden warns about it. Durable state takes three steps with the Postgres World (any direct, unpooled Postgres); see docs/deploy.md.
- Schedules with standard 5-field cron fire while the Container sleeps (a Cloudflare Cron Trigger wakes it); others only run while it is awake. See docs/deploy.md.
- One logical Container instance (
standard-1: 1/2 vCPU, 4 GiB); no horizontal scaling or custom domains in this release. - The agent's sandbox is
just-bash, a simulated shell — not a real Linux VM like Vercel Sandbox. Files,grep/sed/jq/sqlite3, andcurlwork;python,git,npm, and other real programs do not, and the sandbox has unrestricted internet access. - A project that picks its own sandbox in
agent/sandbox.ts(Docker, microsandbox, or Vercel Sandbox) or addsagent/sandbox/Dockerfileis not supported yet: the first three fail at build, and the Dockerfile silently falls back tojust-bash.
Things that differ from Vercel, and what Eden does about each:
- Container disk is wiped when a container stops. Eden snapshots the disk before the container sleeps and restores it on wake. Cloudflare deletes a snapshot after 30 days without a wake.
- Cloudflare stops an idle container within 6 hours. Eden puts it to sleep
after 1 hour without requests (
EDEN_EVE_CONTAINER_SLEEP_AFTER, up to345m) so the snapshot always happens first. - An update starts a new container from a new image. Eden copies every conversation's sandbox files into it before it serves requests.
- Eve's
just-bashsandbox refuses to resume a conversation after a skill change (eve#4440). Eden applies a small temporary fix at build time, only for Eve versions it recognizes, until Eve ships its own. - Eve prepares its sandbox at build time, on the machine that builds. A
real Linux sandbox (microsandbox or Docker) needs KVM or a Docker daemon
there; Eden's builder has neither, so agents get
just-bash. microsandbox does run inside Cloudflare's container, but preparing it there adds about 7 minutes to every deploy and update, so Eden does not use it yet. - Waking a sleeping agent takes about 10–15 seconds, mostly Eve's server starting up. The container itself starts in about a second.
| Command | Purpose |
|---|---|
eden preflight |
Inspect an Eve candidate without remote mutation |
eden deploy |
Deploy an Eve project to one exact target, or update a target Eden owns in place (state is kept) |
eden destroy |
Remove one exact Eden-owned Eve deployment |
Run eden <command> --help for command-specific options.
The repository is a pnpm workspace with TypeScript project references. It works without Turbo or Turborepo.
corepack enable
pnpm install --frozen-lockfile
pnpm run build
pnpm run typecheck
pnpm run lint
pnpm run testAfter the build, invoke the source-checkout CLI with:
node packages/cli/dist/index.js --helpThe landing page at eden.ideaplexa.com lives in site/ (Astro). Run it with
pnpm --filter @moinulmoin/eden-site dev.
- Documentation index: find every guide
- Installation: Node, npm/pnpm/Bun, Cloudflare, containers, updates, uninstallation, and PATH problems
- Eden Deploy: complete existing-Eve preview deployment, verification, exact cleanup, durability, and current limits
- Validation: maintainer runbook for the Eve compatibility gate and deployed cleanup checks
Apache-2.0. See LICENSE and NOTICE for the
Cloudflare Containers attribution.
