Terminology
Learn the MDK vocabulary for ORK, App Node, workers, managers, things, and mocks
This page explains the terms you need to familiarize yourself with, using an Antminer rack as an example.
Terms you need to name
| Term | What it is | Lives at |
|---|---|---|
| ORK (Orchestration Kernel) | The pull-only kernel that owns the device registry, routes commands, and aggregates telemetry. | backend/core/ork/index.js |
| App Node | The developer-owned gateway between non-Node clients (UI, AI agents) and ORK. Mandatory whenever a non-Node consumer reaches the kernel; not used in the in-process Antminer-rack example below. | backend/core/app-node/ |
| Worker | A device-family translator. Speaks the MDK Protocol upward to ORK and the vendor's native API downward to one device family (one miner brand, one container type, one pool API). | backend/workers/docs/install-pattern.md |
| Manager class | The JavaScript class a worker exports, one per supported device model. Instances drive a single rack of devices. | e.g. AM_S19XP, AM_S21 in backend/workers/miners/antminer/index.js |
| Thing | One registered device instance. Created by calling manager.registerThing({ info, opts }). Identified by a generated deviceId. | runtime, in manager.mem.things |
How they compose, for an Antminer rack
The same shape repeats for every other device family (Whatsminer, container vendors, pool APIs). For a multi-worker view, parallel workers, and multi-site deployments, see architecture.md#scaling.
What this section does NOT cover
- Multi-process discovery across machines — see
backend/core/examples/mdk-e2e/dht-worker.jsanddht-ork.js. - App Node implementation details (HTTP routing, JWT auth, RBAC) — see
backend/core/app-node/worker.js. - Building your own worker for a new device family — see
backend/workers/docs/install-pattern.md. - Per-device contract details (telemetry units, command shapes, error codes) — those live in each worker's
mdk-contract.json, e.g.backend/workers/miners/antminer/mdk-contract.json.
Next steps
- You are ready to run the example in Run the stack.