Directory layout
orun expects three top-level directories in your manifest repository. Each directory holds one kind of resource:nodes/
nodes/
Node manifests describe a single host: its address, the Git repository and branch it should track, and runtime parameters such as poll interval and data directory. orun reads these files during
orun bootstrap to provision new hosts. Committing node manifests to the repository means adding a new node is as simple as running orun bootstrap nodes/<name>.yaml — no manual configuration on the host.deployments/
deployments/
Deployment manifests describe a containerized workload: the image to run, port bindings, health check endpoints, volume mounts, and environment variables. Each file corresponds to one container managed by orun on every node that tracks this repository.
services/
services/
Service manifests wire a Deployment to the built-in Caddy ingress: they specify which Deployment to expose, the public domain name, and whether to enable automatic SSL/TLS. The
ingress.domain.environment field uses $ENV as a placeholder that orun replaces with the environment suffix at runtime.Resource kinds
All resources share the sameapiVersion. The kind field tells orun how to interpret the file.
Node
Deployment
*Exactly one of
image or build is required.
Service
Git authentication
The node fetches from theorigin remote of the manifest repository. Ensure the node has read access before running orun bootstrap.
- SSH deploy key (recommended)
- HTTPS token
Poll interval and change propagation
The node polls theorigin remote every pollInterval seconds (default: 5s). After you push a commit, the node picks it up within one poll cycle. Reduce pollInterval for faster convergence, or increase it to reduce Git API load on shared hosts.
