On this page

Deploying on MIOSA means turning a Sandbox into a stable production app/site/API backed by immutable versions, health checks, and a public URL returned by the API. Once published, the deployment URL stays stable - new publishes change which version it points at.

The deployment pipeline

Every publish travels the same path:

  1. Sandbox - the mutable environment where you (or an agent) write code.
  2. Source Snapshot - an immutable tarball of /workspace captured at publish time. The sandbox can keep changing; the snapshot is frozen.
  3. Build - MIOSA runs the configured build/packaging pipeline from the frozen source.
  4. Release - the immutable build output. Static: files/assets. Dynamic: a server app artifact with command, port, and health check.
  5. Deployment Version - the row in history. version_number increases monotonically. Every version is bootable forever.
  6. Runtime - for dynamic deployments, MIOSA starts a production runtime and health-checks it. Static releases skip this; MIOSA serves the files directly.
  7. Domain - the route. Managed (auto-TLS) or custom. Points at the active version. Rollback is re-pointing this route - no rebuild.

Static vs Dynamic

StaticDynamic
Source shapeHTML / JS / CSS / assets onlyServer-side code (Node, Python, Phoenix, Go, etc.)
Build outputFiles/assetsServer app artifact
Production runtimeStatic artifact serving - no per-app processDynamic production runtime
ScalingInstant (edge serves files)Scheduler manages desired instance count
Rollback speedSeconds (route re-point)Seconds (route re-point to older release)
CostLowerPer CPU/RAM/time
Best forLanding pages, SPAs, generated HTML, docsAPIs, SSR, WebSockets, background workers

Pass kind: "auto" (or the SDK equivalent) and MIOSA chooses the static or dynamic path from your publish inputs. Supplying a run command and port makes the deployment dynamic.

The deployment object

A Deployment is the stable product object - the thing the world thinks of as “the live app.” It has a name, a slug, an active version, and one or more domains pointing at it.


Project
  └── Deployment ("smile-dental")
        ├── active_version_id ──► Version 17 ──► Release sha:abc...
        ├── Version 16 (archived, still bootable)
        ├── Version 15 (archived, still bootable)
        ├── domains:
        │     ├── smile-dental.cliniciq.miosa.app (managed fallback)
        │     ├── smile-dental.apps.cliniciq.com  (tenant deployment domain)
        │     └── smiledental.com         (custom, verified)
        └── data:
              └── postgres:  DATABASE_URL=...

A Deployment URL is stable. New publishes change which version it points at, not the URL itself.

What gets versioned

ThingVersioned?
Source snapshotYes - sha256 of the tarball captured at publish time
Release artifactYes - sha256 of the static files or dynamic server artifact
Deployment VersionYes - version_number monotonically increases
Domain ↔ version mappingYes - change history retained
Runtime InstancesManaged by scheduler against desired count; not versioned
Data ServicesNot versioned - Postgres / Redis / buckets persist across deploys

Rollback works because every release is immutable and stays in storage. Re-point the deployment at version 14 and MIOSA serves that known-good version again.

Next

Was this helpful?