Deploy OpenMuse

CopilotKit's personal agent with a browser, files and tasks, on Postgres

Deploy OpenMuse

Deploy and Host OpenMuse on Railway

OpenMuse is CopilotKit's open-source personal agent: a chat app with its own browser, files and background tasks, where you can watch the agent work and take over its browser. This template runs it as upstream designed it for hosting: the API, a private Chromium worker and the web app, with Postgres.

About Hosting OpenMuse

OpenMuse has no releases yet and changes daily, so the template builds a pinned commit (d0b3a6b, 2026-09-29) rather than whatever is newest.

Two changes from upstream's own cloud setup:

  • The API uses Railway Postgres instead of its embedded database. That embedded store is why upstream sizes the API at 2 GB; here it idled at 0.15 GB.
  • The browser worker has no public address. It listens on Railway's private network and only the API talks to it, with a generated shared secret.

Everything else is generated at deploy: OPENMUSE_ACCESS_KEY (what you sign in with), the token encryption key and the worker secret. You bring two things:

  • A CopilotKit Intelligence key (CPK_INTELLIGENCE_API_KEY). OpenMuse stores its chat threads there and won't start without one. The free plan covers one developer: run npx copilotkit@latest login, then npx copilotkit@latest project select.
  • A model key. The default is MODEL=openai/gpt-5-mini with OPENAI_API_KEY; Anthropic (anthropic/...) and Google (google/...) work too. For OpenRouter, set OPENAI_BASE_URL=https://openrouter.ai/api/v1 and MODEL=openai//.

Before publishing I tested it on Railway with OpenRouter as the model provider. The API reported live mode with the agent and browser configured, the web app loaded with the API address built in, and the access key signed in. The browser worker opened https://example.com over the private network and read the page back. An agent task read the same page with its browser tool and finished. After restarting the API, the browser worker and Postgres, the same checks passed.

Two things I couldn't test: chat needs a real CopilotKit Intelligence key, and through OpenRouter gpt-4o-mini never called the agent's tools while gpt-5-mini did.

Memory at idle: API 0.15 GB, browser worker 0.25 GB (0.48 GB while browsing), web app 0.02 GB, Postgres 0.08 GB. That's about $5 a month on Railway's usage pricing, plus your model and CopilotKit usage.

Common Use Cases

  • A personal agent that reads pages, fills PDFs and runs tasks in the background while you do something else
  • Watching an agent browse and taking over its browser when a page needs you
  • A starting point for your own CopilotKit / AG-UI agent app, running on your infrastructure

Dependencies for OpenMuse Hosting

A CopilotKit Intelligence key and a model key (OpenAI, Anthropic, Google, or an OpenAI-compatible gateway such as OpenRouter).

Deployment Dependencies

Implementation Details

OPENMUSE_URL           # open this and sign in with OPENMUSE_ACCESS_KEY
MODEL                  # provider/model, default openai/gpt-5-mini
BROWSER_WORKER_URL     # the private Chromium worker, reached only by the API

The optional Linux computer from upstream is off: it needs a Docker engine, which Railway services don't have. The web app has the API address built in at build time, so after changing the API's domain, redeploy the OpenMuse service.

Why Deploy OpenMuse on Railway?

The agent keeps working while your laptop is closed, and its browser, files and task history live on volumes and in Postgres. Four services and their private networking come up from one deploy.


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
7
View Template
Hermes Agent | OpenClaw Alternative with Dashboard
Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

codestorm
82