Skip to content

Stop pushing to debug your workflows

Overwire runs your GitHub Actions workflows locally.
Skip, mock, or live-execute any step, and simulate the platform around the run.

Watch the run, not the log scroll

Jobs, steps, and modes on one canvas. The map updates as the run executes, so you can see what ran live, what was mocked, and what was skipped.

.github/workflows/release.yml
skipmocklive
build3 stepsactions/checkoutLIVEsetup-nodeMOCKnpm run buildLIVEtest3 stepsnpm testLIVEcoverage reportSKIPupload-artifactMOCKlint2 stepseslint .LIVEprettier --checkSKIPdeploy2 stepsconfigure-awsMOCK./deploy.shMOCK

Run the workflow,
mock everything around it

Skip, mock, or live-execute

Every step gets a mode. Skip what you don't need, mock third-party actions against a declared contract, live-execute the rest in a real container.

The Overwire support plan panel: each step of a lint job with skip, mock, and live mode chips, mock-contract badges, and live-support notes

Real runner container

Steps execute inside a Docker container that mirrors the GitHub Actions runner environment. Same tools, same paths, same behavior.

Multi-repo workspaces

Test workflows that span multiple repositories. Overwire manages workspace peers and resolves cross-repo references.

Governance and rulesets

Validate branch protection rules, required status checks, and CODEOWNERS locally before pushing.

API mocking

Declare mock responses for GitHub API calls. Unmatched requests are captured and turned into suggested mocks.

Full expression engine

Evaluate ${{ }} expressions against real workflow context. Matrix expansion, needs references, and all GitHub builtins supported.

Init, configure, run

01

Initialize

Run overwire init in your repo. It scaffolds a .overwire/ config directory alongside your existing .github/workflows tree.

$ overwire init
02

Configure modes

Set each step to skip, mock, or live. Mock contracts declare expected inputs and synthesized outputs for external actions.

03

Run locally

Execute the workflow. Live steps run in a Docker container and logs stream as they happen. Iterate without pushing.

$ overwire run build.yml

Know the merge outcome before you push

Workflows depend on more than their steps. Overwire reproduces the platform surface they run against, all of it backed by plain files in your repo.

Branch rulesets and required checks

Import GitHub ruleset exports and evaluate them against local runs.

PR scenarios with merge prediction

Define pull request scenarios and see whether the merge would go through.

Commit statuses and check runs

Seed external statuses so required contexts resolve the way they would upstream.

Environment approval gates

Protection rules pause the run and wait for your approval, locally.

Variables and secrets

Plain config files back the vars and secrets contexts. Values stay on your machine.

API mocks with capture and suggest

Declare mock routes. Unmatched API calls are captured and suggested back to you.

Update release workflow#142
Required checks
  • ci / build (push)success
  • ci / test (push)success
  • lint / eslintin progress
  • security / scanexpected
Merge would be blocked: 1 required check has not passed
.overwire/api-mocks.ymlsuggested
routes:  - method: GET    path: /repos/{owner}/{repo}/releases/latest    status: 200    body: { tag_name: v2.3.1 }  # captured from the last run  - method: POST    path: /repos/{owner}/{repo}/statuses/{sha}    status: 201

Debug at the speed of local.

Everything Overwire does, free, on your machine.

v1.0.2 · July 11, 2026All downloadsInstallation guide

macOS

Signed and notarized builds for Apple Silicon and Intel.

Windows

Signed installer for 64-bit Windows 10 and 11.

64-bit · .exe

Installs machine-wide; Windows will ask for administrator approval.

64-bit · .msiComing soon

Overwire CLI

The CLI runs the same workflows from your shell or CI, free.

npm install -g overwire