← All open source projects

act

nektos/act

act is a CLI tool for running GitHub Actions locally so CI scenarios can be tested faster before pushing changes.

Forks 1,951
Author nektos
Language Go
License MIT
Synced 2026-06-11

What it is

act is a CLI tool for running GitHub Actions locally. It helps test workflows before pushing, shorten CI feedback loops, and catch errors in jobs, env, or steps.

The nektos/act repository has been on GitHub since 2019. Its primary language is Go, the license is MIT, and the site is nektosact.com. The project emulates a GitHub Actions runner locally as far as the selected environment allows.

How it works

act reads workflow files from `.github/workflows`, selects an event, and runs jobs locally. This is useful for fast checks, but it is not a perfect copy of GitHub-hosted runners.

Local workflow check

This example shows the usual path: list jobs and run a workflow locally before pushing changes.

Language: Bash
act -l
act pull_request

Where it helps

act helps libraries, CLI projects, small services, and repositories where CI fails because of small YAML, secret, matrix, or setup-step errors.

The history of act is obvious to anyone who has waited for remote CI just to find a YAML indentation error. GitHub Actions are convenient, but every server-side check takes a commit, queue time, logs, and then another edit.

act shortens that loop by running part of the scenario next to the code before pushing a branch. It is especially useful for libraries and small services where the build does not depend on a company’s entire internal infrastructure.

The limitation should stay visible: a local run is not guaranteed to match GitHub exactly. Images, secrets, network services, cache, and permissions can differ, so act catches early mistakes but does not replace the final CI run.

Project details

act is useful exactly where GitHub Actions is already part of development but remote checks slow feedback. The local command does not replace CI, but it catches obvious errors earlier: a wrong step name, a missing dependency, or a failing install script.

The project uses the local environment to run workflows, so results depend on images, available services, and machine settings. That has to be understood early: if GitHub uses specific infrastructure, the local run is an approximation, not a clone.

The nicest scenario is developing actions and build workflows. When a file in `.github/workflows` changes often, act gives a fast loop: edit YAML, run the event locally, inspect the log, fix it, repeat. Without that, every iteration requires pushing changes.

The tool is also useful in learning projects and open-source libraries. A contributor can check part of CI before a pull request, and maintainers see fewer failures caused by simple environment mistakes. It is not a guarantee, but it is a good sanity check.

Limitations are most visible around secrets, cache, service containers, and permissions. If a scenario depends on production keys or an internal network, the local run should use safe stubs, not try to reproduce the whole private world on a laptop.

Strengths and tradeoffs

The strength is short feedback. The tradeoff is environment differences: secrets, services, images, and GitHub-specific behavior still need real CI verification.