Build slide decks in Markdown, present from the browser, export to PDF. Reveal.js with a backend and a dashboard. Your presentation data doesn't live on someone else's server.
Every operation in Pulpit is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/broadcasts — list all broadcasts with optional search and filter query parametersPOST /api/broadcasts — create a new broadcast recordGET /api/broadcasts/{id} — retrieve a single broadcast by IDPUT /api/broadcasts/{id} — update an existing broadcastDELETE /api/broadcasts/{id} — remove a broadcastGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringRunning a presentation tool should not require a Kubernetes cluster, a managed database, and a DevOps team to keep it running. Pulpit is one file. Download it, run it, point your browser at it. That is the entire setup.
A non-profit with no DevOps budget downloads the Pulpit 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.
Point curl at /api/broadcasts to interact with Pulpit programmatically. The API follows predictable REST conventions: GET to list or fetch, POST to create, PUT to update, DELETE to remove. The response schema matches the internal data model exactly, so what you see in the dashboard is what the API returns.
GET /api/broadcasts — List all broadcasts. Supports ?q=keyword for search and ?status=value for filteringPOST /api/broadcasts — Create a new broadcast. Send JSON with at least titleGET /api/broadcasts/{id} — Fetch one broadcast by IDPUT /api/broadcasts/{id} — Update fields on an existing broadcastDELETE /api/broadcasts/{id} — Remove a broadcastGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringSelf-hosted presentation tool. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool pulpit
PORT=8950 ./pulpit
http://localhost:8950
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 PULPIT_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./pulpit
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.