Open source · Apache 2.0

Put it on a URL you own.

Ask your agent for a slide deck, a dashboard, a report or a small tool, and gangway puts it on a URL on your own domain that you can share and keep changing. It runs on your server, and everything it makes stays there.

Soon gangway Cloud, if you would rather not run the host. Get notified →

~/work/q3-review · claude
Previews · gangway
gangway.acme.dev/previews
gangway PreviewsProjectsTemplatesSettings dana@acme.dev admin
Previews 3 live New preview
awakeasleepbuildingfailed any source Search name or repo
NameStateSourceExpiresCreated
Support queue support-queue.acme.dev ↗ awake pracme/support#57 in 6 days 2 h ago
Pricing calculator Password pricing-calc.acme.dev ↗ asleep tarballuploaded files · node in 3 days yesterday
Lunch roulette lunch-roulette.acme.dev ↗ awake imageacme/lunch:1.4 never 3 days ago
open New preview
In short

An open source alternative to Claude artifacts.

What your agent would normally make as an artifact goes to a real HTTPS URL on your server instead, and it keeps iterating on it at the same URL.

01 · You ask /gangway:generate-artifact a pricing calculator for acme
02 · Your agent deploys deploy → building → awake

Over MCP, to your gangway. It checks the routes and reads the logs itself.

03 · You share a URL https://pricing-3f1.acme.dev ↗

Ask for a change and it is patched in place. The link stays the same.

What can be at the URL
Slide decks A presentation from your notes or numbers, presented from a link. q3-review.acme.dev
Charts and graphs A CSV or a query turned into something you can read at a glance. signups-chart.acme.dev
Dashboards Live figures from your own database, refreshed when you open it. ops.acme.dev
Documents and reports Long-form writing laid out to read, print or save as PDF. incident-0917.acme.dev
Prototypes A clickable version of an idea to put in front of people. onboarding-v2.acme.dev
Internal tools A form, a calculator or a small admin screen your team keeps using. pricing-3f1.acme.dev
Landing pages A page for a launch or an event, on your own domain. launch.acme.dev
Games and toys Something small and interactive to share. snake.acme.dev
Three ways in

However the code gets there.

01 · GitHub

Open a pull request

Connect a repository once. Every pull request gets its own preview, updated on each push.

acme/shop#142 → shop-142.acme.dev
02 · MCP

Ask your agent

Point Claude Code, Codex, Cursor or any MCP client at your server. It can deploy, check status, read logs and destroy.

deploy · status · logs · destroy
03 · Browser

Drop a folder

Drag a folder, some files or a .zip into the browser. gangway works out the runtime and builds it.

landing/ → landing-7k2.acme.dev
Lifecycle

Previews look after themselves.

building→

Your source becomes an image.

starting→

The container comes up and passes its check.

awake⇄

Serving on its own HTTPS URL.

asleep→

Idle previews stop. The next request wakes them.

destroyed

Past its expiry, it is removed.

Runtimes & databases

It reads the folder and picks the runtime.

Or bring your own Dockerfile. Attach a database and it is created with the preview and destroyed with it.

Static Node.js Bun Deno Workers Python PHP Own Dockerfile
PostgreSQL MySQL Redis
Self-host

One command on your server.

It asks for what it needs, checks the host, and prints a link that creates the first admin.

You need
  • Docker or Podman, with Compose. Docker Engine, Docker Desktop and Colima all work.
  • A domain with a wildcard DNS record. Point preview.example.com and *.preview.example.com at the server.
  • A wildcard certificate. gangway gets one itself from Let’s Encrypt with a Cloudflare API token, or the reverse proxy you already run holds it.
  • A server people can reach, on 443 or any port you choose.

Only trying it on a laptop? Skip the domain and certificate: it runs on preview.localhost (experimental).

Run it on the host
curl -fsSL gangway.sh/install | sh

As root or a user in the docker group. Run it again to upgrade: if the new version does not come up healthy, it puts the previous one back.

  1. Asks for your domain and who holds port 443.
  2. Checks Docker, DNS and the ports, then writes .env and compose.yaml.
  3. Starts gangway and prints a one-time link to create the first admin.
Flags, platforms and installing by hand ↗
FAQ

Questions

What do I need to run it?

One Docker host, a domain and a wildcard DNS record such as *.acme.dev. gangway runs as one container on that host and drives it with docker compose.

Who holds the certificate?

Either the reverse proxy you already run, with a wildcard certificate, or gangway itself through ACME with a DNS challenge.

Where does my data live?

In a SQLite database, logs and scratch space under the state path you choose, on your server. Nothing is sent anywhere else.

Which agents can deploy?

Any MCP client. There is a plugin for Claude Code and Codex; Cursor and VS Code connect by URL. Your gangway’s Account page shows the exact commands with your URL filled in.

Do pull requests from forks get previews?

No. Pull requests from forks are skipped: GitHub gives their workflow runs no OIDC token.

Who can see a preview?

You choose per preview: public, only gangway users, or behind a password. Previews bind to the host’s 127.0.0.1, so gangway is the only way in.

Is there a hosted version?

gangway Cloud is coming, for individuals and small teams who want it handled for them. Join the waitlist to hear when it launches.

Self-hosted Free · Apache 2.0

Run it on your own host.

Every feature, no limits. Clone the repo and start.

Get it on GitHub ↗
Cloud Coming soon

Handled for you.

For individuals and small teams. Permanent hosting and domain registration, with no server to run.

Get notified