Nishi FamilyCompare › Containers and Orchestration

Nishi Compare · measured, not asserted

Containers and Orchestration

Nishi vs the field — every Nishi cell is measured against real organ source at emit time; each gap names the watch contract that will close it.

The sovereign daemonless Nishi Container Host vs Docker Desktop and Portainer and Podman and Kubernetes -- runtime measured live on the RTX 5080 Windows host that runs Elder AI image-gen off Docker

Layer 1 · Executive

Where we are. The sovereign daemonless container host is real and measured on the RTX 5080 host: Windows Job-Object isolation and lifecycle, a declarative ContainerSpec driving a 2560-byte governance PE, a topological compose planner, live supervision with self-restart, never-brick deploy, one-command ship, fleet inventory API and SSE, the Sovereign Fleet UI, native GPU ownership (10.9GB VRAM image-gen live), rootless zero-admin operation, and a content-addressed registry. Four measured exceeds: 0 MB idle, 2560-byte runtime, 976 ms cold start with zero VM tax, whole runtime auditable bits-up. Named gaps: quota depth, syscall filtering, P2P distribution.

Where we need to go. Isolation the Linux stack takes for granted -- bounded cpu, memory and io per governed child and a syscall filter -- without giving up the zero-overhead exceeds, and distribution of container PEs peer-to-peer over the live torrent plane by digest.

The unit. 1 u = one measured session-leg (estate calibration: graphics R21 in one leg 2026-08-15). Local evidence: the content-addressed registry (CONTAINERREGISTRYGATE, byte-identical round-trip on real PEs) landed in one leg; estimates are relative to that.
Where we are: 3 open rungs. Runtime and exceeds proven live; depth of isolation and distribution behind the Linux stack. Counts measured at emit below this line.
Cost to bounded children: 1.5 u. CT1 per-spec cpu, working-set and io quotas on the Job before the child starts.
Cost to a syscall filter: 3 u. CT2 the Windows-native equivalent of seccomp for the governed child -- the hardest rung on this board and the one the field ships by default.
Cost to P2P distribution: 1.5 u. CT3 publish-by-digest onto the torrent plane the estate already seeds and announces.

Research bar. Docker and the OCI stack is measured on seccomp default profiles, cgroups quotas, Hub plus OCI distribution. Theirs: the Linux isolation and distribution reference. Ours: CT1 CT2 CT3 measured on this page.

Research bar. Kubernetes is measured on requests and limits per container, liveness probes. Theirs: the orchestration reference. Ours: CT1.

9 of 22 capabilities measured|1 of them measured exceeds|13 open|coverage 409/1000|adoption 4 full / 5 partial

Layer 2 · Roadmap

Do this next — computed by the ranker, never chosen by a seat

Order from nx_compare_rank (nx_dr_ocm: (deficit + cost-of-delay + option + enables) x sponsor x self-sufficiency x momentum / cost). FINISH rows are rungs whose symbol is present but whose organ is short of full adoption: the cheapest closures on this board, listed before any new work. Stamp: # asof=1787883503 domain=containers target_version=0.1 rungs=5 done=2 open=3 finish=2 ranker=nx_dr_ocm

#StageRungPriorityDerivation
FFINISHJob-Object governance (CT0) SetInformationJobObjectSOURCE-ONLYsource exists, never compiled: /api/build it
FFINISHContent-addressed registry (CR0) CONTAINERREGISTRYGATESOURCE-ONLYsource exists, never compiled: /api/build it
#10.1P2P publish by digest (CT3) reg_p2p_publish1866v=14 m=2 c=15
#2laterQuota depth (CT1) pe_job_quota_set800v=6 m=2 c=15
#3laterSyscall filter (CT2) sc_syscall_filter400v=6 m=2 c=30

Critical path — contract, done-rule, executor, cost

RungCloses withDefinition of done (pre-declared)ExecutorEst.
Job-Object governance (CT0)SetInformationJobObjectBasic Job limits live on the governed child -- LANDEDOrgan0 u
Content-addressed registry (CR0)CONTAINERREGISTRYGATEPut and get by digest, tampered blob refused -- LANDED gatedOrgan0 u
Quota depth (CT1)
after CT0
pe_job_quota_setcpu-rate, working-set and io quotas read from the ContainerSpec and applied to the Job before CreateProcessW; gate proves a child that exceeds its working-set quota is BOUNDED (page-faulted, not killed) and a spec without quotas is refused by the emitterOrgan1.5 u
Syscall filter (CT2)
after CT0
sc_syscall_filterA per-spec deny-list enforced on the governed child through the host's native mitigation policy surface; gate proves a denied call in the child fails with the policy named while the same binary outside the filter succeeds (the positive control)Organ3 u
P2P publish by digest (CT3)
after CR0
reg_p2p_publishPublish a registry blob onto the live torrent plane keyed by its SHA-256; gate proves a second host pulls it peer-to-peer and the digest verifies, and a corrupted piece is refused by the same checkOrgan1.5 u

