Act is a command-line tool written in Go that enables developers to run GitHub Actions workflows locally on their machines before pushing code to a repository. The project addresses a fundamental pain point in GitHub Actions development: the need to commit and push changes repeatedly just to test workflow modifications. By running workflows locally, developers gain fast feedback on their `.github/workflows/` files and any embedded GitHub Actions without the overhead of remote execution.
The tool works by reading workflow definitions from the `.github/workflows/` directory and using the Docker API to pull or build the necessary container images as specified in those workflows. It then determines the execution path based on task dependencies and runs containers for each action, configuring environment variables and filesystem structures to match what GitHub's hosted runners provide. This approach allows developers to test their entire CI/CD pipeline locally before committing changes.
Beyond testing, act functions as a local task runner that can replace traditional Makefiles. Developers can leverage their existing GitHub Actions definitions to automate local development tasks, eliminating the need to maintain separate build scripts and reducing duplication across their tooling.
The repository has demonstrated sustained activity and community engagement.
The tool is classified across multiple domains including workflow automation, CI/CD, local runner functionality, actions execution, testing, containerization, event simulation, continuous integration, and developer productivity.
Act is built with Go 1.20 or higher and can be manually built from source using standard make commands for testing and installation. The project maintains comprehensive documentation through its dedicated user guide at nektosact.com and encourages community contribution through established contributing guidelines. A Visual Studio Code extension called GitHub Local Actions has been developed to integrate act directly into the editor, allowing developers to run and test workflows without leaving their development environment. The project is listed on awesome-runners, indicating recognition within the GitHub Actions community as a valuable tool for local workflow execution.