Appearance
Deploying services
The deploy command
sh
conway deploy --service app --dir .--servicenames the service (defaultapp). Deploying the same name again ships a new release.--diris the source directory to upload (default the current directory).
The CLI gzips the directory (respecting .conwayignore, and always skipping .git, node_modules, .venv, …), uploads it (512MB cap), and streams the build.
How builds work
AgentCloud builds your source two ways, in priority order:
- Dockerfile — if a
Dockerfileexists at the root, it's built as-is. - railpack — otherwise, railpack autodetects the stack and generates a build plan. Node, Python, Go, Rust, PHP, Ruby, Java, and more are supported with zero config.
Either way the result is an OCI image pushed to the platform's internal registry and rolled out.
Examples that just work, no Dockerfile
sh
# A Vite/React app — railpack runs the build and serves the output
conway deploy --service web
# A Flask API with a Procfile (web: gunicorn app:app --bind 0.0.0.0:$PORT)
conway deploy --service api
# A Go module
conway deploy --service svcThe health gate
After the image rolls out, AgentCloud waits up to 120s for your service to become ready on $PORT. If it never comes up, the deploy automatically rolls back to the previous release and returns HEALTH_CHECK_FAILED with the last 50 lines of your app's logs. A bad deploy never takes down a working one.
Releases & rollback
sh
conway rollback --service app # to the previous release
conway rollback --service app --to <id> # to a specific releaseRollbacks are instant — they re-point the Deployment at an existing image, no rebuild.
Scaling & restarting
sh
conway services scale app --replicas 3
conway restart appScaling is checked against your project quota and fails fast with QUOTA_EXCEEDED (and a hint) rather than silently wedging.
Logs
sh
conway logs --service app -f # follow live