# Web App

Use the web app to add repositories, run workloads, and inspect results.

Use the web app when you want the full run view: repository setup, workload creation, live logs, captured files, details, and downloadable artifacts.

## Add a Repository

Open [app.workers.io](https://app.workers.io), then go to **Projects**.

If no repositories are connected yet, the app opens the add repository flow. Otherwise, click **New Repository** or press `N`.

Select one or more GitHub repositories and add them as projects. If GitHub is not connected, open **Settings → Integrations** first.

<figure>
  <picture class="theme-screenshot theme-screenshot-light">
    <source
      type="image/webp"
      srcset="/docs/screenshots/optimized/repo-light-1000.webp 1000w, /docs/screenshots/optimized/repo-light-1600.webp 1600w"
      sizes="(min-width: 640px) 620px, calc(100vw - 40px)"
    />
    <img
      src="/docs/screenshots/repo-light.png"
      alt="Workers IO repositories page with connected GitHub repositories and the New Repository button."
      width="3058"
      height="2198"
      loading="lazy"
      decoding="async"
    />
  </picture>
  <picture class="theme-screenshot theme-screenshot-dark">
    <source
      type="image/webp"
      srcset="/docs/screenshots/optimized/repo-1000.webp 1000w, /docs/screenshots/optimized/repo-1600.webp 1600w"
      sizes="(min-width: 640px) 620px, calc(100vw - 40px)"
    />
    <img
      src="/docs/screenshots/repo.png"
      alt="Workers IO repositories page with connected GitHub repositories and the New Repository button."
      width="3058"
      height="2198"
      loading="lazy"
      decoding="async"
    />
  </picture>
  <figcaption>
    Repositories show the GitHub projects available for workload runs.
  </figcaption>
</figure>

A repository must be prepared before it can run workloads. If the workload form says the project needs prepare, open the project, request a prepare, and wait for it to finish before starting a run.

## Create a Workload Run

Go to **Workloads**, then click **New Workload** or press `N`.

Fill in:

- `Project`: the synced repository to run.
- `Workload file`: the repo-relative file that defines the workload.
- `Fault Models`: optional fault files discovered from `.workers/fault/`. Leave empty for baseline.
- `External Mocks`: shown automatically when `.workers/external-mocks.json` exists.
- `Command`: the command to execute for each run.
- `Memory (MB)`: memory available to each run.
- `Timeout (s)`: maximum wall-clock time for each run.
- `Depth`: how much coverage to run for each selected fault model.

Click **Start** to create the simulation.

<figure>
  <picture class="theme-screenshot theme-screenshot-light">
    <source
      type="image/webp"
      srcset="/docs/screenshots/optimized/create-light-1000.webp 1000w, /docs/screenshots/optimized/create-light-1600.webp 1600w"
      sizes="(min-width: 640px) 620px, calc(100vw - 40px)"
    />
    <img
      src="/docs/screenshots/create-light.png"
      alt="New Workload dialog with project, workload file, fault models, external mocks, command, memory, timeout, and depth fields."
      width="3058"
      height="2198"
      loading="lazy"
      decoding="async"
    />
  </picture>
  <picture class="theme-screenshot theme-screenshot-dark">
    <source
      type="image/webp"
      srcset="/docs/screenshots/optimized/create-1000.webp 1000w, /docs/screenshots/optimized/create-1600.webp 1600w"
      sizes="(min-width: 640px) 620px, calc(100vw - 40px)"
    />
    <img
      src="/docs/screenshots/create.png"
      alt="New Workload dialog with project, workload file, fault models, external mocks, command, memory, timeout, and depth fields."
      width="3058"
      height="2198"
      loading="lazy"
      decoding="async"
    />
  </picture>
  <figcaption>
    The workload form records the command, selected files, and run settings used
    for the simulation.
  </figcaption>
</figure>

## Read the Workloads Page

The left side lists recent runs. Each row shows the run state, command, project or fault, elapsed time, and failure category when available.

The right side shows the selected run.

Tabs:

- `Logs`: captured output from the command.
- `Workload`: workload file captured for the run.
- `Fault`: selected fault file. Baseline runs have no fault.
- `External Mocks`: mock configuration captured for the run.
- `Details`: command, invariant results, project, branch, timing, memory, timeout, seed, fault, and run phases.
- `Artifacts`: downloadable files produced by the run.

Live runs can be stopped from the run actions. Completed record runs expose a rerun action that starts a fresh run with the same details.

<figure>
  <picture class="theme-screenshot theme-screenshot-light">
    <source
      type="image/webp"
      srcset="/docs/screenshots/optimized/check-light-1000.webp 1000w, /docs/screenshots/optimized/check-light-1600.webp 1600w"
      sizes="(min-width: 640px) 620px, calc(100vw - 40px)"
    />
    <img
      src="/docs/screenshots/check-light.png"
      alt="Workers IO workloads page showing recent runs, a selected run, invariant results, properties, timing, seed, fault, and rerun action."
      width="3058"
      height="2198"
      loading="lazy"
      decoding="async"
    />
  </picture>
  <picture class="theme-screenshot theme-screenshot-dark">
    <source
      type="image/webp"
      srcset="/docs/screenshots/optimized/check-1000.webp 1000w, /docs/screenshots/optimized/check-1600.webp 1600w"
      sizes="(min-width: 640px) 620px, calc(100vw - 40px)"
    />
    <img
      src="/docs/screenshots/check.png"
      alt="Workers IO workloads page showing recent runs, a selected run, invariant results, properties, timing, seed, fault, and rerun action."
      width="3058"
      height="2198"
      loading="lazy"
      decoding="async"
    />
  </picture>
  <figcaption>
    The run detail view keeps logs, captured inputs, invariant results, timing,
    and artifacts in one place.
  </figcaption>
</figure>

## Recommended Web Loop

1. Add and sync the repository.
2. Start a baseline run with depth `1`.
3. Add one fault model and increase depth.
4. Open failed runs and read `Logs`, `Details`, and `Artifacts`.
5. Fix the code, sync again, and rerun the same workload and fault model.
6. Use rerun on the completed run to verify the same case.
7. Increase depth only after the specific failure is gone.