A preview app for every pull request.

Give every change a running app on a shareable URL. Preview apps start on demand and shut down when idle, so your agents and your team can verify a change in a browser before merging. All powered by the same configuration you already use for CI/CD and Agent Sandboxes.

Give every change a URL to click.

Reading a diff only tells you so much. A preview app lets an agent or a reviewer actually click through the change in a real browser — before it ever merges. Open the URL and the app spins up in seconds. Walk away and it shuts down on its own.

On open
  • Someone opens the preview URL
  • The app starts on demand~3s
  • Verify the change in a browser
On idle
  • Traffic stops
  • The app shuts down automatically10m idle
  • Restarts on the next request
my-app-pr-482--acme.us.rwx.run
RWX
App Starting

Your app is starting. This page will refresh automatically.

Usually starts in about 3s.

The same platform your build runs on, serving your app.

Preview apps are just another task in your run. They inherit the same content-based caching, the same compute, and the same configuration your CI/CD pipelines and Agent Sandboxes already use.

Starts on demand, sleeps when idle.

Your app boots in about three seconds when someone opens the URL. After ten minutes without traffic it shuts down on its own. You never pay for an app nobody is looking at, and the next request restarts it automatically.

my-app-pr-482--acme.us.rwx.run
RWX
App Starting

Your app is starting. This page will refresh automatically.

Usually starts in about 3s.

Powered by your existing config.

No new platform to learn and no bespoke preview infrastructure to maintain. Add an app block to a task and give it a port. The same run definition drives CI/CD, sandboxes, and preview apps.

tasks:
  - key: web
    use: [build]
    app:
      endpoint: my-app-pr-${{ init.pull-request-number }}
      port: 3000
    run: pnpm start

A friendly URL per pull request.

Each endpoint gets a stable, shareable URL that always reflects the latest build for that branch. Drop it in a PR comment for a reviewer, or hand it to an agent to verify its own work. Canonical URLs stay pinned to a specific build when you need a fixed target.

Friendly URL
my-app-pr-482--acme.us.rwx.run
Always the latest build for this PR
Canonical URL
a1b2c3d4--acme.us.rwx.run
Pinned to one specific build

Real apps with real services.

Your app can depend on a database, a cache, or anything else it needs. Run backing services as background processes with ready-checks so the app only comes up once they're available. Spinning up your containers is as easy as docker compose up.

❯_Read more about preview apps

clone2s
buildCached
migrateCached
servicesRunning
webRunning

Ship a preview app in three steps.

Serve a running app from the same run that already builds and tests your code.

❯_Read the preview apps guide

Install RWX

Add the CLI and install the RWX skill.

 brew install rwx-cloud/tap/rwx
 rwx skill install

Add an app task

Give a task an app block with an endpoint and a port.

app:
  endpoint: my-app
  port: 3000

Open the URL

Trigger a run and open the app URL. It starts on demand.

 rwx run
 open https://your-app--acme.us.rwx.run

Verify before you merge.