semaphore
Modern UI and powerful API for Ansible, Terraform/OpenTofu/Terragrunt, PowerShell and other DevOps tools.
A browser-based dashboard for running Ansible, Terraform, and other DevOps automation tasks on demand or on a schedule, replacing manual terminal commands with a visual interface, task history, and team access controls.
Semaphore UI is a web-based dashboard for running and managing automation tasks across popular DevOps tools including Ansible, Terraform, OpenTofu, Terragrunt, and PowerShell scripts. Rather than typing commands directly into a terminal, you can trigger and monitor deployments and operations from a browser. The project targets teams whose infrastructure has grown to the point where running things by hand in a terminal is no longer practical.
Inside Semaphore UI, everything is organized around a few key concepts. A Project groups together the resources, configurations, and tasks that belong to one area of your infrastructure. Task Templates are reusable job definitions that can run on demand or on a schedule. Each time a template runs, it creates a Task, which represents one specific execution. An Inventory holds the list of target machines (servers, containers, virtual machines) that your tasks will act on. Variable Groups store sensitive values like passwords and API keys so they can be shared across tasks without being typed in each time.
You can install Semaphore UI in several ways: via a pre-built Docker image, as a binary package, as a Snap package, or by deploying a ready-made virtual machine on AWS, DigitalOcean, Vultr, or Yandex Cloud. The Docker route is the most common starting point and takes only a single command. There is also an online demo available if you want to explore the interface before installing anything.
The project includes a REST API and Postman collection for anyone who wants to control Semaphore programmatically. Third-party extensions exist in the ecosystem too, including a Terraform provider for managing Semaphore resources as code and a PowerShell module for scripting against the API.
The source code is written in Go and released under the MIT license. The project is actively maintained with a public roadmap on GitHub and a Discord community for questions and support.
Where it fits
- Trigger Ansible playbooks from a browser and view the full output log in real time, without SSH-ing into any server.
- Schedule recurring Terraform apply jobs and track each run's history and status in the Semaphore dashboard.
- Give a team of admins access to run pre-approved automation tasks without sharing SSH keys or terminal access.
- Control Semaphore programmatically from scripts or a Terraform provider using its REST API.