---
title: "Deploy Tallylamp"
description: "Persistent Chrome for MCP agents. Watch live and take control when needed."
category: "AI/ML"
url: https://railway.com/deploy/tallylamp
---

# Deploy Tallylamp

Persistent Chrome for MCP agents. Watch live and take control when needed.

**[Deploy Tallylamp on Railway](https://railway.com/template/tallylamp)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/tallylamp/manifest.json

- **Creator:** nxfi777
- **Category:** AI/ML
- **Total deploys:** 1

## Template content

### Tallylamp https://raw.githubusercontent.com/nxfi777/tallylamp/f169ca78fa1d1eb2bdc898b662a16ed6e1b45f16/dashboard/tallylamp-icon.svg

- **Image:** ghcr.io/nxfi777/tallylamp@sha256:2326b4961e1c84228538a8b8b8b91fe3f1fb749115924f8f4152ebf8418ae268
- **Health check:** /healthz
- **Public domain:** Yes

## Documentation

# Deploy and Host Tallylamp on Railway

Give your AI agent a browser you can watch and take over.

Tallylamp runs Chrome on your server and keeps its profile between sessions.
Your agent drives the browser through MCP. You can watch it live, take control
to sign in or finish a verification step, then return control to the agent.

Tallylamp is open source under the MIT license. You pay Railway for the
infrastructure used by your deployment.

## About Hosting Tallylamp

One prebuilt container with Chrome, Xvfb, and Node.js, plus a persistent volume
at `/data`. The volume holds browser profiles and the SQLite database.
The service provides an authenticated dashboard and an MCP endpoint at `/mcp`.

The template generates a unique `ADMIN_SECRET` for each deployment.
After deploying, copy that value from your service's Railway variables, open
the public domain, and use it to sign into the dashboard.

## Why Deploy Tallylamp on Railway?

Railway provisions the service, HTTPS domain, and persistent volume in your
workspace. The template supplies the healthcheck and a generated dashboard
password. You choose when to upgrade the application.

## Common Use Cases

- Keep a browser profile ready for an agent's recurring tasks.
- Take control to sign in, then let the agent continue.
- Watch a browser session live to inspect what the agent is doing.

## Dependencies for Tallylamp

The public Linux amd64 image includes Node.js 22, Google Chrome, and Xvfb.
SQLite runs in the same container; there is no separate database service to set up.

### Deployment Dependencies

- A Railway account with enough memory for the browsers you run.
- A persistent volume mounted at `/data`, configured by the template.
- The generated `ADMIN_SECRET` from your service's variables, used to sign in.

## Connect your agent

For a client that accepts bearer tokens, create an agent in the dashboard.
Copy its token and configure the client with `https://YOUR_HOST/mcp` and an
`Authorization: Bearer YOUR_AGENT_TOKEN` header.

For a client that requires OAuth, sign into the dashboard first, add the same
MCP URL to your client, and approve the connection on Tallylamp's consent page.
The connector gets its own agent permissions and browser cap.

Ask your agent to create a browser and open a site. Choose **Watch** in the
dashboard to see it, **Take control** to use it yourself, and **Return to agent**
when you're done. Tallylamp blocks agent actions that change the browser while
you have control.

## Updates are your choice

The template uses the public `ghcr.io/nxfi777/tallylamp:0.1.1` image, pinned
to its digest. Automatic image updates are disabled. Pushing source code or
publishing a new release does not upgrade your deployment.

To upgrade, read the release notes, back up your `/data` volume, then change
the image reference in Railway to the new release's digest and deploy it.
Redeploying the existing digest keeps the same application version.

## What to expect

Cookies and profiles survive restarts and redeploys when stored on the volume.
Websites can still expire logins. You can also prepare a profile by hand and
clone it for agents with permission to use profile templates.

Chrome needs memory. Start with a cap of two browsers and budget roughly
1–2 GB per active browser, plus the server. Measure your own workload before
raising the cap.

A volume-backed deployment uses one replica. Redeploys interrupt active browsers;
their profiles remain, and Chrome starts again on the next use. Railway provides
no GPU for this service, and Chrome's renderer sandbox may be unavailable.
The dashboard reports both states. Browsers share the container's isolation boundary.

Tallylamp does not bypass CAPTCHAs or guarantee that sites will accept automation.

## Source and documentation

- [Source code and setup](https://github.com/nxfi777/tallylamp)
- [Railway configuration](https://github.com/nxfi777/tallylamp/blob/main/docs/railway.md)
- [Security model](https://github.com/nxfi777/tallylamp/blob/main/docs/security.md)
- [MCP compatibility](https://github.com/nxfi777/tallylamp/blob/main/docs/mcp-compatibility.md)
- [chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp)
- [Railway volumes](https://docs.railway.com/volumes)


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [stella](https://railway.com/deploy/stella) — Self-host stella with web, API, Postgres, Redis, and object storage.
- [Hermes Agent | OpenClaw Alternative with Dashboard](https://railway.com/deploy/hermes-agent-or-openclaw-alternative-wit) — Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

Open this page in a browser: https://railway.com/deploy/tallylamp
