Skip to main content

Deploy

A Telo manifest is a runnable artifact: anything that can execute telo manifest.yaml can host your application. Three deployment shapes cover the common cases.

Pick a model​

ModelWhen it fitsHow to package
Bare CLIVMs, bare metal, dev boxes, CI agents. telo invoked under systemd / pm2 / Docker Compose / your supervisor.npm install -g @telorun/cli, then run telo /path/to/manifest.yaml.
Docker imageLong-running services (HTTP servers, workers, schedulers). Most workloads.FROM telorun/node:<ver>-slim + your manifest. See Docker image.
AWS LambdaEvent-driven serverless (HTTP, SQS, EventBridge). Scale-to-zero, per-invocation billing.Lambda-specific bootstrap + zip or container image. See AWS Lambda.

The default recommendation is Docker: hermetic, reproducible, portable across hosts, and the telorun/node image already ships the kernel — your Dockerfile only adds the manifest and its pre-installed controller cache.

Shared prep​

Every deployment model shares the same preparation steps:

  1. Author the manifest. A Telo.Application with targets: listing what to run, declaring variables: / secrets: against host env vars — see Application Environment Variables.
  2. Warm the cache with telo install ./manifest.yaml. Pre-downloads every controller and every imported module into the .telo/ cache root, so the production host never touches the network at boot. Run this in your build pipeline, not at deploy time.
  3. Ship the manifest and its .telo/ tree together. The root is .telo/ beside the manifest — or, when a telo-workspace.yaml sits above it, beside that marker instead, so a monorepo has one cache. Copy whichever directory holds it, or pin the location with TELO_CACHE_DIR. See where the cache lands.
  4. Configure runtime env so the manifest's variables: and secrets: resolve at kernel.load().

The pages that follow walk through each model. Three of them apply whichever you pick:

  • Running in production — how the process starts and stops, what it exits with, how to probe it, and every environment variable the runtime reads.
  • Upgrades & version skew — moving module pins and the kernel image without stranding one behind the other.
  • Security & supply chain — what a module can reach on your host, and how import pins are verified end to end.