Your company org chart, contact list, and team finder — searchable, filterable, linkable. The internal phonebook that HR departments maintain in spreadsheets.
Every operation in Roster is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/members — list all members with optional search and filter query parametersPOST /api/members — create a new member recordGET /api/members/{id} — retrieve a single member by IDPUT /api/members/{id} — update an existing memberDELETE /api/members/{id} — remove a memberGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringEvery member your team creates contains context that matters — name, email, role, department, phone. When that data lives in a third-party service, you are one acquisition or policy change away from losing access. Roster keeps it local.
On first launch, Roster initializes a WAL-mode SQLite database and starts an HTTP server. The web dashboard and API share the same port. Creating a member is a POST with JSON — the only required field is name. The response includes the generated ID and timestamp. Listing supports search, filtering, and returns items in reverse chronological order.
A devops team integrates Roster into their CI pipeline. A post-deploy hook creates a member record via the API. The stats endpoint feeds a Grafana panel. When something goes wrong, the team searches members by keyword to find related records without switching tools.
GET /api/members — List all members. Supports ?q=keyword for search and ?status=value for filteringPOST /api/members — Create a new member. Send JSON with at least nameGET /api/members/{id} — Fetch one member by IDPUT /api/members/{id} — Update fields on an existing memberDELETE /api/members/{id} — Remove a memberGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringSelf-hosted team directory. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool roster
PORT=8970 ./roster
http://localhost:8970
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 ROSTER_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./roster
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.