mithran.yaml reference¶
mithran.yaml lives at your repo root and describes the app. map onboard writes a starter; this is the full field list.
apiVersion: map.mithran/v1
kind: MithranApp
metadata:
app_id: my-app
name: My App
identity:
project_ref: you/my-app
capabilities:
- kind: http
route: /
runtime: nodejs22
startup:
command: npm start
resources:
requests:
cpu: 250m
non_secret_env:
- { name: NODE_ENV, value: production }
public_edge:
type: platform
exposure: public
app_env:
preview:
branch_pattern: "^refs/heads/.*$"
image_tag: preview
production:
branch_pattern: "^refs/heads/main$"
image_tag: prod
Fields¶
| Field | Required | Notes |
|---|---|---|
apiVersion |
yes | map.mithran/v1. |
kind |
yes | MithranApp. |
metadata.app_id |
yes | Your hostname label. my-app → my-app.apps.sandbox.mithran.cloud. DNS-friendly, short. |
metadata.name |
yes | Human-readable name. |
identity.project_ref |
yes | owner/repo. |
capabilities[] |
yes | One or more services. For HTTP: kind: http, a route, a runtime, and a startup.command. |
resources.requests.cpu |
no | CPU request, e.g. 250m. |
non_secret_env[] |
no | Plain config as { name, value }. Committed to the repo, so never secrets. |
public_edge.type |
no | platform to serve on the shared wildcard. |
public_edge.exposure |
no | public serves anonymous traffic. protected makes the edge require a signed-in Mithran session before any request reaches your app, with no credential in your repo. none doesn't expose it publicly. |
app_env.<env>.branch_pattern |
no | Regex matching the ref for that environment. |
app_env.<env>.image_tag |
no | Image tag for that environment. |
Conventions¶
- Your process must listen on
$PORTand answerGET /healthwith a 200, or health checks fail. - A
release/**push orvX.Y.Ztag deploys toproduction; the bareapp_idhost serves that. - The build comes from your
Dockerfile. The manifest declares the app; the Dockerfile builds it.