Milestones

MilestoneRungsCumulative
M1 · Bounded childrenCT11.5 u
M2 · Distributed by digestCT33 u
M3 · Filtered like the Linux stackCT26 u
Layer 3 · Engineering
How this is scored. Every Nishi mark is measured: the generator reads the real organ source on disk and requires the implementing symbol to exist (no self-grading). A watching tag names the organ and symbol contracted to close a gap — the mark flips itself on the next compare beat when that workstream ships, and the comparewatch- plane row flips with it. The flip is necessary, not sufficient: it proves the symbol exists, never that the capability is good. The bar is the rung's pre-declared done-rule, proven by its gate — a symbol shipped without the behaviour behind it is a defect, and the flip is exactly what makes that defect visible instead of quiet. Competitor marks record documented capability presence — presence, not depth or scale. Adoption is measured too: every measured row carries where its organ stands on the estate's ladder (source → built → promoted → registered → invoked; libraries by importer reach minus validation importers; gates by the execution surfaces that run them). A row is fully adopted only at the top of its ladder; anything short is tagged partial with the exact remedy, so a build nobody promoted can no longer read as shipped. Census stamps: importers asof 1787849099, gate census asof 1787855507 (unix seconds; -1 = census absent).

Capability matrix — measured against source

leads / measured exceed present partial absent · click any capability for its evidence

