Amp 2026.10.22
Amp 2026.10.22 was released on .
Summary
Run Amp orbs on your own infrastructure. Run amp orb provider, point it at your dispatch script, and Amp handles the rest. Docker, E2B, Modal and more, ready to go. Curious what your compute can do?
Release Context
- This was the 88th Amp release of 2026 tracked by Havoptic.
- It shipped 3 days after Amp 2026.10.19 (October 19, 2026).
Shipped around the same time
Within 3 days of this release, other AI coding tools also shipped:
- Antigravity CLI v1.4.5 (October 22, 2026)
- Claude Code v2.1.308 (October 22, 2026)
- Zed v1.25.2 (October 21, 2026)
- Claude Code v2.1.307 (October 21, 2026)
- GitHub Copilot CLI v1.0.102 (October 21, 2026)
Compare Amp
- Amp vs Claude Code
- Amp vs OpenAI Codex CLI
- Amp vs Cursor
- Amp vs Gemini CLI
- Amp vs Kiro CLI
- Amp vs GitHub Copilot CLI
- Amp vs Devin Desktop
- Amp vs Antigravity CLI
- Amp vs Grok Build
- Amp vs Cline
- Amp vs OpenCode
- Amp vs Zed
- Amp vs Factory Droid
- Amp vs Devin
- Amp vs Lovable
- Amp vs GitHub Copilot in VS Code
- Amp vs Replit Agent
- Amp vs Bolt
- Amp vs v0
Release Notes
Self-Hosted Orbs You can now self-host orbs. You provide the compute and Amp turns it into orbs. If you have compute that can - quickly start new machines - put them to sleep and resume them equally fast - keep them around for a long time - scale them to zero, so no one has to worry about having a lot of them sleeping then you are now able to replicate the orb experience within your own infrastructure. How It Works You run amp orb provider inside your infrastructure. The orb provider then reaches out to Amp and waits for requests to spawn, pause, or delete orbs. Like this: How you satisfy those requests is up to you, because amp orb provider will dispatch the requests for orb operations (spawn to create or resume orbs, pause, and delete) to a program that you provide, like so: $ amp orb provider ./dispatch.sh In that program, you can do whatever works best for your infrastructure. Here are some illustrative examples: Docker E2B K8s Apple containers Modal Vercel Daytona exe.dev !/usr/bin/env bash dispatch.sh set -euo pipefail case "$ORBOPERATION" in spawn) docker start "$ORBID" 2>/dev/null || docker run --platform linux/amd64 -d --name "$ORBID" \ "$ORBIMAGE" sleep infinity docker exec -d --env ORBTOKEN "$ORBID" amp orb bootstrap ;; pause) docker stop "$ORBID" ;; delete) docker rm -f "$ORBID" ;; esac Install the E2B CLI and the e2b package, set E2BAPIKEY, and build a template: echo 'FROM us-central1-docker.pkg.dev/amp-prod-0/amp-orb/amp-orb:latest' \ > e2b.Dockerfile e2b template create amp-orbs --dockerfile e2b.Dockerfile \ --cpu-count 4 --memory-mb 8192 --ready-cmd true export E2BTEMPLATE=amp-orbs !/usr/bin/env node // dispatch.mjs import { Sandbox } from 'e2b' const { ORBOPERATION, ORBID, ORBTOKEN, AMPURL, E2BTEMPLATE, } = process.env const metadata = { orbId: ORBID } const [existing] = await Sandbox.list({ query: { metadata, state: ['running', 'paused'] }, }).nextItems() if (ORBOPERATION === 'spawn') { const timeoutMs = 60 60 1000 const sandbox = existing ? await Sandbox.connect(existing.sandboxId, { timeoutMs }) : await Sandbox.create(E2BTEMPLATE, { metadata, timeoutMs, lifecycle: { onTimeout: 'pause' }, }) const envs = { ORBTOKEN } if (AMPURL) envs.AMPURL = AMPURL const bootstrap = await sandbox.commands.run('amp orb bootstrap', { user: 'user', envs, background: true, timeoutMs: 0, }) await bootstrap.disconnect() } else if (ORBOPERATION === 'pause' && existing) { await Sandbox.pause(existing.sandboxId) } else if (ORBOPERATION === 'delete' && existing) { await Sandbox.kill(existing.sandboxId) } !/usr/bin/env bash dispatch.sh set -euo pipefail export PATH="/usr/local/bin:/opt/homebrew/bin:$PATH" "$ORBIMAGE" is the Amp orb image. ids=$(container list --all --quiet) exists() { grep -Fxq "$ORBID" <<<"$ids"; } case "$ORBOPERATION" in spawn) if exists; then container start "$ORBID" else container run --detach --init --rosetta \ --platform linux/amd64 --cpus 4 --memory 8G \ --name "$ORBID" "$ORBIMAGE" sleep infinity fi A bare --env NAME copies the value from the host. container exec --detach --env ORBTOKEN --env AMPURL \ "$ORBID" amp orb bootstrap ;; pause) if exists; then container stop "$ORBID" fi ;; delete) if exists; then container delete --force "$ORBID" fi ;; ) exit 1 ;; esac !/usr/bin/env python3 dispatch.py import os import modal Needs pip install modal plus MODALTOKENID and MODALTOKENSECRET. APP = "amp-orbs" app = modal.App.lookup(APP, createifmissing=True) snapshots = modal.Dict.fromname("amp-orb-snapshots", createifmissing=True) orbid = os.environ["ORBID"] try: sandbox = modal.Sandbox.fromname(APP, orbid) except modal.exception.NotFoundError: sandbox = None match os.environ["ORBOPERATION"]: case "spawn": if sandbox is None: Modal has no pause, so resume from the last snapshot. snapshot = snapshots.get(orbid) if snapshot: image = modal.Image.fromid(snapshot) else: image = modal.Image.fromregistry(os.environ["ORBIMAGE"]) sandbox = modal.Sandbox.create( "sleep", "infinity", app=app, name=orbid, image=image, cpu=4, memory=(16384, 16384), timeout=24 60 60, ) Modal execs run as root; point bootstrap at the image user's home. bootstrap = "setsid amp orb bootstrap </dev/null >/dev/null 2>&1 &" sandbox.exec( "bash", "-c", bootstrap, env={ "ORBTOKEN": os.environ["ORBTOKEN"], "AMPURL": os.environ.get("AMPURL"), "HOME": "/home/user", "USER": "user", }, ).wait() case "pause": if sandbox: imageid = sandbox.snapshotfilesystem(timeout=120).objectid snapshots[orbid] = imageid sandbox.terminate() case "delete": if sandbox: sandbox.terminate() snapshots.pop(orbid, None) !/usr/bin/env node // dispatch.mjs import { APIError, Sandbox, Snapshot } from '@vercel/sandbox' const { ORBOPERATION, ORBID, ORBIMAGE, ORBTOKEN, AMPURL } = process.env const credentials = { token: process.env.VERCELTOKEN, teamId: process.env.VERCELTEAMID, projectId: process.env.VERCELPROJECTID, } if (ORBOPERATION === 'spawn') { const sandbox = await Sandbox.getOrCreate({ ...credentials, name: ORBID, // Copy Amp's image to VCR, then set ORBIMAGE to its VCR URL. image: ORBIMAGE, resources: { vcpus: 4 }, timeout: 60 60 1000, persistent: true, snapshotExpiration: 0, keepLastSnapshots: { count: 1, expiration: 0, deleteEvicted: true }, }) const setup = await sandbox.runCommand({ cmd: '/bin/bash', args: ['-c', 'hostname localhost && mkdir -p /vercel/sandbox'], sudo: true, }) if (setup.exitCode !=...
Other Recent Amp Releases
- 2026.10.16 (October 16, 2026)
- 2026.10.13 (October 13, 2026)
- 2026.10.12 (October 12, 2026)
- 2026.10.12.2 (October 12, 2026)
- 2026.10.10 (October 10, 2026)