Railway

Deploy Skyvern

Self-hosted Skyvern: LLM browser automation, workflows, credential vault

Deploy Skyvern

Just deployed

/data

/var/lib/postgresql/data

Just deployed

Just deployed

Skyvern logo

Deploy and Host Skyvern on Railway

Skyvern is an open-source agent that automates browser workflows with LLMs and computer vision instead of brittle selectors. You describe a goal in plain English — log into this portal, download last month's invoices — and Skyvern drives a real Chromium browser to do it, re-reading the page each step so a redesigned form does not break the run. Operations teams and RPA developers use it instead of Playwright scripts.

Deploy Skyvern on Railway and you get the whole self-hosted stack: the FastAPI backend with its Chromium runtime, the React workflow builder, PostgreSQL, and a Caddy gateway publishing one password-protected URL in front of it. The gateway is the only service with a public domain — the API, the UI and the browser runtime stay private — and it routes the API, the live-view WebSockets and the run artifacts on one origin. A volume holds artifacts, recordings, downloads and the credential vault.

Skyvern, its UI, a Caddy gateway and Postgres on Railway

Getting Started with Skyvern on Railway

Set GATEWAY_PASSWORD at deploy time, plus one model provider key if you want the agent to run tasks. The public URL prompts for HTTP basic auth — username admin, password as supplied. Skyvern's open-source build ships no login of its own, so this password is what stands between the internet and an agent that can spend your model credits.

Past the prompt is the home screen, with a prompt box and starter tasks. Pick "What's the top post on hackernews" to watch a run end to end, or Skip — start with blank canvas to open the builder and assemble navigation, extraction, file-download and code blocks visually. The right-hand panel streams the real Chromium instance running in your service, with a take control button for when a run hits a CAPTCHA or a two-factor prompt.

Before automating anything that needs a login, store the site username and password under Credentials. Values are encrypted at rest and referenced by name in a workflow, so no secret is pasted into a prompt. To check the deployment is healthy, run a starter task and watch the run page fill with per-step screenshots — they come off the volume through the artifact service, so they prove storage, the browser and streaming all work.

Skyvern home screen offering starter browser-automation prompts

Skyvern agent canvas beside its live browser stream

Skyvern credential vault holding two stored website logins

About Hosting Skyvern

Traditional browser automation bakes a site's DOM into the script, so a class rename breaks it. Skyvern screenshots the page each step, asks a vision model what to click or type next, and executes that — so one workflow generalises across many sites sharing a shape, such as a hundred insurance quote forms. Self-hosting matters because the agent handles real credentials: the vault, the artifacts and the browser session stay in infrastructure you control.

Key capabilities:

  • Prompt-driven and visual workflows with loops, branching and code blocks
  • Persistent browser sessions that keep cookies and logins alive across runs
  • An encrypted credential vault with TOTP, plus Bitwarden and 1Password
  • A live browser stream with human takeover for CAPTCHAs and step-up auth
  • A REST API and Python SDK, webhooks, and scheduled runs
  • Provider-agnostic: OpenAI, Anthropic, Gemini, Azure, Bedrock, OpenRouter, Groq or Ollama

Four services carry this. skyvern is the API and agent runtime: a virtual display so Chromium renders as on a desktop, every browser action, and artifacts on the volume. skyvern-ui serves the React app and mints the session tokens the frontend uses. Postgres stores workflows, runs, steps and credential metadata. gateway is Caddy: public URL, basic auth, path routing.

Why Deploy Skyvern on Railway

Railway removes the setup self-hosting Skyvern normally involves.

  • Postgres, the browser runtime and the persistent volume are provisioned together
  • Password-protected public access is configured before the first request
  • Private networking keeps the API, the UI and Chromium off the internet
  • Health checks and automatic restarts on all four services
  • One-click redeploys pick up new upstream releases

Common Use Cases

  • Pulling invoices, statements or claim documents out of portals that publish no API
  • Filling long multi-step applications — quotes, job applications, onboarding
  • Automating internal admin panels and legacy tools with no integration