CapabilityNishiDocker DesktopPortainerPodmanKubernetes
Process isolation primitiveOpen — no implementing organ is measured for this axis yet. Linux stack isolates via namespaces plus cgroups and K8s pods; Portainer delegates to the engine it manages; Nishi governs natively via Windows Job Objects [win-job-objects]
Lifecycle governance run-wait-reapOpen — no implementing organ is measured for this axis yet. Nishi container PE creates the Job then CreateProcessW then Wait then ExitCode then clean reap -- proven live governing the CUDA engine
Declarative service specOpen — no implementing organ is measured for this axis yet. K8s declarative YAML is the reference; Compose files yes; Portainer edits stacks over an engine; Nishi ContainerSpec drives the emitter from data
Build runnable artifact from specMeasured: CONTAINERSPECGATE exists in runtime/nx_container_spec_emit.nx, verified at emit. docker build with BuildKit is Best in class; podman build yes; K8s delegates builds; Nishi stamps the spec onto a proven 2560-byte governance PE template Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
adoption SOURCE-ONLY
Multi-service orchestration dependency orderMeasured: CONTAINERCOMPOSEGATE exists in runtime/nx_container_compose.nx, verified at emit. K8s is the orchestration reference; compose depends_on yes; podman kube partial; Nishi topological planner rejects cycles and missing deps by construction Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
adoption SOURCE-ONLY
Health probe plus auto-restart supervisionMeasured: crash-loop exists in runtime/_hdl_build/nx_hostctl.nx, verified at emit. K8s liveness and readiness probes are Best [k8s-probes]; Docker healthcheck and restart policies; Nishi hostctl supervise runs live in production (PID-liveness plus SERVING probe HUNG-aware plus crash-loop backoff) AND the Windows container PE now self-restarts its governed child -- respawn proven live with 3 distinct child PIDs, hand-emitted in a 2560-byte PE Adoption: LIVE-DAEMON — fully adopted (top of its ladder).
Never-brick deploy health-gated promote auto-rollbackOpen — no implementing organ is measured for this axis yet. K8s rolling update can undo; plain Docker and Podman have none; Portainer redeploys without health-gated auto-rollback; Nishi /api/deploy watchdog rolls back BY CONSTRUCTION
One-command source to live pipelineMeasured: SHIPPED exists in runtime/nx_ship.nx, verified at emit. Portainer GitOps stack redeploy is its strength; Nishi nx_ship packs then uploads then builds on target over sovereign TLS in one command Adoption: RUN-BY:fork:nx_ws_hygiene_gate — fully adopted (top of its ladder).
Live fleet inventory APIMeasured: /api/services exists in runtime/_hdl_build/nx_mgmt_api.nx, verified at emit. Portainer UI and kubectl get are Best; docker ps yes; Nishi GET /api/services serves the live multi-service inventory over the sovereign mgmt API Adoption: LIVE-DAEMON — fully adopted (top of its ladder).
Event stream monitoring hooksMeasured: event-stream exists in runtime/_hdl_build/nx_mgmt_api.nx, verified at emit. docker events yes; K8s watch API Best; Nishi GET /api/events serves text/event-stream to EventSource clients Adoption: LIVE-DAEMON — fully adopted (top of its ladder).
Container fleet management web UIOpen — no implementing organ is measured for this axis yet. Portainer is the reference container UI but needs a root-equivalent engine socket [portainer-docs]; Nishi Sovereign Fleet at /health is LIVE behind the operator login -- per-service cards with state and crash-loop and port-squatter warnings, allowlisted restart actions, deploy status and an SSE live tick, rendered by the engine itself
GPU workloads in containersMeasured: sd-server exists in runtime/nx_pe_container_sdserver.nx, verified at emit. Docker Desktop routes GPU through the WSL2 VM [docker-desktop-gpu]; podman CDI and K8s device plugins are Linux-native; the Nishi-governed child owns the RTX 5080 natively -- 10.9GB VRAM Z-Image generation proven live Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
adoption SOURCE-ONLY
Rootless least-privilege operationOpen — no implementing organ is measured for this axis yet. Podman pioneered rootless and is Best [podman-rootless]; Docker rootless mode is non-default; Portainer needs the engine socket which is root-equivalent; Nishi runs as the plain user with zero daemon and zero admin
Resource limit quotasOpen — no implementing organ is measured for this axis yet. cgroups give full cpu-mem-io quotas and K8s requests-limits are Best [linux-namespaces7]; Nishi Job-Object limits are basic today -- quota depth is a named gap
Syscall-filter sandboxing depthOpen — watching runtime/nx_container_seccomp.nx : sc_syscall_filter, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. seccomp and AppArmor ship default on the Linux stack [docker-seccomp] and gVisor or Kata harden further; Nishi has Job-Object boundaries only -- no syscall filter yet
watching sc_syscall_filter
Resource quota depth (cpu, memory, io bound per governed child)Open — watching runtime/nx_pe_container_win.nx : pe_job_quota_set, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. The resource-limit row above is present at BASIC Job-Object depth; cgroups v2 and K8s requests-limits bound cpu, memory and io per container -- the contract is per-spec cpu-rate, working-set and io quotas applied to the Job before the child starts, proven by a child that exceeds its quota being bounded not killed
watching pe_job_quota_set
P2P image distribution over the live torrent planeOpen — watching runtime/nx_container_registry.nx : reg_p2p_publish, re-measured on every compare beat. Ship that symbol and this mark flips itself; the comparewatch- plane row flips with it. The content-addressed registry row above is present; Docker Hub plus OCI distribution is the ecosystem reference -- the contract named in that row's own note is publish-by-digest onto the live torrent plane so a second host pulls a container PE peer-to-peer and verifies the same SHA-256
watching reg_p2p_publish
Image registry and distributionMeasured: CONTAINERREGISTRYGATE exists in runtime/nx_container_registry.nx, verified at emit. Docker Hub plus OCI distribution is the ecosystem Best and Podman is full OCI [oci-distribution]; Nishi now has a sovereign content-addressed registry -- put and get by name where the SHA-256 digest IS the address (dedup plus integrity by construction), a tampered blob is refused on pull; proven on real container PEs (byte-identical round-trip), P2P distribution over the live torrent plane is the next rung Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
adoption SOURCE-ONLY
EXCEED measured: idle overhead 0 MB 0 processesOpen — no implementing organ is measured for this axis yet. Measured live on this host: Nishi 0 MB and 0 procs idle vs Docker Desktop 2774 MB and 6 procs [docker-desktop-docs]; a K8s control plane is heavier still; verdicts computed by the liar-killed judge nx_container_bench
EXCEED measured: runtime install 2560 bytesOpen — no implementing organ is measured for this axis yet. The whole Nishi container runtime is a 2560-byte PE vs Docker Desktop 4.11 GB install [docker-desktop-docs]; Portainer adds hundreds of MB on top of an engine it requires
EXCEED measured: cold start 976 ms with zero VM taxOpen — no implementing organ is measured for this axis yet. First governed process 976 ms vs Docker 1660 ms and isolation VM tax 0 vs 2225 MB -- no WSL2 or HyperV VM under the runtime on Windows [docker-desktop-docs]
EXCEED sovereign: whole runtime auditable bits-upMeasured exceed: Job-governs in runtime/nx_pe_container_sdserver.nx, verified at emit. The entire runtime emitter orchestrator and judge are readable sovereign source with zero third-party dependencies; incumbents are millions of lines over kernel plumbing no operator can audit Adoption: SOURCE-ONLY — PARTIAL: source exists, never compiled: /api/build it.
adoption SOURCE-ONLY

