Differential sync
Upload only changed files using workspace manifests instead of re-sending entire projects on every deploy.
Relay keeps the path from local repo to running container short and inspectable, with differential sync, streamed logs, rollback-ready images, and framework-aware deploys.
Internal preview environments.
Self-hosted product teams.
Operators who care about where the container actually lives.
Upload only changed files using workspace manifests instead of re-sending entire projects on every deploy.
Build an image, start the next blue or green slot, switch traffic only after readiness passes, then drain the previous slot before cleanup.
Spin up companion Postgres, Redis, MySQL, or Mongo services from `relay.json`. On Docker lanes they share a Docker network. On Station lanes, Relay injects host aliases so the app resolves service names through `/etc/hosts` without a shared Docker network.
Built-in buildpacks cover mainstream app types including Sprint UI. Server-installed plugins still handle extra framework shapes when needed.
Run in direct port mode or through Relay's built-in edge plus Caddy proxy stack when your base domain, dashboard host, and public host settings are configured.
Container build, run, stop, network, volume, and log operations all route through a ContainerRuntime interface. Docker is the default backend. Station is available per-app as an alternative runtime.
Restart, stop, stream logs, inspect deploy history, and manage app config from the same control surface.
The rollout path in relayd starts the next slot, waits for readiness, flips traffic to that slot, and drains the previous slot for a configurable window. In edge proxy mode, traffic can run as edge or session.
App containers are named per slot and alternate between blue and green on each successful rollout.
Traffic only moves after the candidate slot is reachable on its service port.
The previous slot is kept alive for RELAY_ROLLOUT_DRAIN_SECONDS before cleanup.
traffic_mode=edge sends everyone to the active slot immediately after the switch.
traffic_mode=session sets a cookie and can keep a client pinned to either the active or standby slot during the drain window.
There is no percentage-based split, weighted routing, or automatic progressive rollout controller in the current implementation.
Use blue-green wording for the current Relay rollout system.
Use session-pinned standby checks when you need to verify the new slot before the old one drains away.
Avoid calling it canary unless you also explain that there is no weighted traffic split today.
Token auth is powerful enough to be considered full deploy access.
Browser access should be gated by explicit `RELAY_CORS_ORIGINS` values.
Plugin install and remove are disabled by default and require a deliberate server flag.
That is the right shape for a tool that builds and runs Docker workloads on the host.