Dependencies for Skyvern

  • skyvernpublic.ecr.aws/skyvern/skyvern:latest, extended by gridalpha/skyvern-railway. FastAPI backend, Chromium on a virtual display, and the artifact service returning screenshots to the UI. Owns the volume.
  • skyvern-uipublic.ecr.aws/skyvern/skyvern-ui:latest, same repository. React workflow builder plus its session-token server.
  • gatewaycaddy:2-alpine. One origin, basic auth, and proxying for the API, artifacts and live-view WebSockets.
  • Postgres — Railway's managed PostgreSQL, holding workflows, runs, steps and credential metadata.

Environment Variables Reference

VariableServicePurpose
GATEWAY_PASSWORDgatewayPassword for the public URL. Set this.
GATEWAY_USERNAMEgatewayBasic-auth username, defaults to admin
OPENAI_API_KEYskyvernEnables OpenAI; the matching provider flag is set for you
ANTHROPIC_API_KEYskyvernAlternative provider — set exactly one key
LLM_KEYskyvernOverrides the default model for your provider
SECRET_KEYskyvernSigns the organization API token; keep it stable
ENCRYPTOR_AES_SECRET_KEYskyvernEncrypts the credential vault; keep it stable
MAX_STEPS_PER_RUNskyvernCaps model spend per run

Deployment Dependencies

Hardware Requirements for Self-Hosting Skyvern

Chromium dominates the footprint; concurrent runs each open their own browser context, so raise RAM before CPU.

ResourceMinimumRecommended
CPU2 vCPU4 vCPU
RAM4 GB8 GB
Storage5 GB volume20 GB volume
DatabasePostgreSQL 14+PostgreSQL 18

Self-Hosting Skyvern

Upstream ships a Docker Compose stack. Clone the repository and start it, in a shell:

git clone https://github.com/Skyvern-AI/skyvern.git
cd skyvern
docker compose up -d

The UI is then on http://localhost:8080, the API on http://localhost:8000. To configure a model provider without editing files, use the interactive setup:

pip install skyvern
skyvern init llm
skyvern run all

Compose shares a bind mount between the API and UI containers and starts a VNC bridge for its live view. The template replaces both: the artifact reader sits beside the volume that owns the data, and the live view uses the Chrome DevTools screencast.

Is Skyvern Free to Self-Host?

Skyvern is open source under AGPL-3.0, with no licence fee or seat limit on the self-hosted build; a managed cloud with usage-based pricing exists alongside it. Self-hosting on Railway costs infrastructure only, plus what your model provider charges per run — usually the larger number. A run is about one vision-model call per browser step, so cap MAX_STEPS_PER_RUN while experimenting.

FAQ

What is Skyvern? An open-source AI agent that completes tasks in a real web browser from a natural-language description, using vision models rather than hard-coded selectors, so it survives page changes.

What does this Railway template deploy? Four services: the API with its Chromium runtime, the React workflow builder, managed PostgreSQL, and a Caddy gateway that publishes one password-protected URL and keeps the rest private.

Why does the template include PostgreSQL and a volume? PostgreSQL holds workflows, run history and step records. The volume holds what a run writes to disk — screenshots, recordings, HAR files, downloads and the credential vault — so it survives redeploys.

Do I need an OpenAI key to self-host Skyvern? Not to deploy it — the stack starts and the UI works with no provider configured. A run needs a vision-capable model, so set one of OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, OPENROUTER_API_KEY or GROQ_API_KEY.

How do I secure a self-hosted Skyvern instance? The open-source build has no login of its own, which is why the gateway enforces basic auth in front of everything. Set a strong GATEWAY_PASSWORD, and add a custom domain on the gateway service for your own hostname.

Can Skyvern log into websites on my behalf? Yes. Store site credentials in the built-in vault, or connect Bitwarden or 1Password, and reference them by name from a workflow. Skyvern handles TOTP codes, and the live browser view lets you take over when a site needs something the agent cannot supply.

How do I call self-hosted Skyvern from my own code? Every action in the UI is a REST endpoint, wrapped by the Python SDK. Send the organization API key from the Settings page as an x-api-key header; requests also pass the gateway's basic auth.


Template Content

More templates in this category

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

okisdev
116
View Template
stella
Self-host stella with web, API, Postgres, Redis, and object storage.

Jan Kubica
5
View Template
Hermes Agent | OpenClaw Alternative with Dashboard
Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

codestorm
64