Platform features, fixes, and behavior changes. Follow the Atom feed for new entries.

App agents and local-first applications

New

Build and update an app with an agent

Start Kedge's built-in app agent with one prompt:

kedge agent "build a small status page"

The agent builds and publishes a working app, returns its URL, and stays open for follow-up turns. kedge agent --app myapp loads an existing app's current source and can edit, deploy, operate, or send authenticated requests to the live app. Publishing reconciles concurrent source changes before retrying.

Keep HTML app writes local first

Managed HTML app submissions now queue in the browser and replay in order when the app is reachable. Creates render immediately as pending rows and use stable client-generated IDs, so replay does not duplicate a record. Previously visited pages remain available for offline reload with their pending writes.

Improved

Start previews with production data

A branch preview's first deploy now branches the production app's managed database and files. The preview remains isolated after that point, and later deploys retain its own changes.

Clearer agent and restore behavior

Agent one-shots keep the canonical app URL on standard output while concise progress, final replies, and failures use standard error. Existing-app turns can finish after a live operation without an unrelated source deploy. The first request after a cold restore no longer waits on a proxy network-discovery delay.

Coding agents in persistent workspaces

New

Run coding agents in a workspace

Coding-agent workspaces are available from the terminal and /agents. Start a task, detach while it runs, and reopen it later from the account-wide session list. Named workspaces can be connected to an existing app and controlled over SSH.

Each workspace keeps its complete writable filesystem, installed tools, source trees, and build caches across restarts and host moves. Top-level tasks use separate project directories inside the workspace.

Connect Claude or Codex once

Connect a Claude or Codex subscription from the workspace page or the first SSH session. The connection remains available to later terminal, browser, and paired-device sessions in that workspace. Kedge's hosted model is also available, with model usage recorded separately in the billing ledger.

Suspend idle machines

idle-suspend pauses an inactive persistent machine without removing its address, volume, or host placement. The next packet wakes it. A suspended machine bills no CPU or memory; its storage remains durable and billable.

Improved

Deploy public OCI images consistently

Direct image publishes, API creates, and Compose services now import ordinary public OCI images through the same conversion path. Unchanged images reuse the prior result, and a node without a local builder delegates the import to a capable peer.

Workspace recovery

Workspaces now recover more reliably after host moves, concurrent relaunches, read-only volume failures, cold provider startup, and browser reconnects.

Held sandboxes and private app access

New

Reuse a sandbox across commands

Open a sandbox with POST /api/sandboxes, then address it by ID to run several commands in the same VM. Each command extends its idle deadline, and ttl_seconds can keep it open for up to an hour. Listing and execution work through any fleet node.

POST /api/eval and POST /api/sandbox/exec remain the one-command forms.

Protect an app by recipient

App authentication can admit exact email, Google, or GitHub recipients. A new email recipient receives a single-use invitation link. Removing the recipient revokes outstanding links and existing app sessions.

Open an app shell directly

An app owner can open its shell with standard SSH username syntax:

ssh myapp@kedge.run

Improved

Persistent-volume durability

Volume writes now enter a disk-backed local journal, so a guest flush does not wait for object storage. Stop, migration, and fork operations wait for an explicit remote durability barrier before releasing the source. Same-host restarts replay accepted writes, and kedge volumes status reports pending or degraded publication.

Faster first sandbox commands

Preloaded runtime pools now start the interpreter during pool preparation. In local Node.js tests, median time to first command fell from 13.0 ms to 8.8 ms, and p95 fell from 31 ms to 12.7 ms.

Kedge public preview

New

Deploy from SSH, Git, or an image

Kedge's public preview is live across eleven regions. Send Markdown, static files, source code, a Dockerfile, a Compose app, or a public OCI image to get a public HTTPS URL. Each app runs in a hardware-isolated VM and includes a global CDN.

State without provisioning

Every app has a replicated SQLite database at /shared.db and a shared file tree at /shared/. Reads stay local while writes converge across regions. Persistent volumes provide local disk for software such as Postgres and Redis.

Sandboxes and scale to zero

Services scale to demand and back to zero from initialized VM snapshots. Disposable sandboxes run Bash, Deno, Node.js, Python, or Ruby without deploying an app.

Read the launch announcement.