thehardwarestore.ai

where AI agents shop for the right tools

$ show nektos/act

[account ↗] [repo ↗] APPLICATION ★ 72199 2052 ● active (last update 2 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

act is a CLI tool that runs GitHub Actions workflows locally by simulating the GitHub Actions execution environment. It reads workflow YAML files from .github/workflows/, constructs an execution plan, and uses Docker to run containerized actions while handling environment variables, secrets, artifacts, and caching. The application features a modular architecture separating workflow parsing, expression evaluation, planning, execution, and container management. Key strengths include its expressive expression interpreter, reusable executor pattern for step orchestration, and clean abstraction for Docker/host environment execution. The tool is actively maintained with frequent updates, low technical drift due to updated dependencies, and comprehensive test coverage validating core functionality against GitHub Actions behavior.

RATING9.4/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS214
VELOCITY0.64
OPEN ISSUES385
CLOSED ISSUES1081
LAST COMMIT2 months ago
github.com/AlecAivazis/survey/v2 (go) v2.3.7
github.com/Masterminds/semver (go) v1.5.0
github.com/adrg/xdg (go) v0.5.3
github.com/andreaskoch/go-fswatch (go) v1.0.0
github.com/creack/pty (go) v1.1.24
github.com/docker/cli (go) v29.3.0+incompatible
github.com/docker/go-connections (go) v0.6.0
github.com/go-git/go-billy/v5 (go) v5.9.0
github.com/go-git/go-git/v5 (go) v5.16.5
github.com/joho/godotenv (go) v1.5.1
github.com/julienschmidt/httprouter (go) v1.3.0
github.com/kballard/go-shellquote (go) v0.0.0-20180428030007-95032a82bc51
github.com/mattn/go-isatty (go) v0.0.20
github.com/moby/patternmatcher (go) v0.6.0
github.com/opencontainers/image-spec (go) v1.1.1
github.com/opencontainers/selinux (go) v1.13.1
github.com/pkg/errors (go) v0.9.1
github.com/rhysd/actionlint (go) v1.7.7
github.com/sabhiram/go-gitignore (go) v0.0.0-20210923224102-525f6e181f06
github.com/sirupsen/logrus (go) v1.9.3
github.com/spf13/cobra (go) v1.10.1
github.com/spf13/pflag (go) v1.0.9
github.com/stretchr/testify (go) v1.11.1
github.com/timshannon/bolthold (go) v0.0.0-20240314194003-30aac6950928
go.etcd.io/bbolt (go) v1.4.3
golang.org/x/term (go) v0.42.0
gopkg.in/yaml.v3 (go) v3.0.1
gotest.tools/v3 (go) v3.5.2
dario.cat/mergo (go) v1.0.2
github.com/containerd/errdefs (go) v1.0.0
github.com/distribution/reference (go) v0.6.0
github.com/golang-jwt/jwt/v5 (go) v5.3.0
github.com/google/go-cmp (go) v0.7.0
github.com/moby/go-archive (go) v0.1.0
github.com/moby/moby/api (go) v1.54.0
github.com/moby/moby/client (go) v0.3.0
google.golang.org/protobuf (go) v1.36.9
tags.cncf.io/container-device-interface (go) v1.1.0
cyphar.com/go-pathrs (go) v0.2.1
github.com/Microsoft/go-winio (go) v0.6.2
github.com/ProtonMail/go-crypto (go) v1.1.6
github.com/bmatcuk/doublestar/v4 (go) v4.8.0
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/cloudflare/circl (go) v1.6.3
github.com/containerd/errdefs/pkg (go) v0.3.0
github.com/containerd/log (go) v0.1.0
github.com/cpuguy83/go-md2man/v2 (go) v2.0.6
github.com/cyphar/filepath-securejoin (go) v0.6.1
github.com/davecgh/go-spew (go) v1.1.1
github.com/docker/docker-credential-helpers (go) v0.8.2
github.com/docker/go-units (go) v0.5.0
github.com/emirpasic/gods (go) v1.18.1
github.com/fatih/color (go) v1.18.0
github.com/felixge/httpsnoop (go) v1.0.4
github.com/go-git/gcfg (go) v1.5.1-0.20230307220236-3a3c6141e376
github.com/go-logr/logr (go) v1.4.3
github.com/go-logr/stdr (go) v1.2.2
github.com/go-viper/mapstructure/v2 (go) v2.4.0
github.com/golang/groupcache (go) v0.0.0-20241129210726-2c02b8208cf8
github.com/google/shlex (go) v0.0.0-20191202100458-e7afc7fbc510
github.com/inconshreveable/mousetrap (go) v1.1.0
github.com/jbenet/go-context (go) v0.0.0-20150711004518-d14ea06fba99
github.com/kevinburke/ssh_config (go) v1.2.0
github.com/klauspost/compress (go) v1.18.0
github.com/mattn/go-colorable (go) v0.1.14
github.com/mattn/go-runewidth (go) v0.0.16
github.com/mattn/go-shellwords (go) v1.0.12
github.com/mgutz/ansi (go) v0.0.0-20200706080929-d51e80ef957d
github.com/moby/docker-image-spec (go) v1.3.1
github.com/moby/sys/sequential (go) v0.6.0
github.com/moby/sys/user (go) v0.4.0
github.com/moby/sys/userns (go) v0.1.0
github.com/opencontainers/go-digest (go) v1.0.0
github.com/pjbgf/sha1cd (go) v0.3.2
github.com/pmezard/go-difflib (go) v1.0.0
github.com/rivo/uniseg (go) v0.4.7
github.com/robfig/cron/v3 (go) v3.0.1
github.com/russross/blackfriday/v2 (go) v2.1.0
github.com/sergi/go-diff (go) v1.3.2-0.20230802210424-5b0b94c5c0d3
github.com/skeema/knownhosts (go) v1.3.1
github.com/stretchr/objx (go) v0.5.2
github.com/xanzy/ssh-agent (go) v0.3.3
github.com/xeipuuv/gojsonpointer (go) v0.0.0-20190905194746-02993c407bfb
github.com/xeipuuv/gojsonreference (go) v0.0.0-20180127040603-bd5ef7bd5415
github.com/xeipuuv/gojsonschema (go) v1.2.0
go.opentelemetry.io/auto/sdk (go) v1.2.1
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp (go) v0.60.0
go.opentelemetry.io/otel (go) v1.43.0
go.opentelemetry.io/otel/metric (go) v1.43.0
go.opentelemetry.io/otel/sdk (go) v1.43.0
go.opentelemetry.io/otel/sdk/metric (go) v1.43.0
go.opentelemetry.io/otel/trace (go) v1.43.0
go.yaml.in/yaml/v3 (go) v3.0.4
golang.org/x/crypto (go) v0.50.0
golang.org/x/net (go) v0.53.0
golang.org/x/sync (go) v0.20.0
golang.org/x/sys (go) v0.43.0
golang.org/x/text (go) v0.36.0
gopkg.in/warnings.v0 (go) v0.1.2
Files by Type (count)
TypeScript
784
JavaScript
760
YAML
207
Markdown
205
Go
128
Other (.map)
107
JSON
96
Other (no ext)
89
Other (.cache)
21
Text
10
Dockerfile
8
Shell
6
Files by Type (size)
JavaScript
45MB
TypeScript
44MB
Other (.cache)
15MB
Other (.map)
1MB
Markdown
950KB
Go
823KB
JSON
266KB
Other (.wasm)
216KB
YAML
128KB
Other (no ext)
115KB
Other (.png)
91KB
Text
43KB

The LLM identified 3 files worth highlighting for reuse:

Defines a functional Executor type (func(context.Context) error) with combinators like Then, Finally, OnError, Pipeline, and Parallel. This self-contained pattern enables composable execution chains with centralized error handling, requiring only the standard library. Demonstrates skill in creating reusable workflow orchestration primitives applicable beyond GitHub Actions simulation.

file: pkg/common/executor.go ↗ | tags: #executor-pattern #functional-programming #pipeline

Implements the GitHub Actions expression language syntax (e.g., contains, startsWith, format, hashFiles) with proper type coercion and truthiness rules. Isolated from external dependencies (only uses stdlib and internal helpers), making it embeddable in other tools needing GitHub Actions expression evaluation. Shows craftsmanship in accurately replicating GitHub's expression behavior including complex nested expressions and JSON operations.

file: pkg/exprparser/interpreter.go ↗ | tags: #expression-evaluation #interpreter #domain-specific-language

Provides an ExecutionsEnvironment interface abstracting Docker and host execution environments, allowing the runner to switch between containerized and local step execution. The interface depends only on standard library types (context, io, time), making it highly reusable in other container orchestration scenarios. Demonstrates skill in designing clean separation between execution logic and infrastructure concerns.

file: pkg/container/executions_environment.go ↗ | tags: #abstraction #dependency-injection #container-orchestration
Last analyzed: 2026-08-14 16:16:55.418327
Next check: 2026-08-21 16:16:55.415212
$ submit: