Build your first paid HTTP service on Tempo with the Machine Payments Protocol.
Each workshop project begins as a small, unpaid service. Pick one, confirm it works locally, then add an MPP payment gate and make one paid request.
The workshop image includes Node, pnpm, and a preloaded dependency store. The Compose setup mounts this checkout so source and package changes remain editable on the host.
Preflight the image before the workshop:
docker version
docker compose version
docker pull ghcr.io/tempoxyz/mpp-irl:workshopStart all three projects:
docker compose upCompose exposes ports 3001–3003 and keeps pnpm dependencies in named volumes.
It routes local-llm to Ollama running on the host. If you choose that project,
install its prerequisite before starting Compose:
ollama pull smollm2:135m-instruct-q2_K
curl -fsS http://127.0.0.1:11434/api/tagsRequires Node.js 22, pnpm 10, and any prerequisite listed by the project.
pnpm install
pnpm dev| Project | Port | Starting point |
|---|---|---|
content-gate |
3001 | The Claude Opus 4.5 Soul document as Markdown |
starlink-tracker-api |
3002 | Nearby Starlink satellites from N2YO |
local-llm |
3003 | An OpenAI-compatible local SmolLM2 server |
Each project README covers its prerequisites, payment shape, and extension ideas.
Create a dedicated Tempo testnet recipient for each payment demo.
pnpm dlx mppx@0.8.15 account create \
--account workshop-recipient \
--network testnetPut the printed address in the project's .env.local as
RECIPIENT_ADDRESS. Never commit a production private key or secret.
Complete the MPP request flow:
request -> 402 challenge -> payment credential -> response + receipt
Use pnpm dlx mppx@0.8.15 for the documented commands so every attendee runs
the same CLI version.
pnpm dev
pnpm test
pnpm buildBuild the workshop image locally when changing its dependencies or startup behavior:
docker compose build
docker compose upThe container workflow builds pull requests and publishes linux/amd64 and
linux/arm64 images from main and v* tags. Published images receive an
immutable sha-* tag; main also updates workshop.
After the first workflow publish, a package administrator must make the GHCR package public so attendees can pull it without authenticating.