context
ai coding agents (claude code, cursor, codex, etc.) increasingly manage cloud infrastructure alongside application code. railway's cli is close to being fully automatable but has gaps that force agents to fall back to the dashboard or raw graphql calls.
this is a meta-issue summarizing the cli gaps that block end-to-end automation. each has its own issue linked below.
the gaps
| capability |
current state |
needed |
| create service |
works but prompts interactively (#799, #816) |
fully non-interactive when flags provided |
| delete service |
not available (#814) |
service delete <name> --yes |
| list services |
not available (#817) |
service list --json |
| update service config |
not available (#815) |
service update --image/--repo/--name |
| move service between projects |
not available (#818) |
service move --to-project |
| dockerfile builds |
railpack ignores railway.json builder override (#819) |
respect builder: DOCKERFILE |
| stop/pause service |
not available (#683, closed) |
service stop/start |
what "agent-friendly" means
- every mutation available via graphql should have a cli command — agents can't use dashboards
- zero interactive prompts when flags are sufficient — agents can't type into tty prompts
- consistent
--json output on all commands — agents parse structured output
--yes flag on all destructive operations — agents need explicit confirmation bypass
- idempotent operations — running the same command twice shouldn't error (create-if-not-exists pattern)
who benefits
- ai coding agents automating deployments
- ci/cd pipelines provisioning infrastructure
- infrastructure-as-code scripts (reproducible setups)
- developers who prefer terminal over dashboard
related issues
context
ai coding agents (claude code, cursor, codex, etc.) increasingly manage cloud infrastructure alongside application code. railway's cli is close to being fully automatable but has gaps that force agents to fall back to the dashboard or raw graphql calls.
this is a meta-issue summarizing the cli gaps that block end-to-end automation. each has its own issue linked below.
the gaps
service delete <name> --yesservice list --jsonservice update --image/--repo/--nameservice move --to-projectbuilder: DOCKERFILEservice stop/startwhat "agent-friendly" means
--jsonoutput on all commands — agents parse structured output--yesflag on all destructive operations — agents need explicit confirmation bypasswho benefits
related issues
service deletecommand for non-interactive service removal #814 — service deleteservice updatefor changing image, repo, and service config without dashboard #815 — service updateservice listcommand to enumerate services in a project #817 — service listservice moveto transfer services between projects #818 — service moverailway upwith dockerfile for docker image services (builder override) #819 — dockerfile builder override