A preview app for every change.
Give every change a running app on a shareable URL. Review it in a browser, run integration tests against it, or let an agent QA its own work. It's a fresh environment per change instead of one shared staging server.
Give every change a URL to click.
- Someone opens the preview URL
- The app starts on demand~3s
- Verify the change in a browser
- Traffic stops
- The app shuts down automatically10m idle
- Restarts on the next request
Your app is starting. This page will refresh automatically.
Usually starts in about 3s.
The same platform your build runs on, serving your app.
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 dev environment per change.
Every change gets its own isolated app instead of taking turns on one shared staging environment, with no per-branch namespaces to hand-roll. Each one is ephemeral, booting in about three seconds when someone opens the URL and cleaning itself up once the change is gone.
Your app is starting. This page will refresh automatically.
Usually starts in about 3s.
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.
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 inside the app task with ready-checks so the app only comes up once they're available. Spinning up your containers is as easy as docker compose up.
Ship a preview app in three steps.
Install RWX
Add the CLI and install the RWX skill.
❯ brew install rwx-cloud/tap/rwx
❯ rwx skill installAdd an app task
Give a task an app block with an endpoint and a port.
app:
endpoint: my-app
port: 3000Open the URL
Trigger a run and open the app URL. It starts on demand.
❯ rwx run
❯ open https://my-app--acme.us.rwx.run