Railway

Deploy Plano AI

An open-source AI proxy for routing, guardrails & observability

Deploy Plano AI

Just deployed

Deploy and Host Plano on Railway

Plano is an AI-native proxy built on Envoy that provides a unified, OpenAI-compatible gateway for routing requests across multiple LLM providers. It supports intelligent model selection based on prompt intent, built-in guardrails for safety filtering and jailbreak detection, and automatic OpenTelemetry tracing for observability across all requests. Plano Plano

About Hosting Plano

Deploying Plano requires a containerized environment with network access to external LLM provider APIs. The service is stateless and needs no persistent storage or database — configuration is generated at startup from environment variables. You provide API keys for one or more LLM providers (OpenAI, Anthropic, Google, Groq, Mistral, DeepSeek, xAI, Together AI), and Plano auto-generates its Envoy proxy configuration. The service exposes a single HTTP port for its OpenAI-compatible gateway endpoint. For advanced setups involving intelligent routing between multiple providers, you can supply a full YAML configuration directly via environment variables.

Common Use Cases

  • Unified LLM Gateway — Expose a single OpenAI-compatible /v1/chat/completions endpoint that routes to any of 8 supported providers, letting applications switch models without code changes.
  • Cost-Optimized Routing — Use intelligent routing to automatically direct simple queries to cheaper models (e.g., GPT-4o-mini) and complex reasoning tasks to more capable models (e.g., Claude Sonnet), reducing overall API spend.
  • Multi-Provider Failover — Configure multiple LLM providers behind one endpoint so that if one provider is unavailable, traffic can be routed to an alternative.

Dependencies for Plano Hosting

  • At least one LLM provider API key — One or more of: OpenAI, Anthropic, Google, Groq, Mistral, DeepSeek, xAI, or Together AI.
  • A containerized hosting platform — Docker-compatible environment with outbound HTTPS access to LLM provider APIs.

Deployment Dependencies

Implementation Details

Plano supports three configuration modes, selected automatically based on which environment variables are set:

# Mode 1: Auto-generate config from individual env vars (recommended)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
PLANO_DEFAULT_PROVIDER=anthropic

# Mode 2: Full YAML config via env var
PLANO_CONFIG_YAML="version: v0.1.0
listeners:
  egress_traffic:
    address: 0.0.0.0
    port: 12000
    message_format: openai
model_providers:
  - model: openai/gpt-4o
    access_key: \$OPENAI_API_KEY
    default: true"

# Mode 3: Base64-encoded YAML config
PLANO_CONFIG_BASE64=dmVyc2lvbjogdjAuMS4w...

Environment Variables

The following environment variables change Plano's runtime configuration when set in Railway.

Required provider keys (set at least one)

VariablePurposeExample
OPENAI_API_KEYEnables OpenAI as a model providersk-...
ANTHROPIC_API_KEYEnables Anthropic as a model providersk-ant-...
GOOGLE_API_KEYEnables Google Gemini as a model providerAIza...
GROQ_API_KEYEnables Groq as a model providergsk_...
MISTRAL_API_KEYEnables Mistral as a model provider...
DEEPSEEK_API_KEYEnables DeepSeek as a model provider...
XAI_API_KEYEnables xAI (Grok) as a model providerxai-...
TOGETHER_API_KEYEnables Together AI as a model provider...

Provider and model selection

VariablePurposeDefault / Example
PLANO_DEFAULT_PROVIDERChooses the default provider when multiple are configuredopenai, anthropic, google
PLANO_OPENAI_MODELOverrides the OpenAI model nameopenai/gpt-4o
PLANO_ANTHROPIC_MODELOverrides the Anthropic model nameanthropic/claude-sonnet-4-5
PLANO_GOOGLE_MODELOverrides the Google model namegemini/gemini-2.5-flash
PLANO_GROQ_MODELOverrides the Groq model namegroq/llama-3.3-70b-versatile
PLANO_MISTRAL_MODELOverrides the Mistral model namemistral/mistral-large-latest
PLANO_DEEPSEEK_MODELOverrides the DeepSeek model namedeepseek/deepseek-chat
PLANO_XAI_MODELOverrides the xAI model namexai/grok-3
PLANO_TOGETHER_MODELOverrides the Together AI model nametogether_ai/meta-llama/Llama-3.3-70B-Instruct-Turbo

Routing, timeout, tracing, and logging

VariablePurposeDefault / Example
PLANO_ROUTING_MODELEnables routing and sets the routing modelArch-Router
PLANO_ROUTING_PROVIDERSets the provider used for routing decisionsarch-router
PLANO_TIMEOUTSets request timeout in the generated config30s
PLANO_TRACE_SAMPLINGEnables OpenTelemetry sampling when greater than 010
LOG_LEVELSets runtime logging levelinfo
PORTSets Plano's listener port12000

Full config override

Use one of these to bypass auto-generated configuration entirely:

VariablePurpose
PLANO_CONFIG_YAMLSupplies the full Plano YAML config directly
PLANO_CONFIG_BASE64Supplies the full Plano YAML config as base64

Variables mentioned for integration, not Plano config

These may appear in Railway examples, but they do not directly configure Plano itself:

  • OPENAI_BASE_URL - Used by another application or service to call Plano.
  • RAILWAY_PRIVATE_DOMAIN - Railway-provided private networking variable.

For Railway private networking, other services in the same project connect via:

OPENAI_BASE_URL=http://${{Plano.RAILWAY_PRIVATE_DOMAIN}}:${{Plano.PORT}}/v1

or

API_BASE_URL=http://${{Plano.RAILWAY_PRIVATE_DOMAIN}}:${{Plano.PORT}}/v1

Why Deploy Plano 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 Plano 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.


Template Content

More templates in this category

View Template
Chat Chat
Chat Chat, your own unified chat and search to AI platform.

okisdev
View Template
NEW
EchoDeck
Generate a mp4 from powerpoint with TTS

Fixed Scope
View Template
openui
Deploy OpenUI: AI-powered UI generation with GitHub OAuth and OpenAI API.

zexd