Deploy Omnara
Open-source managed agent platform: run AI agents on any model and machine
redis
Just deployed
Just deployed
Just deployed
omnara-blobs
Bucket
Just deployed
Deploy and Host Omnara on Railway
Omnara is an open-source managed agent platform, a self-hostable alternative to Claude Managed Agents and OpenAI's Agents API. You launch agents through a REST API, a TypeScript SDK, a CLI or the dashboard, on any model you bring a key for, and they run commands on machines you connect: your laptop, a VM, or sandboxes from providers like E2B, Daytona and Modal.
About Hosting Omnara
Omnara is a control plane: an API, workers that run the agent loop, a maintenance process and a web dashboard, backed by Postgres, Redis and object storage. Every step of every agent is saved in Postgres, so agents pick up where they left off after a restart.
This template runs the whole control plane on Railway. The API, workers, maintenance and dashboard share one container (upstream's unmodified v0.2.10 images, behind one nginx), next to Postgres 18, Redis and a Railway bucket. The instance belongs to you alone: only the admin email you enter can create an account.
Common Use Cases
- Run coding, review or SRE agents from Slack, Discord, GitHub pull requests or a cron schedule
- Give your own product an agents API on any model, with the agent history in your own Postgres
- Let agents run commands on your laptop or servers with no inbound ports, through the
omnaraddaemon - Share skills, secrets, memory stores and model providers across projects with per-tool approval rules
Dependencies for Omnara Hosting
- Postgres 18 for agent state and the event log
- Redis for wakeups and rate limits
- A Railway bucket for attachments, tool outputs and skill archives
- A Railway volume for agent memory stores
Deployment Dependencies
- Omnara source and docs: https://github.com/omnara-ai/omnara and https://docs.omnara.com
- Container image for this template: https://github.com/hmseeb/omnara-railway
- A model provider key (OpenAI, Anthropic, OpenRouter, Bedrock, or any compatible endpoint), added in the dashboard after deploying
Implementation Details
Logging in. The deploy form asks for one thing, OMNARA_ADMIN_EMAIL. The template generates your password in OMNARA_ADMIN_PASSWORD, and the first boot creates your admin account with both. When the deploy is up, open the omnara service's Variables tab, copy OMNARA_ADMIN_PASSWORD, and log in at your public URL with that email and password. No email is sent and no mail server is needed.
Changing the password. Edit OMNARA_ADMIN_PASSWORD and redeploy; the new value replaces the old one. A password changed in the app stays until you edit the variable again. Upstream's rule applies: 12 or more characters with upper and lower case, a number and a symbol. A value that breaks the rule is skipped with WARNING: OMNARA_ADMIN_PASSWORD was not applied in the logs, and the previous password keeps working. Lost it? Set a new value and redeploy.
Nobody else can sign up. Upstream Omnara is multi-tenant with open signup. This template locks it to you: signup and password reset are switched off whenever the app is reachable, and your account is created by the container itself before it opens to the internet. This makes it a single-user instance: invitations would need the invitee to sign up. Give your apps and CI access with organization API keys from the dashboard instead.
First steps in the dashboard. A new instance has no models or machines. Add a model provider and a model, then connect a machine under Machines (it runs omnarad, which connects out to your Railway URL), and share both with your project. Then launch agents from the dashboard or point the CLI at your instance:
npx omnara config --api-url https://<your-domain>/api/v1 --issuer-url https://<your-domain>
npx omnara login
Variables
| Variable | What it does |
|---|---|
OMNARA_ADMIN_EMAIL | Email of the admin account, the only account on the instance |
OMNARA_ADMIN_PASSWORD | Admin password, generated per deploy. Edit and redeploy to change it |
OMNARA_PUBLIC_URL | Public origin. Change to https://your.domain after adding a custom domain, then redeploy |
OMNARA_ENCRYPTION_KEY_HEX | Encrypts stored secrets and provider keys. Changing it makes them unreadable |
OMNARA_SKILL_SIGNING_KEY_HEX | Signs skill downloads for machines |
EXA_API_KEY | Optional. Enables the built-in web search tool |
Any other upstream setting from the configuration reference can be added as a variable on the omnara service.
Troubleshooting
- Deploy fails with
OMNARA_BLOB_S3_... resolved empty (a known Railway bucket-template bug): open theomnaraservice's Variables, re-save the named variable unchanged, and deploy again. - Changing
OMNARA_ADMIN_EMAILafter the first boot: the account keeps its original email, andOMNARA_ADMIN_PASSWORDchanges are skipped until the variable matches it again. Log in with the original email. - Custom domain shows "not found": set
OMNARA_PUBLIC_URLto the new domain and redeploy. The API answers only on the host in that variable.
Scaling. Workers are stateless. To run more agent turns at once, raise OMNARA_WORKER_CAPACITY (default 4) or give the service more resources. Keep one replica, because the memory volume belongs to one container.
Why Deploy Omnara on Railway?
Omnara needs a public HTTPS address so machines, sandboxes, Slack and GitHub can reach it, plus a database, a cache and object storage. Railway gives you all of them in one click, wired together, with nothing to operate. Your agent history stays in your own Postgres.
Template Content
redis
redis:8.2.1OMNARA_ADMIN_EMAIL
Email you log in with. The admin account is created for it on first boot. Nobody else can sign up.
omnara-blobs
Bucket
