Skip to main content

Dynamic Apps

Deploy user-generated applications in isolated agentOS VMs with SQLite, workflows, multiplayer, and static sites out of the box.

Dynamic Apps runs user-generated HTTP applications inside your own Node.js server. Each app runs in an isolated agentOS VM and can add durable SQLite state, workflows, realtime multiplayer, and static sites.

Dynamic Apps is in preview and its API is subject to change.

Architecture

Dynamic Apps is a library, not a hosted app deployment platform. You own the Hono server, its authentication, and the URL on which applications are mounted.

Requests reach your Hono server, where appsRouter executes them in a cached agentOS VM holding the app’s active release. Warm requests never touch storage or a Rivet actor.

OSRequestAgent · Browser · APIYour Hono serverappsRouterauth · routeagentOS VMUser’s appserves the response

Deployment is separate from serving. deployApp() builds the files in a sandboxed agentOS build VM and publishes an immutable release. The default @rivet-dev/dynamic-apps package stores releases in a per-app Rivet actor; @rivet-dev/dynamic-apps-core lets you supply another store.

An app may also export a RivetKit registry. Those app-defined actors use normal Rivet routing for durable state, actions, events, and connections, while the same app’s ordinary HTTP handler still runs through the agentOS VM.

agentOS provides the filesystem, process, environment, and network permission boundary for direct requests. App-defined actor workers share the host process, so run one trust domain per container for mutually untrusted tenants.