Skip to content

Initialize a project

Overwire keeps all of its state in a flat .overwire/ directory next to your .github/ tree. Your workflow YAML is never modified: step modes, mock contracts, payloads, and platform scenario files all live as plain, diffable sidecar files.

From the repository root:

Terminal window
overwire init

This scaffolds:

PathPurpose
settings.ymlRepository owner and Overwire settings
variables.ymlRepository variables for ${{ vars.* }}
secrets.ymlSecret declarations (values optional, local-only)
modes/Workflow default and per-step mode overrides
mocks/Mock contracts for uses: steps
payloads/Saved event payload overrides
.gitignoreKeeps secrets.yml and local run state out of git

The owner is inferred from your git remote and falls back to local when no remote exists. Override it with --owner <owner>.

The scaffolded .overwire/.gitignore ignores secrets.yml, state/, and cache/, so secret values and local run state never reach your repository while the rest of the config stays committable.

To test workflows that span repositories (reusable workflows, workflow_run chains), initialize a workspace at the parent directory:

Terminal window
overwire init --workspace

This writes instances.yml at the workspace .overwire/, auto-discovering child directories that contain a .github/ or .overwire/ tree. Each entry stores a relative path, so the workspace stays portable.

OptionDescription
--owner <owner>Organization or user owning this repo (inferred from git remote if omitted)
--config-root <dir>Root for the config tree, relative to cwd (default .overwire)
--forceOverwrite existing config files
--workspaceCreate a workspace-level .overwire with auto-discovered child repos

The app starts on an open-project screen until you point it at a directory:

The open-project screen on first launch

Opening a directory without a .overwire/ tree shows a splash screen with an initialize action that does the same scaffolding, including child-repo auto-discovery:

The initialize splash for a directory that has no .overwire tree yet

Run your first workflow: first mock run.

overwire.io

Overwire is not affiliated with, endorsed by, or sponsored by GitHub, Inc., Microsoft Corporation, or Docker, Inc. GitHub and GitHub Actions are trademarks of GitHub, Inc.