Post tasks and messages between team members, track completion, no email thread. Like a minimal internal ticketing system for small teams who find Jira absurd.
Every operation in Courier is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/messages — list all messages with optional search and filter query parametersPOST /api/messages — create a new message recordGET /api/messages/{id} — retrieve a single message by IDPUT /api/messages/{id} — update an existing messageDELETE /api/messages/{id} — remove a messageGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringEvery message your team creates contains context that matters — queue, payload, priority, status, retries. When that data lives in a third-party service, you are one acquisition or policy change away from losing access. Courier keeps it local.
Download the binary and run it. Courier starts serving immediately with a dashboard at localhost and a REST API for automation. No cloud account, no API keys to provision, no monthly invoice. Your data lives in a SQLite file you can back up, move, or query directly.
Deploy Courier as a systemd service, a Docker container, or a bare process behind tmux. It reads two environment variables: PORT and DATA_DIR. Everything else is self-contained. The /api/health endpoint returns the service status and messages count, which you can wire into your existing monitoring stack.
GET /api/messages — List all messages. Supports ?q=keyword for search and ?status=value for filteringPOST /api/messages — Create a new message. Send JSON with at least queueGET /api/messages/{id} — Fetch one message by IDPUT /api/messages/{id} — Update fields on an existing messageDELETE /api/messages/{id} — Remove a messageGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringSelf-hosted internal message queue. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool courier
PORT=9770 ./courier
http://localhost:9770
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 COURIER_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./courier
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.