Skip to content

Deploying services ​

The deploy command ​

sh
conway deploy --service app --dir .
  • --service names the service (default app). Deploying the same name again ships a new release.
  • --dir is 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:

  1. Dockerfile — if a Dockerfile exists at the root, it's built as-is.
  2. 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 svc

The 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 release

Rollbacks are instant — they re-point the Deployment at an existing image, no rebuild.

Scaling & restarting ​

sh
conway services scale app --replicas 3
conway restart app

Scaling 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

Deployed on AgentCloud itself.