Deploy Executor v2 (Self-Hosted)
Self-host the Executor v2 beta to connect any agent to everything.
Just deployed
/app/data
Deploy and Host Executor v2 (Self-Hosted) on Railway
Executor is a tool gateway for AI agents. It connects agents to your apps and accounts through one MCP endpoint, with organizations, invitations and browser sign-in. This template runs the Executor v2 beta on Railway with persistent storage and a public HTTPS domain.
About Hosting Executor v2 (Self-Hosted)
This template deploys the official self-hosted image ghcr.io/usefulsoftwareco/executor-selfhost:2.0.0-beta.53 as a single Railway service. It mounts persistent storage at /app/data, exposes the dashboard, API and MCP endpoint through a public domain, and uses /health as the deployment healthcheck. Open the domain after the first deployment to create the administrator account and organization.
Common Use Cases
- Running a self-hosted tool gateway for AI agents.
- Connecting agents to Gmail, GitHub, Linear, Notion and other apps through one MCP endpoint.
- Managing organizations, members and connected accounts from the browser.
Dependencies for Executor v2 (Self-Hosted) Hosting
- Persistent storage mounted at
/app/data. - Public HTTPS domain for browser sign-in and the MCP endpoint.
- Optional: your own domain with a wildcard record for app web pages.
Deployment Dependencies
- https://executor.sh
- https://executor.sh/docs/run/self-host
- https://github.com/UsefulSoftwareCo/executor
Implementation Details
Executor v2 keeps its embedded PGlite database, app data and generated session and encryption keys in /app/data, so no database service or secret variables are needed. It locks the volume while it runs, so keep one replica. This is a beta release and uses a separate volume from Executor v1; it does not migrate v1 data.
BETTER_AUTH_URL is the public origin for the dashboard, browser sign-in and the MCP endpoint. EXECUTOR_APP_UI_BASE_URL is the base for app web pages: with https://apps.example.com, the app notes in the organization executor is served at notes.executor.apps.example.com. Both start on the generated Railway domain, which can't serve app web pages.
To use your own domain, such as example.com:
- Set
BETTER_AUTH_URLtohttps://example.comandEXECUTOR_APP_UI_BASE_URLtohttps://apps.example.com, and deploy. Do this first: once a wildcard domain exists, Railway may setRAILWAY_PUBLIC_DOMAINto it, and Executor can't start with a wildcard origin. - In the service's networking settings, add
example.comand the wildcard domain*.executor.apps.example.com, both on port 8080.executoris the slug of the first organization; an organization with the slugteamneeds*.team.apps.example.com. - Create the CNAME and TXT records Railway shows for each domain. On Cloudflare, keep them DNS only.
Why Deploy Executor v2 (Self-Hosted) 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 Executor v2 (Self-Hosted) 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