Risk register

RiskLikelihood x impactMitigation
A filter that blocks a call the governed CUDA engine needs bricks image-gen, the only production workloadpossible x highCT2 ships with the positive control (the engine's full syscall set recorded first) and never-brick deploy behind it.
Quotas that kill instead of bound turn a slow child into an outagepossible x mediumCT1 done-rule is BOUNDED not killed; the kill path stays the supervisor's, single responsibility.
On these two registers. Rows are declared in the domain's plan file and carry the debt id, which is the join key back to the sovereign debt plane — that plane, not this page, is the authority on state. Reconciling them automatically (the regen reading the plane and refreshing these rows) is a named, owed rung; until it lands, treat an id here as a pointer to look up, not a status to trust.
Honest verdict. The coverage above is capability presence measured against source — not depth, scale, or polish, where mature rivals may lead. Exceeds are claimed only where a mechanism backs them. Every open gap is a watch contract: it names the organ and symbol that closes it, and this page flips the cell itself when that workstream ships.

Person · product · place — not yet measured for this domain

Every compare carries this layer. Declare knowledge/compare/containers.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain containers, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).

References

Beyond a link list. Every reference below resolves twice — the publisher's copy and, where banked, the estate's own non-rottable library mirror with a content pin — and carries its evidence class plus the exact claim on this page it grounds. Keyed marks like [key] in the matrix notes jump here. A dash means honestly absent, never assumed.
  1. [docker-desktop-docs] Docker Inc. Docker Desktop documentation (docs.docker.com/desktop): the Windows/macOS/Linux desktop product that bundles Docker Engine, CLI, Compose and BuildKit inside a managed VM (WSL 2 or Hyper-V backend on Windows). publisher · read in our library knowledge/fetched/cmp_containers_docker-desktop.html · pin h5302a649aeea9618d7da96a9736c3651f6369d50dbc6edef137ac1feb90a5f6e · accessed 2026-08-18 · vendor-docGrounds: The Docker Desktop column across the register and the three EXCEED measured rows -- idle overhead 0 MB 0 processes, runtime install 2560 bytes, cold start 976 ms with zero VM tax: the 2774 MB / 6 processes / 4.11 GB / 1660 ms incumbent numbers were measured against THIS product on the same host, and its VM-backed architecture is why the isolation VM tax exists at all.
  2. [docker-desktop-gpu] Docker Inc. GPU support in Docker Desktop (docs.docker.com/desktop/features/gpu): NVIDIA GPU access from containers on Windows via the WSL 2 backend and the NVIDIA driver for WSL. publisher · read in our library knowledge/fetched/cmp_containers_docker-gpu.html · pin hd4164e8141f3e08200e516f740df49d6369666007febe2bcaed660cdf9c9bdaf · accessed 2026-08-18 · vendor-docGrounds: The GPU workloads in containers row: Docker Desktop routes the GPU through the WSL 2 VM (Part), which is the exact contrast to the Nishi-governed child owning the RTX 5080 natively -- 10.9 GB VRAM Z-Image generation proven live.
  3. [portainer-docs] Portainer.io. Portainer documentation (docs.portainer.io): container management UI for Docker, Docker Swarm, Kubernetes and Podman environments, deployed as a container connected to the engine socket or agent. publisher · read in our library knowledge/fetched/cmp_containers_portainer.html · pin h2b67056e20dc9563da7d28906b877cab158d740f023b9a08271d38047088d046 · accessed 2026-08-18 · vendor-docGrounds: The Portainer column: Container fleet management web UI (Best, but needs a root-equivalent engine socket), Live fleet inventory API (Best), One-command source to live pipeline (GitOps stack redeploy) and the Process isolation primitive note that Portainer delegates to the engine it manages.
  4. [podman-rootless] Containers project. Basic Setup and Use of Podman in a Rootless environment (docs/tutorials/rootless_tutorial.md in the podman repository): user namespaces, subuid/subgid, no daemon and no root required. publisher · read in our library knowledge/fetched/cmp_containers_podman-rootless.html · pin hc872c5bc6a95bd22216ac3c31eb42499bb459054d0d5cbced8da503d042ef094 · accessed 2026-08-18 · vendor-docGrounds: The Rootless least-privilege operation row where Podman is Best (pioneered rootless, daemonless) -- the bar the Nishi plain-user zero-daemon zero-admin PE is graded against -- and the Podman column on Build runnable artifact and Image registry and distribution (full OCI).
  5. [k8s-probes] The Kubernetes Authors. Configure Liveness, Readiness and Startup Probes (kubernetes.io/docs/tasks/configure-pod-container). publisher · read in our library knowledge/fetched/cmp_containers_k8s-probes.html · pin h2c91059571135379613836c808ab83040714818126088e3dd3b200f5accd1c93 · accessed 2026-08-18 · vendor-docGrounds: The Health probe plus auto-restart supervision row where K8s liveness and readiness probes are Best: the probe semantics (kubelet restarts a container that fails its liveness probe) are the bar hostctl supervise (PID-liveness plus SERVING probe HUNG-aware plus crash-loop backoff) and the self-restarting Windows container PE are measured against.
  6. [oci-distribution] Open Container Initiative. OCI Distribution Specification (opencontainers/distribution-spec): the HTTP API for pushing and pulling content-addressed blobs and manifests by digest. publisher · read in our library knowledge/fetched/cmp_containers_oci-distribution.html · pin h542d8e9ad33361f0277a813b4bef0fd7f0db878a173c36f8a75807163c14c6d1 · accessed 2026-08-18 · published-standardGrounds: The Image registry and distribution row: Docker Hub plus OCI distribution is the ecosystem Best and Podman is full OCI; the Nishi sovereign registry where the SHA-256 digest IS the address (dedup plus integrity by construction, tampered blob refused on pull) is a content-addressed store of the same shape without the ecosystem.
  7. [win-job-objects] Microsoft. Job Objects (Windows App Development, learn.microsoft.com/windows/win32/procthread/job-objects): a job object allows groups of processes to be managed as a unit with enforceable limits and kill-on-close semantics. publisher · read in our library knowledge/fetched/cmp_containers_win-job-objects.html · pin h82d0a4ab5248257c09dcced343ed87b5a729448e9d5f7ca13008592294942279 · accessed 2026-08-18 · vendor-docGrounds: The Process isolation primitive (CreateJobObjectW), Lifecycle governance run-wait-reap and Resource limit quotas (SetInformationJobObject) rows: the Windows kernel primitive the 2560-byte Nishi container PE governs with, and why quota depth is a named gap versus cgroups.
  8. [linux-namespaces7] Linux man-pages project. namespaces(7) -- overview of Linux namespaces (man7.org): the kernel isolation facility that, with cgroups, underlies Docker, Podman and Kubernetes pods. publisher · read in our library knowledge/fetched/cmp_containers_namespaces7.html · pin h7b8c94b7eeeb7a07dc063ecfb852959cbe32f01b7d4e33fe90eee9d4d4c1fdc0 · accessed 2026-08-18 · vendor-docGrounds: The Process isolation primitive row note that the Linux stack isolates via namespaces plus cgroups and K8s pods, and the Resource limit quotas row where cgroups give full cpu-mem-io quotas -- the Linux-native primitive set the Windows Job-Object lane is contrasted with.
  9. [docker-seccomp] Docker Inc. Seccomp security profiles for Docker (docs.docker.com/engine/security/seccomp): the default seccomp profile shipped with Docker Engine blocks a set of syscalls for every container. publisher · read in our library knowledge/fetched/cmp_containers_docker-seccomp.html · pin h98a4ffbab2d0856e58a4faa6c335b02b288bec61e2290c8fdbdabeac288c2b08 · accessed 2026-08-18 · vendor-docGrounds: The Syscall-filter sandboxing depth row (_ABSENT_ nx_container_seccomp): seccomp ships default on the Linux stack, which is the bar the Job-Object-only Nishi boundary is honestly marked 0 against -- gVisor and Kata harden further and are not cited here.

generated by nx_swcompare_matrix (sovereign NishiLang organ) from knowledge/compare/containers.matrix · every Nishi cell verified against organ source at emit time · watch cells re-measured on every compare beat · zero JS, zero trackers