Modern UI and powerful API for Ansible, Terraform/OpenTofu/Terragrunt, PowerShell and other DevOps tools. https://semaphoreui.com
  • JavaScript 66.1%
  • Go 22.9%
  • Vue 10.2%
  • Shell 0.2%
  • TypeScript 0.2%
  • Other 0.2%
Find a file
Denis Gukov 12fe7217d2
Merge pull request #3727 from semaphoreui/cursor/critical-bug-inspection-ed07
fix: nil pointer dereference in UpdateRunner when task not in pool
2026-03-28 23:26:35 +01:00
.devcontainer chore(deps): update mcr.microsoft.com/devcontainers/universal docker tag to v4 2025-11-10 02:44:45 +00:00
.dredd test(dredd): change endpoint spec 2025-08-27 20:20:21 +05:00
.github ci(github): deploy server checks sqlite integration test results 2026-02-25 14:09:06 +05:00
.postman chore: remove extra log 2025-06-28 21:55:59 +05:00
.vscode feat: optimize api 2025-05-04 02:10:45 +05:00
api fix: nil pointer dereference in UpdateRunner when task not in pool 2026-03-28 11:09:03 +00:00
cli fix(ha): sync schedule pool periodically 2026-03-22 12:38:15 +01:00
db fix: windows abs path support (#3720) 2026-03-24 22:58:09 +01:00
db_lib Fix branch names with slashes truncated in GetRemoteBranches (#3717) 2026-03-24 22:39:53 +01:00
deployment fix(docker): typo in bash script 2026-03-08 22:53:19 +01:00
examples feat/staged cli args (#3429) 2025-11-09 21:37:55 +05:00
hook_helpers fix(be): move goodman import to separate package to fix tests 2021-08-27 11:58:31 +05:00
pkg fix(ha): status changing 2026-03-22 12:47:03 +01:00
pro feat: sync button for secret storage 2026-03-07 11:19:05 +01:00
pro_interfaces feat(subscr): add nodes and UIs 2026-02-13 18:46:50 +05:00
services fix: nil pointer dereference in UpdateRunner when task not in pool 2026-03-28 11:09:03 +00:00
test test(mcp): fix sh test path 2026-02-13 22:31:47 +05:00
util Merge branch '2-17-stable' into develop 2026-03-24 23:10:46 +01:00
web Merge branch '2-17-stable' into develop 2026-03-25 12:45:55 +01:00
.codacy.yml ci: add codacy config file and exclude dredd tests 2024-09-28 16:30:39 +05:00
.cursorignore test: rename test dir 2025-12-15 21:55:33 +05:00
.dockerignore chore: add initial dockeringore config 2024-04-28 00:10:30 +02:00
.gitignore test(mcp): update playwright config 2025-12-15 19:50:48 +01:00
.golangci.yml chore(golangci-lint): re-enable golang linter 2025-05-11 11:19:38 +08:00
.goreleaser.yml feat: add repos for community and standard versions (#3376) 2025-10-27 18:02:15 +05:00
api-docs.yml docs(swagger): add description for aliases 2026-02-25 13:25:25 +05:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md 2024-09-26 23:39:36 +05:00
CONTRIBUTING.md Update CONTRIBUTING.md 2026-01-22 18:27:23 +05:00
go.mod fix(deps): update module golang.org/x/oauth2 to v0.35.0 2026-02-19 21:51:19 +00:00
go.sum feat(secrets): allow read secret from raw file (#3654) 2026-02-22 15:47:29 +05:00
LICENSE feat(schedule): change column order 2024-06-25 01:26:21 +05:00
qodana.yaml feat(config): add uid to process config 2025-04-17 11:54:48 +05:00
README.md Update README to include demo and remove gratitude 2026-03-28 22:17:35 +01:00
renovate.json Add renovate.json 2024-10-20 20:26:22 +00:00
SECURITY.md Update SECURITY.md 2025-04-23 19:54:03 +05:00
Taskfile.yml feat: add repos for community and standard versions (#3376) 2025-10-27 18:02:15 +05:00
TERRAFORM_ARGS_IMPROVEMENT.md feat/staged cli args (#3429) 2025-11-09 21:37:55 +05:00

Semaphore UI

Modern UI for Ansible, Terraform/OpenTofu/Terragrunt, PowerShell and other DevOps tools.

roadmap telegram youtube

responsive-ui-phone1

If your project has grown and deploying from the terminal is no longer feasible, then Semaphore UI is the tool you need.

Demo

Try Semaphore UI online

What is Semaphore UI?

Semaphore UI is a modern web interface for managing popular DevOps tools.

Semaphore UI allows you to:

  • Easily run Ansible playbooks, Terraform and OpenTofu code, as well as Bash and PowerShell scripts.
  • Receive notifications about failed tasks.
  • Control access to your deployment system.

Key Concepts

  1. Projects is a collection of related resources, configurations, and tasks.
  2. Task Templates are reusable definitions of tasks that can be executed on demand or scheduled.
  3. Task is a specific instance of a job or operation executed by Semaphore.
  4. Schedules allow you to automate task execution at specified times or intervals.
  5. Inventory is a collection of target hosts (servers, virtual machines, containers, etc.) on which tasks will be executed.
  6. Variable Group refers to a configuration context that holds sensitive information such as environment variables and secrets used by tasks during execution.

Getting Started

You can install Semaphore using the following methods:

Docker

The most popular way to install Semaphore is via Docker.

docker run -p 3000:3000 --name semaphore \
	-e SEMAPHORE_DB_DIALECT=bolt \
	-e SEMAPHORE_ADMIN=admin \
	-e SEMAPHORE_ADMIN_PASSWORD=changeme \
	-e SEMAPHORE_ADMIN_NAME=Admin \
	-e SEMAPHORE_ADMIN_EMAIL=admin@localhost \
	-d semaphoreui/semaphore:latest

We recommend using the Container Configurator to get the ideal Docker configuration for Semaphore.

Other Installation Methods

For more installation options, visit our Installation page.

Documentation

Awesome Semaphore

A curated list of awesome things related to Semaphore UI.

Contribution

License

MIT © Denis Gukov