← Back to Skills
DevOps

railway-skill

leicao-me By leicao-me 👁 3 views ▲ 0 votes

Deploy and manage applications on Railway.app.

GitHub
---
name: railway
description: Deploy and manage applications on Railway.app. Use for deploying projects, managing services, viewing logs, setting environment variables, and managing databases. Railway is a modern cloud platform for deploying apps with zero configuration.
metadata:
  {
    "openclaw":
      {
        "emoji": "🚂",
        "requires": { "bins": ["railway"] },
        "install":
          [
            {
              "id": "brew",
              "kind": "brew",
              "formula": "railway",
              "bins": ["railway"],
              "label": "Install Railway CLI (brew)",
            },
            {
              "id": "npm",
              "kind": "npm",
              "package": "@railway/cli",
              "bins": ["railway"],
              "label": "Install Railway CLI (npm)",
            },
          ],
      },
  }
---

# Railway

Deploy and manage applications on [Railway.app](https://railway.app) - a modern cloud platform with zero-config deployments.

## Authentication

```bash
# Login (opens browser)
railway login

# Login with token (CI/CD)
railway login --token <TOKEN>

# Check login status
railway whoami

# Logout
railway logout
```

## Project Management

### Link & Initialize

```bash
# Link current directory to existing project
railway link

# Link to specific project
railway link --project <PROJECT_ID>

# Create new project
railway init

# Unlink project
railway unlink
```

### View Projects

```bash
# List all projects
railway list

# Open project in browser
railway open

# Show project status
railway status
```

## Deployment

### Deploy

```bash
# Deploy current directory
railway up

# Deploy without watching logs
railway up --detach

# Deploy specific service
railway up --service <SERVICE_NAME>

# Deploy to specific environment
railway up --environment production

# Redeploy latest version
railway redeploy

# Redeploy specific service
railway redeploy --service <SERVICE_NAME>
```

### Deploy from Template

```bash
# Deploy a template
railway deploy --template <TEMPLATE_NAME>

# With variables
railway deploy --template postgres --variable POSTGRES_USER=myuser
```

## Services

```bash
# List services in project
railway service

# Create new service
railway service create

# Delete service
railway service delete <SERVICE_NAME>
```

## Environment Variables

```bash
# List all variables
railway variables

# Set variable
railway variables set KEY=value

# Set multiple variables
railway variables set KEY1=value1 KEY2=value2

# Delete variable
railway variables delete KEY

# View specific variable
railway variables get KEY
```

## Logs

```bash
# View logs (live)
railway logs

# View logs for specific service
railway logs --service <SERVICE_NAME>

# View recent logs (not live)
railway logs --no-follow

# View logs with timestamps
railway logs --timestamps
```

## Run Commands

```bash
# Run command with Railway env vars
railway run <command>

# Examples
railway run npm start
railway run python manage.py migrate
railway run prisma db push

# SSH into running service
railway ssh

# SSH into specific service
railway ssh --service <SERVICE_NAME>
```

## Domains

```bash
# List domains
railway domain

# Add custom domain
railway domain add <DOMAIN>

# Remove domain
railway domain delete <DOMAIN>
```

## Databases

Railway supports one-click database provisioning:

```bash
# Add PostgreSQL
railway add --plugin postgresql

# Add MySQL
railway add --plugin mysql

# Add Redis
railway add --plugin redis

# Add MongoDB
railway add --plugin mongodb
```

Database connection strings are automatically added to environment variables.

## Environments

```bash
# List environments
railway environment

# Switch environment
railway environment <ENV_NAME>

# Create environment
railway environment create <ENV_NAME>

# Delete environment
railway environment delete <ENV_NAME>
```

## Volumes

```bash
# List volumes
railway volume

# Create volume
railway volume create --mount /data

# Delete volume
railway volume delete <VOLUME_ID>
```

## Common Workflows

### Deploy a New Project

```bash
# 1. Initialize in your project directory
cd my-app
railway init

# 2. Add a database if needed
railway add --plugin postgresql

# 3. Set environment variables
railway variables set NODE_ENV=production

# 4. Deploy
railway up
```

### Connect to Production Database

```bash
# Run local command with production env vars
railway run psql $DATABASE_URL

# Or use SSH
railway ssh
# Then inside container:
psql $DATABASE_URL
```

### View Deployment Status

```bash
# Check status
railway status

# View logs
railway logs

# Open dashboard
railway open
```

### Rollback Deployment

```bash
# View deployments in dashboard
railway open

# Redeploy previous version (via dashboard)
# Or redeploy current code
railway redeploy
```

## CI/CD Integration

For GitHub Actions or other CI:

```yaml
# .github/workflows/deploy.yml
name: Deploy to Railway
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Railway CLI
        run: npm i -g @railway/cli
      - name: Deploy
        run: railway up --detach
        env:
          RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
```

## Resources

- [Railway Documentation](https://docs.railway.com)
- [Railway CLI Reference](https://docs.railway.com/reference/cli-api)
- [Railway Templates](https://railway.app/templates)
- [Railway GitHub](https://github.com/railwayapp/cli)
devops

Comments

Sign in to leave a comment

Loading comments...