---
title: "Deploy LangWatch LLMOps Stack"
description: "LangWatch LLM observability, evals and agent testing, invite only"
category: "Observability"
url: https://railway.com/deploy/langwatch-llmops-stack
---

# Deploy LangWatch LLMOps Stack

LangWatch LLM observability, evals and agent testing, invite only

**[Deploy LangWatch LLMOps Stack on Railway](https://railway.com/template/langwatch-llmops-stack)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/langwatch-llmops-stack/manifest.json

- **Creator:** Protemplate
- **Category:** Observability
- **Total deploys:** 2

## Template content

### NLP https://raw.githubusercontent.com/langwatch/langwatch/v3.23.0/docs/favicon.svg

- **Image:** langwatch/langwatch_nlp:3.23.0
- **Health check:** /healthz

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:17

### LangEvals https://raw.githubusercontent.com/langwatch/langwatch/v3.23.0/docs/favicon.svg

- **Image:** langwatch/langevals:3.23.0
- **Health check:** /healthcheck

### LangWatch https://raw.githubusercontent.com/langwatch/langwatch/v3.23.0/docs/favicon.svg

- **Image:** langwatch/langwatch:3.23.0
- **Health check:** /api/health
- **Public domain:** Yes

### RustFS https://avatars.githubusercontent.com/u/151849438?v=4

- **Image:** rustfs/rustfs:1.0.4
- **Start command:** `sh -c '( until curl -sf http://127.0.0.1:9000/health >/dev/null 2>&1; do sleep 2; done; curl -s -o /dev/null -w "bucket $RUSTFS_BUCKET create: HTTP %{http_code}\n" -X PUT --aws-sigv4 "aws:amz:us-east-1:s3" --user "$RUSTFS_ACCESS_KEY:$RUSTFS_SECRET_KEY" "http://127.0.0.1:9000/$RUSTFS_BUCKET" ) & exec /entrypoint.sh rustfs'`
- **Health check:** /health

### Workers https://raw.githubusercontent.com/langwatch/langwatch/v3.23.0/docs/favicon.svg

- **Image:** langwatch/langwatch:3.23.0
- **Start command:** `sh -c 'cd /app/apps/worker && exec pnpm --silent run start'`

### Redis https://devicons.railway.app/i/redis.svg

- **Image:** redis:8.10.3-alpine
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --maxmemory-policy noeviction --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### ClickHouse https://avatars.githubusercontent.com/u/54801242?v=4

- **Image:** langwatch/clickhouse-serverless:0.4.0
- **Health check:** /ping

## Documentation

# Deploy and Host LangWatch on Railway

LangWatch is an open source LLMOps platform. It collects traces from your LLM apps and agents over OpenTelemetry or REST, runs evaluations and guardrails on them, and gives you datasets, prompt management, agent simulations and analytics in one self hosted workspace.

## About Hosting LangWatch

Hosting LangWatch means running the app next to its workers, the NLP engine, the LangEvals evaluator service, PostgreSQL, ClickHouse and Redis. This template deploys all seven services from the official compose file at the pinned release 3.23.0, and adds RustFS as S3 storage so the app and the workers share datasets and trace attachments. Secrets are generated at deploy time, every backing service stays on Railway's private network, and sign up is invite only from the first minute: you enter your own email address as `ADMIN_EMAILS` and only that address can create the first account.

**Plan requirement:** Railway Hobby plan or higher. Upstream asks for 4 CPU cores and 8 GB of RAM for this stack. LangEvals and ClickHouse each need more than the 1 GB per service that the Trial allows.

## Common Use Cases

- **LLM observability**: trace every model call, tool call and agent step with cost and latency
- **Evaluations and guardrails**: score live traffic with the built in evaluator library or your own
- **Agent testing**: run simulated conversations against your agent before release
- **Datasets and experiments**: turn real traces into datasets and compare prompts and models
- **Prompt management**: version prompts and ship them without a redeploy

## Dependencies for LangWatch Hosting

- **Railway Hobby plan or higher**: about 6 to 8 GB of RAM across the stack
- **PostgreSQL, ClickHouse, Redis, RustFS**: all included, each with its own volume
- **Your email address**: required at deploy as `ADMIN_EMAILS`
- **Model provider keys**: optional at boot, added per project in the UI for evaluators and the playground
- **Mail gateway**: optional (SMTP, Resend, SendGrid or SES) for invites and alerts

### Deployment Dependencies

- [LangWatch self hosting docs](https://docs.langwatch.ai/self-hosting)
- [LangWatch environment variables](https://docs.langwatch.ai/self-hosting/configuration/environment-variables)
- [LangWatch GitHub repository](https://github.com/langwatch/langwatch)

### Implementation Details

First steps after the deploy:

1. Wait until all eight services are up. The workers apply the database schema on first boot and the app reports ready when they finish.
2. Open the LangWatch domain and sign up with the `ADMIN_EMAILS` address. Do this right away.
3. Create an organization and a project, copy the project API key, and set `LANGWATCH_ENDPOINT` in your SDK to your Railway domain.
4. Invite teammates from Settings, Members.

Key variables:

```env
ADMIN_EMAILS=you@yourcompany.com        # required, you enter it
SIGN_UP_MODE=invite_only
BASE_HOST=https://${{RAILWAY_PUBLIC_DOMAIN}}
NEXTAUTH_SECRET=${{secret(48)}}
CREDENTIALS_SECRET=${{secret(64,"abcdef0123456789")}}   # never rotate
LANGWATCH_INSTANCE_ADMIN_API_KEY=${{secret(48)}}       # provisioning API
DATABASE_URL=${{Postgres.DATABASE_PRIVATE_URL}}?schema=langwatch
CLICKHOUSE_URL=${{ClickHouse.PRIVATE_HTTP_URL}}
REDIS_URL=${{Redis.REDIS_URL}}
```

The generated `LANGWATCH_INSTANCE_ADMIN_API_KEY` enables `POST /api/v1/organizations`, so an organization, a project and its API key can also be created from a script. LangEvals and the NLP engine have no public domain. For a custom domain, update `BASE_HOST`, `NEXTAUTH_URL` and `LANGWATCH_ENDPOINT` together.

## Why Deploy LangWatch on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying LangWatch on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## Similar templates

- [Rootprint](https://railway.com/deploy/rootprint-1) — Open-source logs and traces with full-text search on object-storage.
- [VPS Fleet Watch Hub with Beszel](https://railway.com/deploy/vps-fleet-watch-hub-with-beszel) — A persistent Beszel hub for external VPS agents and fleet alerts.
- [Pyroscope profiling](https://railway.com/deploy/pyroscope-profiling) — Protected continuous profiling with durable Pyroscope storage.

Open this page in a browser: https://railway.com/deploy/langwatch-llmops-stack
