{
  "schema": "leumas.docs.page/1",
  "id": "arch:APPLIANCES",
  "slug": "architecture/appliances",
  "kind": "pages",
  "bucket": "architecture",
  "title": "Appliances",
  "name": "Appliances",
  "eyebrow": null,
  "chip": null,
  "summary": "What customers actually run — Leumas Studio as an EXE, a self-host and a white-label, plus Leumas Social on iOS. Written for machines we do not control.",
  "keywords": [
    "leumas studio",
    "self-hosted studio",
    "white-label deployment",
    "desktop app distribution",
    "offline-capable install",
    "running leumas on your own machine"
  ],
  "audience": "both",
  "funnel": {
    "product": "leumas-studio",
    "cta": "Download Leumas Studio"
  },
  "body": "# Appliances\n\n**What customers actually run.**\n\nLeumas Studio (the EXE, the self-host, the white-label) and Leumas Social on iOS. These are the\nproducts that leave the building, so everything here is written for a machine we do not control.\n\nCompanions: [CONTROL-PLANE.md](CONTROL-PLANE.md) · [PLATFORM.md](PLATFORM.md)\nExecution: [ops/todos/leumas-consolidation-roadmap.md](ops/todos/leumas-consolidation-roadmap.md)\n\n---\n\n## The six products\n\n| Product | One line | Who runs it | Plane |\n|---|---|---|---|\n| **leumas-studio** | Imperium — host sites, run AI, install apps | **customers** | Appliance |\n| **leumas-ios** | mobile Leumas, social-first | end users | Appliance |\n| **leumas-web** | the public index, accounts, the social network | Leumas | Platform |\n| **leumas-docs** | docs, with an MCP server so agents can read them | Leumas | Platform |\n| **leumas-admin** | the staff console | **Leumas only** | Control |\n| **leumas-api** | the one backend — a kernel plus role packs | all of them | all three |\n\n```\n                              leumas-api\n                   ONE binary · four roles · one kernel\n     ┌──────────────────┬──────────────────┬──────────────────┐\n ROLE=platform     ROLE=control       ROLE=appliance      ROLE=dev\n api.leumas.tech   admin.leumas.tech  every customer      a checkout\n     │                  │                  │\n     ▼                  ▼                  ▼\n leumas-web        leumas-admin       leumas-studio\n leumas-ios                           (+ its installed plugins)\n leumas-docs\n     ▲                                     │\n     └──────────── hosts ──────────────────┘\n              (leumas.tech runs on a Leumas-run Studio)\n```\n\n**Products are thin.** A product imports `packages/*`, mounts `engines/*`, calls `services/*`. It\nnever re-implements auth, UI, CRUD, routing or schemas. `pnpm check:escapes` and `pnpm check:vendor`\nhold the line.\n\n---\n\n## The two facts that shape everything\n\n**1. Gating is not slimming.** A capability a tenant cannot see is still *in the build*. Hiding a\ndomain does not remove its code, and the appliance a customer downloads ships the whole thing. Slim\nmeans \"not compiled in\" — that is what a plane pack and an edition are for. Confusing the two is how\nan EXE quietly becomes 400 MB.\n\n**2. The store is how a Studio grows.** A domain is an app; an app is installable; installing it\nchanges *links*, never routes. That property is what lets a plugin be sandboxed, priced, revoked and\nreviewed without touching the host — see the `build-leumas-plugin` skill.\n\n---\n\n## How it relates to the other two\n\n```\n CONTROL ── licence · release feed · store ──-> APPLIANCE ── hosts ──-> PLATFORM\n      ▲                                              │\n      └──────── licence heartbeat only ──────────────┘\n```\n\nAn appliance is autonomous by design: it runs offline, holds its own data, and phones home only to\nsay it is alive. Everything Leumas can do *to* it goes through the licence.\n\n---\n\n## The boundary rule\n\n> Anything a *customer* does on their own instance → **Studio**.\n> Anything *Leumas* does to or about that customer → **[CONTROL-PLANE.md](CONTROL-PLANE.md)**.\n> What the instance serves to the public → **[PLATFORM.md](PLATFORM.md)**.\n\n---\n\nDetail — per-product shape, the API kernel and plane packs, the plugin contract, the host runtime,\ninstall & monetize end to end, and the traps:\n[ops/reference/appliances-detail.md](ops/reference/appliances-detail.md)\n\nPer-product specifics live in each `products/*/README.md`.\n",
  "source": {
    "path": "APPLIANCES.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 4374,
    "hash": "78b80a4d98ba9037ba28ebc6ddec4aca0e954550"
  },
  "urls": {
    "html": "/p/architecture/appliances",
    "json": "/docs/architecture/appliances.json",
    "md": "/docs/architecture/appliances.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
