Skip to content

ulams stack

Generated from front/cli (ulams schema)

Stop this stack, keeping persistent data unless –purge is requested.

Kind: write (idempotent). Stability: stable. MCP tool: stack_down (not exposed). Scopes: none.

Flag Type Required Description
--directory string
--purge boolean Explicitly delete owned persistent data; requires –yes.
Terminal window
# Keep data
ulams stack down
# Delete own data
ulams stack down --purge --yes
Input JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"directory": {
"type": "string"
},
"purge": {
"default": false,
"description": "Explicitly delete owned persistent data; requires --yes.",
"type": "boolean"
}
}
}

Generate inspectable deployment files and private credentials without starting services.

Kind: write (idempotent). Stability: stable. MCP tool: stack_render (not exposed). Scopes: none.

Flag Type Required Description
--directory string Install directory; default ./ulams-stack. Reuse it to resume.
--target string
--mode string
--name string Compose project / Kubernetes namespace; default ulams.
--domain string
--tenant string Initial academy slug; default academy.
--admin-email string
--http-port integer Gateway HTTP port; defaults to 8480 locally and 80 in production.
--https-port integer
--tls string Production TLS issuer; internal is for private networks/tests.
--image-registry string Application image prefix; default ghcr.io/ulams-dev.
--image-tag string Matching application image release; latest resolves and pins a complete SHA release.
--context string kubectl context; never changes the current context.
--storage-class string
--gateway string
--node-port integer
--ready-timeout integer
Terminal window
# Inspect Kubernetes
ulams stack render --target kubernetes --directory ./my-stack
Input JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"directory": {
"description": "Install directory; default ./ulams-stack. Reuse it to resume.",
"type": "string",
"minLength": 1
},
"target": {
"type": "string",
"enum": [
"docker",
"kubernetes"
]
},
"mode": {
"type": "string",
"enum": [
"development",
"production"
]
},
"name": {
"description": "Compose project / Kubernetes namespace; default ulams.",
"type": "string",
"pattern": "^[a-z][a-z0-9-]{1,39}$"
},
"domain": {
"type": "string",
"pattern": "^(?=.{1,180}$)[a-z0-9]+(?:[.-][a-z0-9]+)*$"
},
"tenant": {
"description": "Initial academy slug; default academy.",
"type": "string",
"pattern": "^[a-z][a-z0-9]{1,29}$"
},
"admin_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"http_port": {
"description": "Gateway HTTP port; defaults to 8480 locally and 80 in production.",
"type": "integer",
"minimum": 1,
"maximum": 65535
},
"https_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535
},
"tls": {
"description": "Production TLS issuer; internal is for private networks/tests.",
"type": "string",
"enum": [
"acme",
"internal"
]
},
"image_registry": {
"description": "Application image prefix; default ghcr.io/ulams-dev.",
"type": "string",
"pattern": "^[a-z0-9][a-z0-9./:_-]*$"
},
"image_tag": {
"description": "Matching application image release; latest resolves and pins a complete SHA release.",
"type": "string",
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,127}$"
},
"context": {
"description": "kubectl context; never changes the current context.",
"type": "string",
"minLength": 1
},
"storage_class": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9.-]*$"
},
"gateway": {
"type": "string",
"enum": [
"LoadBalancer",
"NodePort",
"ClusterIP"
]
},
"node_port": {
"type": "integer",
"minimum": 30000,
"maximum": 32767
},
"ready_timeout": {
"default": 900,
"type": "integer",
"minimum": 30,
"maximum": 3600
}
}
}

Show resources and URLs of this CLI-owned stack.

Kind: read (idempotent). Stability: stable. MCP tool: stack_status (not exposed). Scopes: none.

Flag Type Required Description
--directory string
Terminal window
# Status
ulams stack status --json
Input JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"directory": {
"type": "string"
}
}
}

Launch or resume a complete development/production stack with Docker or Kubernetes.

Kind: write (idempotent). Stability: stable. MCP tool: stack_up (not exposed). Scopes: none.

Flag Type Required Description
--directory string Install directory; default ./ulams-stack. Reuse it to resume.
--target string
--mode string
--name string Compose project / Kubernetes namespace; default ulams.
--domain string
--tenant string Initial academy slug; default academy.
--admin-email string
--http-port integer Gateway HTTP port; defaults to 8480 locally and 80 in production.
--https-port integer
--tls string Production TLS issuer; internal is for private networks/tests.
--image-registry string Application image prefix; default ghcr.io/ulams-dev.
--image-tag string Matching application image release; latest resolves and pins a complete SHA release.
--context string kubectl context; never changes the current context.
--storage-class string
--gateway string
--node-port integer
--ready-timeout integer
Terminal window
# Local Phase 2 trial
ulams stack up
# Server
ulams stack up --mode production --domain learn.example.org
# Kubernetes
ulams stack up --target kubernetes --mode production --domain learn.example.org
Input JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"directory": {
"description": "Install directory; default ./ulams-stack. Reuse it to resume.",
"type": "string",
"minLength": 1
},
"target": {
"type": "string",
"enum": [
"docker",
"kubernetes"
]
},
"mode": {
"type": "string",
"enum": [
"development",
"production"
]
},
"name": {
"description": "Compose project / Kubernetes namespace; default ulams.",
"type": "string",
"pattern": "^[a-z][a-z0-9-]{1,39}$"
},
"domain": {
"type": "string",
"pattern": "^(?=.{1,180}$)[a-z0-9]+(?:[.-][a-z0-9]+)*$"
},
"tenant": {
"description": "Initial academy slug; default academy.",
"type": "string",
"pattern": "^[a-z][a-z0-9]{1,29}$"
},
"admin_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"http_port": {
"description": "Gateway HTTP port; defaults to 8480 locally and 80 in production.",
"type": "integer",
"minimum": 1,
"maximum": 65535
},
"https_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535
},
"tls": {
"description": "Production TLS issuer; internal is for private networks/tests.",
"type": "string",
"enum": [
"acme",
"internal"
]
},
"image_registry": {
"description": "Application image prefix; default ghcr.io/ulams-dev.",
"type": "string",
"pattern": "^[a-z0-9][a-z0-9./:_-]*$"
},
"image_tag": {
"description": "Matching application image release; latest resolves and pins a complete SHA release.",
"type": "string",
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,127}$"
},
"context": {
"description": "kubectl context; never changes the current context.",
"type": "string",
"minLength": 1
},
"storage_class": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9.-]*$"
},
"gateway": {
"type": "string",
"enum": [
"LoadBalancer",
"NodePort",
"ClusterIP"
]
},
"node_port": {
"type": "integer",
"minimum": 30000,
"maximum": 32767
},
"ready_timeout": {
"default": 900,
"type": "integer",
"minimum": 30,
"maximum": 3600
}
}
}