home / skills / railwayapp / railway-skills / deploy
This skill deploys local code to Railway using railway up, providing quick, detached or CI-mode deployments with logs as needed.
npx playbooks add skill railwayapp/railway-skills --skill deployReview the files below or copy the command above to add this skill to your agents.
---
name: deploy
description: This skill should be used when the user wants to push code to Railway, says "railway up", "deploy", "deploy to railway", "ship", or "push". For initial setup or creating services, use new skill. For Docker images, use environment skill.
allowed-tools: Bash(railway:*)
---
# Deploy
Deploy code from the current directory to Railway using `railway up`.
## When to Use
- User asks to "deploy", "ship", "push code"
- User says "railway up" or "deploy to Railway"
- User wants to deploy local code changes
- User says "deploy and fix any issues" (use --ci mode)
## Modes
### Detach Mode (default)
Starts deploy and returns immediately. Use for most deploys.
```bash
railway up --detach
```
### CI Mode
Streams build logs until complete. Use when user wants to watch the build or needs to debug issues.
```bash
railway up --ci
```
**When to use CI mode:**
- User says "deploy and watch", "deploy and fix issues"
- User is debugging build failures
- User wants to see build output
## Deploy Specific Service
Default is linked service. To deploy to a different service:
```bash
railway up --detach --service backend
```
## Deploy to Unlinked Project
Deploy to a project without linking first:
```bash
railway up --project <project-id> --environment production --detach
```
Requires both `--project` and `--environment` flags.
## CLI Options
| Flag | Description |
|------|-------------|
| `-d, --detach` | Don't attach to logs (default) |
| `-c, --ci` | Stream build logs, exit when done |
| `-s, --service <NAME>` | Target service (defaults to linked) |
| `-e, --environment <NAME>` | Target environment (defaults to linked) |
| `-p, --project <ID>` | Target project (requires --environment) |
| `[PATH]` | Path to deploy (defaults to current directory) |
## Directory Linking
Railway CLI walks UP the directory tree to find a linked project. If you're in a subdirectory of a linked project, you don't need to relink.
For subdirectory deployments, prefer setting `rootDirectory` via the environment skill, then deploy normally with `railway up`.
## After Deploy
### Detach mode
```
Deploying to <service>...
```
Use `deployment` skill to check build status (with `--lines` flag).
### CI mode
Build logs stream inline. If build fails, the error will be in the output.
**Do NOT run `railway logs --build` after CI mode** - the logs already streamed. If you need
more context, use `deployment` skill with `--lines` flag (never stream).
## Composability
- **Check status after deploy**: Use `service` skill
- **View logs**: Use `deployment` skill
- **Fix config issues**: Use `environment` skill
- **Redeploy after config fix**: Use `environment` skill
## Error Handling
### No Project Linked
```
No Railway project linked. Run `railway link` first.
```
### No Service Linked
```
No service linked. Use --service flag or run `railway service` to select one.
```
### Build Failure (CI mode)
The build logs already streamed - analyze them directly from the `railway up --ci` output.
Do NOT run `railway logs` after CI mode (it streams forever without `--lines`).
Common issues:
- Missing dependencies → check package.json/requirements.txt
- Build command wrong → use environment skill to fix
- Dockerfile issues → check dockerfile path
This skill deploys code from the current working directory to Railway using the Railway CLI. It runs the recommended railway up command in either detached mode (default) or CI mode for streamed logs. Use this skill for pushing local changes, targeting specific services or environments, and deploying to unlinked projects when you provide project and environment flags.
The skill constructs and runs railway up with flags based on user intent: --detach for background deploys or --ci to stream build logs until completion. It can target a linked service, a named service via --service, or an explicit project and environment via --project and --environment. For subdirectory projects, the CLI walks up the tree to find linked metadata; for nonstandard roots, set rootDirectory via the environment skill first.
When should I use --ci instead of --detach?
Use --ci when you want to stream build logs and watch or debug the build. Use --detach for faster, nonblocking deploys.
Can I deploy from a subdirectory?
Yes. The CLI walks up the directory tree to find a linked project. For custom roots, set rootDirectory via the environment skill before deploying.