Start here
How it works
Oh My Job separates deciding when work should run from executing that work. A server holds the schedule. Agents execute commands on the machines you enroll.
The server keeps the picture
The server stores machines, jobs, schedules, and run history. It gives you a web interface to define commands and inspect their output, duration, and exit status.
The Docker image runs the web server, scheduler, and queue worker together. SQLite stores application data in a persistent directory; no separate database service is required.
Agents ask for work
An agent runs on each machine that executes jobs. It initiates outbound connections to the server, asks for work, and reports output and timing back. It opens no listening ports, so the agent does not need an inbound firewall rule.
The agent is a static Go binary. The standard installer sets it up as a systemd service on Linux.
A job is a definition. A run is what happened.
A command job describes a command, its target machine, and its schedule. Each execution produces a run with its own status and output. You can inspect a failed run without losing the history of previous executions.
A successful exit tells you that the command returned code 0. What counts as a successful backup, sync, or maintenance operation still depends on the command you write.
Work can report for itself
A monitored job has a schedule and a secret ping URL instead of a machine and command. Your existing script reports success or failure over HTTP. After the first report activates monitoring, if a completion does not arrive within the expected window, Oh My Job records a missed run. Command jobs and monitored jobs appear in the same Jobs list and run history.
See Monitor existing work to start without installing an agent.
Your infrastructure sets the boundary
The server and agents run on infrastructure you control. An agent must be able to reach the server’s configured address. The server does not need to initiate connections to the machines.
Start with the quickstart, or read the agent protocol reference for the wire contract.