> ## Documentation Index
> Fetch the complete documentation index at: https://docs.repixa.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Setting Up Your Sandbox

> How to create a sandbox environment for Repixa across Vercel, Railway, Render, and more

# Setting Up Your Sandbox Environment

Repixa needs a **live, publicly accessible URL** of your product to run demos. This should be a separate environment from your production app — a staging or preview deployment with demo-safe data that Laura can freely navigate.

There are no Repixa-specific variables to set. You just deploy a separate instance of your app on your existing hosting provider and paste the URL into the Repixa dashboard.

<Info>
  Your sandbox URL is entered in the dashboard under **Agents → Your Agent → Sandbox URL**. It must be a public HTTPS URL with no login wall blocking the entry screen.
</Info>

## What you need

* A running instance of your app on a **separate branch** (e.g. `sandbox`, `staging`, or `demo`) or a separate project entirely
* A **public URL** — no auth wall, no VPN, no IP restrictions
* **Demo-safe seed data** — fake accounts, not real customer data

***

## Vercel

Best for: **Next.js, React, SvelteKit, Nuxt**

Vercel automatically creates a **Preview Deployment** for every branch that isn't your production branch. Each preview gets its own unique URL you can use as your sandbox.

<Steps>
  <Step title="Push a sandbox branch">
    Create and push a branch named `sandbox` or `demo` to your repository:

    ```bash theme={null}
    git checkout -b sandbox
    git push origin sandbox
    ```

    Vercel automatically builds it. You'll see the deployment appear in your Vercel dashboard under **Deployments**.
  </Step>

  <Step title="Find your branch URL">
    Vercel generates a **branch-specific URL** that always points to the latest deploy of that branch — find it in **Deployments → filter by branch name**.

    It follows the pattern: `https://your-app-git-sandbox-yourteam.vercel.app`
  </Step>

  <Step title="Disable Vercel Authentication (if enabled)">
    If your project has **Deployment Protection** turned on, Repixa won't be able to reach the URL.

    Go to **Project → Settings → General → Deployment Protection** and set it to **Disabled** or **Vercel Authentication (Production only)** so preview URLs stay public.
  </Step>

  <Step title="Paste the URL into Repixa">
    Copy the branch URL and paste it into **Agents → Your Agent → Sandbox URL** in the Repixa dashboard.
  </Step>
</Steps>

<Tip>
  On Vercel **Pro or Enterprise**, you can create a named **Custom Environment** under **Project → Settings → Environments → Create Environment**, name it `sandbox`, attach a persistent custom domain (e.g. `sandbox.yourdomain.com`), and track it to your `sandbox` branch for a stable branded URL.
</Tip>

***

## Railway

Best for: **full-stack apps with databases**

Railway lets you create isolated **environments** inside the same project. Each environment has its own services, variables, and URLs — completely separate from production.

