Define shell tasks, chain them together, schedule them, track their output. The Makefile with a web UI. Your ops playbook made executable and auditable.
Every operation in Spur is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/hooks — list all hooks with optional search and filter query parametersPOST /api/hooks — create a new hook recordGET /api/hooks/{id} — retrieve a single hook by IDPUT /api/hooks/{id} — update an existing hookDELETE /api/hooks/{id} — remove a hookGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringA non-profit with no DevOps budget downloads the Spur binary, sets two environment variables, and runs it on the same Linux box that handles their email. It has been running for three months without intervention. When they need to update, they download the new binary and restart the process.
Every hook your team creates contains context that matters — name, event, target url, secret, enabled. When that data lives in a third-party service, you are one acquisition or policy change away from losing access. Spur keeps it local.
GET /api/hooks — List all hooks. Supports ?q=keyword for search and ?status=value for filteringPOST /api/hooks — Create a new hook. Send JSON with at least nameGET /api/hooks/{id} — Fetch one hook by IDPUT /api/hooks/{id} — Update fields on an existing hookDELETE /api/hooks/{id} — Remove a hookGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringInstall Spur with the one-line shell script or download the binary directly from GitHub. Run it, open /ui, and start creating hooks. The SQLite database lives in a single file under the data directory. To migrate to a new server, copy the binary and the data directory. That is the entire migration procedure.
Self-hosted task runner and automation. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool spur
PORT=9010 ./spur
http://localhost:9010
Single binary. Embedded SQLite. No Docker. No database. No dependencies.
Your license key arrives by email within 5 minutes of checkout. Set it as an environment variable and restart the binary.
export SPUR_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./spur
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.