v0.1Self-hostable · Native GitHub Actions YAML

The semantic workbench for GitHub Actions

Open any repo and understand its automation in seconds. Daggler visualizes, validates, secures, and simulates your workflows — then ships clean native YAML. No lock-in, no proprietary runner.

npx daggler-cli lint · MIT licensed
sample workflow · .github/workflows/ci.yml
Works with the tools you already use
actionlintactgh CLI

GitHub Actions is already a DAG. Daggler shows you the real thing.

Events flow to workflows, jobs, and steps; permissions, secrets, and artifacts flow between them. Daggler treats that graph as the source of truth — and rewrites it back to clean native YAML.

Understand

See every trigger, job dependency, matrix expansion, and the third-party actions you depend on — laid out as an interactive graph.

Author

Edit jobs and steps through typed inspectors. Every visual change round-trips to a precise YAML patch — never a regenerated file.

Validate

Five layers: schema, expression contexts, graph semantics, action metadata, and policy. Diagnostics map to exact YAML lines and graph nodes.

Secure

Catch unpinned actions, over-broad permissions, untrusted-input injection, and missing environment gates — before they merge.

Simulate

Pick an event — a PR from a fork, a tag push — and see exactly which jobs run, which skip, and which secrets become reachable.

Prove

Dispatch a real run on a temporary branch or self-hosted runner. Logs stream back and map directly to your graph nodes.

Export

Ship clean native YAML by copy, commit, or a PR with a graph diff and security summary. No proprietary format, ever.

Three rungs of confidence. One honest model.

Most tools bury you in runner modes. Daggler exposes exactly three levels — and the cost, speed, and authority of each is always clear. Static checks need no Docker. Local approximation runs through a bridge. GitHub runs are the real thing.

1

Static analysis

Instant, deterministic. Parse, validate contexts, expand matrices, run policy and security rules — entirely in the browser and worker.

instant
2

Local approximation

Pair a local bridge with npx daggler-cli bridge to run actionlint and act against a real checkout. Useful, not authoritative.

~seconds
3

Prove on GitHub

Dispatch a real run on a temporary branch or self-hosted runner. Logs stream back and map directly to your graph nodes.

authoritative
policy · diagnostics
# jobs.deploy.steps[1]✗ POL002 Third-party action not SHA-pinned → Pin to SHA✗ POL003 pull_request_target with write token → Restrict scope⚠ AGENT001 Untrusted input flows into an AI agent → Harden⚠ POL009 id-token: write without OIDC step → Remove scope # 2 errors · 2 warnings

See what has permission to write, and where secrets flow.

Daggler ships policy packs for least-privilege, release hardening, and a current one: AI agent workflow safety — catching untrusted issue and PR content flowing into prompts and scripts.

✓

Permission & secret flow graph

Trace every write scope and every secret from its source to the steps that can read it.

✓

Action trust scoring

Verified owner, release age, SHA-pinning, and known advisories — surfaced inline as you insert an action.

✓

Advisory or blocking

Run packs as guidance, or enforce them on PRs with Check annotations that block the merge.

Run it yourself. Your machine, your credentials.

The CLI and the editor run entirely on your machine, with your own gh login. No account, no hosted backend, and your workflows never leave your computer.

~/daggler — run it yourself
# lint any repo's workflows, no install$ npx daggler-cli lint # or run this editor locally, with real runs$ git clone https://github.com/alliecatowo/daggler$ cd daggler && pnpm install && pnpm webeditor → http://127.0.0.1:3737

Untangle your workflows.

Lint your workflows in one command, or open the editor and see them as a graph.