Skip to content

New provider: Railway (native provider against Railway GraphQL API) #81

@joeduffy

Description

@joeduffy

Summary

Add a Pulumi provider for Railway — the leading post-Heroku platform for deploying servers, databases, and cron jobs with zero operational overhead.

Strategy: Native provider against Railway's production GraphQL API. A community Terraform provider exists (terraform-community-providers/terraform-provider-railway, 36 stars) but has significant resource gaps (no databases, no volumes, no deployments) and insufficient quality/coverage to bridge cleanly. Building natively against the GraphQL API gives us full surface coverage from day one.

Why Railway

  • Strong developer mindshare in the indie/startup/SaaS segment — frequently cited as the preferred Heroku replacement alongside Fly.io and Render
  • Production GraphQL API at https://backboard.railway.com/graphql/v2 — the same API powering Railway's dashboard, introspectable, well-maintained
  • Active investment in agentic tooling — Railway shipped an official MCP server in January 2026 (228 stars already), signaling alignment with the AI infrastructure narrative
  • No quality Pulumi provider exists — two abandoned community attempts exist (0 stars each) but neither is functional

Resource Surface

From Railway's GraphQL API and platform capabilities:

  • railway.Project
  • railway.Environment (preview/production branching)
  • railway.Service (Docker image, GitHub repo, or template)
  • railway.ServiceDomain / railway.CustomDomain
  • railway.Variable / railway.SharedVariable
  • railway.TcpProxy
  • railway.Volume (persistent storage)
  • railway.Database (managed Postgres, MySQL, Redis, MongoDB)
  • railway.Webhook

Build Path

  1. Introspect the Railway GraphQL schema at https://backboard.railway.com/graphql/v2
  2. Scaffold a native provider using Railway's API token authentication
  3. Implement core resources (Project, Environment, Service, Variable, Domain) as v1 scope
  4. Add Volume, Database, and Webhook in subsequent iterations
  5. Publish to Pulumi Registry

Notes

  • The community TF provider's GraphQL implementation can be referenced for API patterns even if we don't bridge it
  • Railway uses account tokens, workspace tokens, and project tokens — provider auth design should support at minimum account-level tokens

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/engineeringWork that is not visible to an external userneeds-triageNeeds attention from the triage team
    No fields configured for Internal.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions