Moo is the Wire / jobs lane: short, bounded work — invoke a allowlisted plugin, get JSON back, enforce a timeout, keep plugin code off the main HTTP loop (worker thread today; child “moo-car” planned). Think Lambda- or Edge-shaped, except the CPU is yours and policy is Keyman-aware when exposed.
Plugins are listed in registry.json — ids are allowlisted; the server does not require() user-supplied paths. That is the controlled version of “serverless” where anyone could upload a handler: here, only operators extend the registry.
GET /api/moo/registry exposes public metadata; POST /api/moo/invoke accepts { "plugin", "params" }. Browser helper: coffee.moo in moo-request.js.
Every invoke gets a capped runtime. In the real world, runaway jobs exhaust memory and freeze APIs; Moo’s design bakes in failure boundaries early. v2+ may add queues and job IDs — same story as graduating from sync invokes to SQS-shaped patterns.
Request path sketch (simplified):
SERVER-DEMO is the guided tour of these pieces in one dashboard; the names above are the vocabulary you will see in settings and status panels.
Pair with Home Cloud for LAN, backups, and exposure — Coffee Server is what you might run on that LAN.