Guide
Quickstart
The fastest path from nothing to a running, logged-in profile you can watch in your browser.
1. Run Morrow
Two ways to run it — pick one.
With Node, for local development (hot reload via tsx):
cp .env.example .env # set MORROW_API_KEY
npm install
npm run dev # http://localhost:3000Or with Docker, using the published ghcr.io/jekyo/morrow image:
docker run -e MORROW_API_KEY=secret -v morrow-data:/data -p 3000:3000 ghcr.io/jekyo/morrow:latestThe Docker image persists everything under /data — mount a volume there (as above) or profiles disappear when the container is removed. See Self-hosting for the full environment variable reference.
2. Set MORROW_API_KEY
Every Morrow instance is gated by a single API key. It's required at boot — MORROW_API_KEY is required is thrown and the server refuses to start without it. Set it in .env (dev) or as an environment variable (Docker). Every request needs it as Authorization: Bearer $MORROW_API_KEY.
3. Create a profile
From the API:
curl -X POST http://localhost:3000/api/v1/profiles \
-H "Authorization: Bearer $MORROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "research-eu", "locale": "de-DE"}'Or from the dashboard: open http://localhost:3000/, enter your MORROW_API_KEY once (it's kept in the browser's localStorage and sent with every request), then create a profile from the Profiles page.
4. Start it
curl -X POST http://localhost:3000/api/v1/profiles/research-eu/start \
-H "Authorization: Bearer $MORROW_API_KEY"This launches the Camoufox browser and, on first start, pins its spoofed fingerprint for every future start.
5. Open the viewer
Open the profile in the dashboard and you'll see the live remote browser streaming as ~10fps JPEG frames. Press Take Control to drive it by hand — log into a site, and that session is written to the profile like any other, so it's still there next time you start it. See Live viewer for the full walkthrough.
Where to next
- Profiles — persistence, lifecycle, and config in depth.
- Playwright — attach a stock client to the same browser.
- Scraping API — one-shot markdown/screenshot/content extraction.
- MCP — point an AI agent at the same profile.