Semaphore UI Documentation
Semaphore UI is a self-hosted web UI and API for running Ansible, Terraform/OpenTofu, Shell, PowerShell, and Python automation. It gives your team one place to run playbooks and scripts, keep credentials encrypted, schedule jobs, and see who ran what and when.
It ships as a single Go binary or Docker image, runs on Linux, macOS, and Windows, and stores data in SQLite, MySQL, or PostgreSQL.
Run Semaphore with SQLite in one command, then open http://localhost:3000 and log in as admin / changeme.
docker run -d -p 3000:3000 \
-e SEMAPHORE_DB_DIALECT=sqlite \
-e SEMAPHORE_ADMIN=admin \
-e SEMAPHORE_ADMIN_PASSWORD=changeme \
-e SEMAPHORE_ADMIN_NAME=Admin \
-e SEMAPHORE_ADMIN_EMAIL=admin@localhost \
-v semaphore-data:/var/lib/semaphore \
semaphoreui/semaphore:latest
For production, see Installation for Docker Compose, packages, Kubernetes, and binary installs. Then follow Getting Started to run your first task.
Install and configure
Get a server running and connect it to your database, identity provider, and network.
Run automation
Organize work into projects, connect repositories and credentials, and run tasks on demand or on a schedule.
Operate at scale
Distribute execution, run redundantly, and keep the service observable and up to date.
Reference
Exact options and endpoints when you already know what you are looking for.
Guides by tool
Help and community
- Questions: ask on Discord.
- Bugs and feature requests: open an issue on GitHub.
- Source code: github.com/semaphoreui/semaphore.
- Pro and Enterprise: License activation.