A command center for workflow_dispatch GitHub Actions workflows across multiple repositories.
Launchpad discovers which of your repos have manually-triggerable workflows, lets you dispatch them from one place (with proper input forms), and tracks the resulting runs. Works from the CLI or a local web dashboard.
- Discovers all
workflow_dispatchworkflows across your configured orgs and repos - Parses each workflow's YAML to extract input definitions (type, required, default, choices)
- Triggers workflows with interactive input prompts or a web form
- Tracks dispatched runs by correlating them back to the GitHub Actions run
- Records dispatch history in a local SQLite database
Requires the GitHub CLI (gh).
gh extension install dvelton/gh-launchpad
Tell Launchpad which orgs and repos to scan:
gh launchpad config init
gh launchpad config add-org my-org
gh launchpad config add-repo owner/specific-repo
Then run discovery:
gh launchpad discover
gh launchpad list
WORKFLOW REPOSITORY INPUTS PATH
Deploy Production my-org/api 3 inputs .github/workflows/deploy.yml
Run Benchmarks my-org/api 2 inputs .github/workflows/bench.yml
Sync Translations my-org/docs 1 input .github/workflows/sync-i18n.yml
Release Candidate my-org/runner 4 inputs .github/workflows/release-rc.yml
4 workflows across 3 repositories
gh launchpad run my-org/api "Deploy Production" --ref release/v3.2
If the workflow defines inputs and you don't provide them via --input flags, you'll be prompted:
Workflow inputs:
environment (required) — Target deployment environment [staging/production/canary]: production
dry_run — Run without deploying [true/false] (default: false):
tag (required) — Release tag to deploy: v3.2.1
About to dispatch:
Workflow: Deploy Production
Repo: my-org/api
Ref: release/v3.2
Inputs:
environment = production
tag = v3.2.1
Proceed? [Y/n]
Add --watch to follow the run until completion:
gh launchpad run my-org/api "Deploy Production" --watch
gh launchpad status
gh launchpad history
gh launchpad history --repo my-org/api --status failure --since 2026-04-01
gh launchpad serve --open
Opens a local dashboard at http://127.0.0.1:8080 with:
- Overview of all dispatchable workflows across your repos
- One-click triggering with dynamic input forms
- Live run status tracking
- Full dispatch history with filtering
Config lives at ~/.config/gh-launchpad/config.yml:
orgs:
- my-org
- another-org
repos:
- owner/specific-repo
exclude:
- "*/docs"
- "*/archived-*"
defaults:
ref: main
discovery_ttl: 1h
poll_interval: 5s
correlation_window: 30s
host: github.comManage via CLI:
gh launchpad config show
gh launchpad config add-org <org>
gh launchpad config add-repo <owner/repo>
gh launchpad config remove-org <org>
gh launchpad config remove-repo <owner/repo>
When you dispatch a workflow, GitHub's API returns a 204 with no run ID. Launchpad finds the resulting run by querying the workflow's recent runs and matching by timestamp within a configurable correlation window (default: 30 seconds). This works reliably for most use cases. If multiple dispatches happen simultaneously on the same workflow, correlation may be ambiguous.
All data is stored locally in ~/.config/gh-launchpad/launchpad.db (SQLite). No external services or infrastructure required. Input values are redacted in history by default.
Set defaults.host in your config to your GitHub Enterprise Server hostname. Launchpad uses your gh CLI auth token, so make sure you're authenticated against that host.
| Command | Description |
|---|---|
discover |
Scan repos for workflow_dispatch workflows |
list |
List discovered workflows |
run |
Trigger a workflow with inputs |
status |
Show recent dispatch statuses |
history |
Full dispatch history with filters |
config |
Manage configuration |
serve |
Launch the web dashboard |
MIT