A macOS desktop app that runs GitHub Actions workflows locally through nektos/act, rendered in GitHub's own visual language.
Status: engine complete, UI in progress. This repository currently contains the pure-Dart engine that drives
actand assembles its output into a live run tree. There is no window yet; the three-pane run view lands in the next milestone.
act is CLI-only.
The only existing UIs are VS Code extensions, so a standalone desktop app is unoccupied ground.
act also fixes several long-standing complaints about the github.com run view for free: no page loads to reach an error, logs that survive a restart, and a log viewer that does not fall over on large output.
The app never reimplements act.
It runs act --json as a subprocess and decodes the JSON log stream, which already carries every primitive the run page renders: job identity with matrix, step identity with Pre/Main/Post stage, per-step status and duration, log lines, and parsed ::group:: and ::warning:: workflow commands.
The engine derives all structure from act's machine-readable identity fields, never from its human-readable log text, so it does not break when act changes its wording between releases.
Two pure-Dart layers, with dependencies pointing only downward.
A test enforces the boundary: nothing in these layers may import Flutter, and the domain layer may not touch dart:io.
lib/domain/- models and transforms: log-record decoding, event classification, the run tree, the log buffer, workflow YAML parsing.lib/service/- external wrappers: theactsubprocess, and the run archive that stores each run verbatim for faithful replay.bin/engine_smoke.dart- a command-line harness that runs the engine end to end.
- macOS
actonPATH- Docker running, for workflows that use container jobs
dart run bin/engine_smoke.dart <path-to-a-repo-with-workflows> pushThis runs the workflows in the given repository and prints the assembled tree of jobs, steps, statuses, durations, and annotations.
MIT. See LICENSE.