Supported plugins
The Gateway plugins MDK ships
Overview
A Gateway serves exactly the apps your stack declares in spec.apps[], and nothing else. Nothing here
auto-registers: an app contributes its routes only when a stack names it. MDK ships the apps under
backend/apps/, each offered through mdk onboard and declared by its package name
(@tetherto/mdk-app-<name>).
The paths below are the ones in each app's route table. The Gateway serves them under /apps/<name> unless the app's
spec.apps entry sets mount; mount: / serves them as written. The agent app must be mounted at /, because its UI calls
/agent/sessions… at the Gateway root.
MDK plugins
Optional plugins
agent
| Method | Path | Description |
|---|---|---|
POST | /agent/sessions | Opens an agent session bound to the caller's identity |
POST | /agent/sessions/:id/messages | Streams an agent turn over SSE; write tools pause for an operator's approval |
POST | /agent/sessions/:id/approvals/:approvalId | Approves or rejects a paused write, resuming or ending the turn |
DELETE | /agent/sessions/:id | Deletes a session owned by the caller |
demo
| Method | Path | Description |
|---|---|---|
GET | /api/demo/summary | Fans out metrics telemetry to every registered device whose Worker exposes hashrate_rt in TH/s (what mdk create worker scaffolds) and returns fleet totals plus a per-device breakdown. Aggregation lives here — workers only ever answer for one device |
GET | /api/demo/history | Pulls the history telemetry channel (recent samples) for every matched device that declares one, or a single device when deviceId is set. Devices without the channel are listed with hasHistory: false and no samples |
Next steps
- Declare an app in your stack: the manifests, controllers, and how a stack runs them