The internal tool that stops rotting
The approval desk is a versioned app, not a fork of a dashboard. v14 is live; v13 is one click away; the diff between them is inspectable.
App Engine stores an app’s real source tree, builds it with Vite in the cloud, freezes every publish as an immutable version, and serves the bundle to any host surface. Not widgets — applications.
Every app is a real React project — src/main.jsx, JSX components, JSON-schema contracts, a manifest. App Engine stores the tree, runs the Vite build server-side, and produces an ESM bundle with runtime dependencies externalized: React, MUI and the SDKs are injected by the host page, not shipped in every bundle.
Publishing freezes a version: manifest, routes, contracts and source snapshot, immutable once built. Rollback is pointing back to a previous version — not a rebuild, not a prayer. The active pointer flip is atomic.
Apps declare contracts — input and output JSON Schemas — which makes them composable: a workflow can launch an app, hand it a payload, and receive validated output when the human finishes. Launch modes cover launcher, fullscreen, embedded, task and workflow surfaces.
{
"name": "approval-desk",
"kind": "hitl",
"entry_route": "/",
"supported_launch_modes": [
"launcher", "embedded", "task", "workflow"
],
"contracts": {
"input": "contracts/input.schema.json",
"output": "contracts/output.schema.json"
}
} The approval desk is a versioned app, not a fork of a dashboard. v14 is live; v13 is one click away; the diff between them is inspectable.
The same app serves embedded in a portal, launched from a task, and invoked by a workflow — because contracts, not copy-paste, define its edges.
The new version misbehaves in production. Point back to the previous version. Users reload. Done.