<Steps>
  <Step title="Create a new environment">
    In your [Railway](https://railway.app) project, click the environment dropdown at the top and select **+ New Environment**.

    Choose **Duplicate Environment** to copy your production setup (services + variables), then name it `sandbox`.
  </Step>

  <Step title="Review staged changes before deploying">
    When duplicating, Railway stages all service changes for review first. Update any variables that should differ (e.g. point to a separate database), then click **Deploy** to spin everything up.
  </Step>

  <Step title="Generate a public domain for your frontend service">
    Click on your frontend service → **Settings → Networking → Generate Domain**.

    You'll get a URL like `https://your-app-production.up.railway.app` — for the sandbox environment it will be a separate domain scoped to that environment.
  </Step>

  <Step title="Paste the URL into Repixa">
    Copy the domain and paste it into the Repixa dashboard under **Agents → Your Agent → Sandbox URL**.
  </Step>
</Steps>

<Tip>
  Railway also supports **PR Environments** — a temporary environment spun up automatically for every pull request, then destroyed when the PR closes. Enable them under **Project Settings → Environments → Enable PR Environments**. Each PR gets its own URL you can use as a short-lived sandbox.
</Tip>

***

## Render

Best for: **Node.js, Python, Docker, full-stack apps**

Render's **Preview Environments** automatically spin up a full isolated copy of your app per pull request, based on your `render.yaml` Blueprint.

<Steps>
  <Step title="Ensure you have a render.yaml">
    Your repo needs a `render.yaml` at the root defining your services. If you don't have one, follow [Render's Blueprint docs](https://render.com/docs/blueprint-spec).
  </Step>

  <Step title="Enable Preview Environments in render.yaml">
    Add the `previews` key to your `render.yaml`:

    ```yaml theme={null}
    previews:
      generation: manual
    services:
      - type: web
        name: your-app
        runtime: node
        buildCommand: npm install && npm run build
        startCommand: npm start
    ```

    Use `generation: automatic` for a preview on every PR, or `manual` to trigger only when you add `[render preview]` to a PR title.
  </Step>

  <Step title="Open a pull request">
    Open a PR on GitHub. Render spins up a full copy of your stack and posts the URL as a deployment status in the PR.
  </Step>

  <Step title="Get the preview URL">
    Click **View deployment** in the PR, or find it in the [Render Dashboard](https://dashboard.render.com). The URL looks like `https://your-app-pr-42.onrender.com`.
  </Step>

  <Step title="Paste the URL into Repixa">
    Copy the preview URL and paste it into the Repixa dashboard.
  </Step>
</Steps>

<Warning>
  Free tier Render services spin down after 15 minutes of inactivity. Upgrade to a paid plan to keep your sandbox always-on — a cold start mid-demo will interrupt Laura.
</Warning>

***

## Fly.io

Best for: **Docker-based apps**

On Fly.io, the cleanest way to maintain a sandbox is to deploy a **separate app** with its own name using a dedicated `fly.toml` config.

<Steps>
  <Step title="Create a separate fly.toml for your sandbox">
    Copy your existing config:

    ```bash theme={null}
    cp fly.toml fly.sandbox.toml
    ```

    Edit `fly.sandbox.toml` and change the app name:

    ```toml theme={null}
    app = "your-app-sandbox"
    ```
  </Step>

  <Step title="Launch the sandbox app">
    ```bash theme={null}
    fly launch --config fly.sandbox.toml --name your-app-sandbox
    ```
  </Step>

  <Step title="Deploy">
    ```bash theme={null}
    fly deploy --config fly.sandbox.toml
    ```
  </Step>

  <Step title="Get the URL">
    Your sandbox is live at `https://your-app-sandbox.fly.dev`. Verify:

    ```bash theme={null}
    fly status --config fly.sandbox.toml
    ```
  </Step>

  <Step title="Paste the URL into Repixa">
    Copy `https://your-app-sandbox.fly.dev` and paste it into the Repixa dashboard.
  </Step>
</Steps>

<Tip>
  Fly.io also supports **GitHub Actions review apps** via the [`superfly/fly-pr-review-apps`](https://github.com/superfly/fly-pr-review-apps) action — auto-creates and destroys a sandbox app per PR. Each PR gets a URL at `https://pr-{number}-{app-name}.fly.dev`. See [Fly's review apps guide](https://fly.io/docs/blueprints/review-apps-guide/) for setup.
</Tip>

***

## Netlify

Best for: **static sites, JAMstack frontends**

Netlify offers two approaches: a **Branch Deploy** (persistent, always-on) or a **Deploy Preview** (per pull request).

### Option A — Branch Deploy (recommended for sandbox)

<Steps>
  <Step title="Push a sandbox branch">
    ```bash theme={null}
    git checkout -b sandbox
    git push origin sandbox
    ```
  </Step>

  <Step title="Enable branch deploys in Netlify">
    Go to **Project Configuration → Build & Deploy → Continuous Deployment → Branches and deploy contexts → Configure**.

    Select **Let me add individual branches**, add `sandbox`, and save.
  </Step>

  <Step title="Get the branch URL">
    Netlify deploys the branch to:

    `https://sandbox--your-site.netlify.app`

    Find the exact URL in **Deploys → filter by branch** in your Netlify dashboard.
  </Step>

  <Step title="Paste the URL into Repixa">
    Copy the branch URL and paste it into the Repixa dashboard.
  </Step>
</Steps>

### Option B — Deploy Preview (per PR)

When you open a pull request, Netlify automatically builds a Deploy Preview and posts the URL in the PR:

`https://deploy-preview-42--your-site.netlify.app`

Open a PR → wait for the build → copy the URL from the PR comment → paste into Repixa.

<Warning>
  If you have **password protection** enabled on your Netlify site, disable it under **Project Configuration → Access & Security** — otherwise Repixa can't access the URL.
</Warning>

***

## Checklist before pasting the URL into Repixa
