Deploy Obscura – Rust Headless Browser

A Rust headless browser for AI agents, web automation, and data extraction.

Deploy Obscura – Rust Headless Browser

Just deployed

Deploy and Host Obscura Headless Browser (Built in Rust)

About Hosting Obscura

Obscura is a headless browser built in Rust for AI agents, web automation, and data extraction. It runs JavaScript with V8, so your worker can read pages that load their content dynamically. Connect with Puppeteer or Playwright using the Chrome DevTools Protocol (CDP).

Why Deploy Obscura on Railway

Run Obscura as a standalone browser service alongside your app or worker. Railway private networking keeps the connection internal, and a bearer token protects the browser endpoint. The template includes a readiness check and uses the official Obscura v0.2.6 release, verified by checksum.

Common Use Cases

  • Give an AI agent access to public pages that require JavaScript to load.
  • Extract text, links, or tables from public sources.
  • Check that a page renders expected content in an automated test.

Dependencies for Obscura

Deployment Dependencies

The template creates one service. A client in the same Railway environment can connect using Puppeteer or Playwright.

Set the required OBSCURA_CDP_TOKEN to a unique random secret when deploying. Generate one with openssl rand -hex 32.

Connect on Railway

Use the private hostname from a service in the same Railway environment. Set OBSCURA_HOST to the browser service's private hostname and pass that service's OBSCURA_CDP_TOKEN to the client as a secret. Set OBSCURA_PORT to the browser port shown in its startup log. You can set PORT=9222 on the browser service to choose a fixed port.

import puppeteer from 'puppeteer-core';

const browser = await puppeteer.connect({
  browserWSEndpoint: `ws://${process.env.OBSCURA_HOST}:${process.env.OBSCURA_PORT}/devtools/browser`,
  headers: { Authorization: `Bearer ${process.env.OBSCURA_CDP_TOKEN}` },
});

try {
  console.log(await browser.version());
} finally {
  await browser.disconnect();
}

Railway checks GET /healthz. Browser discovery and WebSocket connections require the token. Keep the service on private networking and store the token as a service variable.

Obscura documentation · Upstream release


Template Content

More templates in this category

View Template
N8N Main + Worker
Deploy and Host N8N with Inactive worker.

jakemerson
120
View Template
Evolution API with n8n
Automate WhatsApp workflows with Evolution API, n8n, and Postgres.

codestorm
110
View Template
Postgres Backup
Cron-based PostgreSQL backup to bucket storage

Railway Templates
868