3.7k stars · AGPL-3.0 · 3000.15.0 (2026-06-19), read from the About sidebar on the repository page · Track this in Scout
Shows a grid of buttons on a web page, each one bound to a shell command you wrote down in advance, and prints the output of every run.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A small web application that shows a grid of buttons, each one bound to a command you defined in a settings file. It shows the output of each run, and it can take typed values from the person pressing the button when you list which values are allowed.
What it is good for. Anyone who is not a full-time programmer and still has to operate a server. It removes two different problems at once: remembering the command, and typing it wrong at eleven at night. It is also the safe way to let somebody else run one job without giving them a login. For anyone who runs the same maintenance jobs by hand, a button on a phone beats a remembered command every time.
- You can only run what you wrote down in advance, so a whole class of mistake becomes impossible by design.
- It works on a phone, so you can act while you are away from your desk.
- It shows the output of each run, so you can see whether the command actually worked.
- AGPL-3.0. That is a licence that requires you to publish your changes if you offer the changed program to others over a network. Running it as it comes is fine; building a product on it is not.
- It runs commands as whatever user you start it as. Give it its own user with only the permissions those commands need.
- Never put it on the open internet without a login page in front of it. A web page that runs commands is exactly what an attacker is looking for.
- msoap/shell2http
The same idea reduced to its smallest form: each command becomes a web address, with no buttons and no screen, which makes it good for scripts and poor for people.
Track this in Scout - rundeck/rundeck
The same self-service idea built for a team, with users, roles, schedules and audit logs, at the cost of running a Java application.
Track this in Scout
dagucloud/daguSolves the other half: it runs jobs on a timer and chains steps together, where OliveTin runs one command when a person asks.
Track this in Scout
# Needs Docker. Put your settings file in /etc/OliveTin/config.yaml first.
sudo mkdir -p /etc/OliveTin
sudo tee /etc/OliveTin/config.yaml >/dev/null <<'EOF'
listenAddressSingleHTTPFrontend: 0.0.0.0:1337
logLevel: INFO
actions:
- title: Show disk space
shell: df -h
- title: Restart the app
shell: systemctl restart myapp
EOF
docker create --name olivetin -p 1337:1337 \
-v /etc/OliveTin/:/config:ro docker.io/jamesread/olivetin
docker start olivetin
# then open http://your-server:1337 — behind a password, not on the open internet
