Understood
Common push, pull request, dispatch, schedule, and merge-group triggers; ordered branch/path filters; core expression functions; matrix include/exclude; needs; env; inputs; referenced secrets and permissions.
No runner. No push. No surprise.
Give ghaplan a workflow and a synthetic event. It traces triggers, filters, conditions, matrices, and dependencies—without executing a single step.
Local by design. Your workflow never leaves this tab.

Live planner
Paste YAML or open a local file. Planning happens entirely in your browser.
YAML stays on this device
0 linesYAML
Plan
The quiet path to certainty
Choose an event, branch, changed paths, labels, and dispatch inputs.
Trigger filters, expressions, matrices, and the needs graph are evaluated locally.
Run, skip, and unknown outcomes include the reason—not just a colored light.
CLI
The typed Rust library and single binary fit scripts, pre-commit hooks, and editors. JSON output is stable for automation.
Read installation notes$ ghaplan --event pull_request \
--base main --head feat \
--paths src/a.ts
RUN workflow CI
└─ pull_request matched filters
├─ RUN job lint
├─ RUN job test [3 cells]
└─ SKIP job release
└─ if evaluated to falseHonest boundaries
Common push, pull request, dispatch, schedule, and merge-group triggers; ordered branch/path filters; core expression functions; matrix include/exclude; needs; env; inputs; referenced secrets and permissions.
Secret values, live concurrency state, hashFiles(), remote reusable workflows, composite-action internals, and runner filesystem state. Unknown is shown explicitly, never guessed.