Nishi Family › Compare › 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
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.
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
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
| # | Stage | Rung | Priority | Derivation |
|---|---|---|---|---|
| F | FINISH | Job-Object governance (CT0) SetInformationJobObject | SOURCE-ONLY | source exists, never compiled: /api/build it |
| F | FINISH | Content-addressed registry (CR0) CONTAINERREGISTRYGATE | SOURCE-ONLY | source exists, never compiled: /api/build it |
| #1 | 0.1 | P2P publish by digest (CT3) reg_p2p_publish | 1866 | v=14 m=2 c=15 |
| #2 | later | Quota depth (CT1) pe_job_quota_set | 800 | v=6 m=2 c=15 |
| #3 | later | Syscall filter (CT2) sc_syscall_filter | 400 | v=6 m=2 c=30 |
Critical path — contract, done-rule, executor, cost
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Job-Object governance (CT0) | SetInformationJobObject | Basic Job limits live on the governed child -- LANDED | Organ | 0 u |
| Content-addressed registry (CR0) | CONTAINERREGISTRYGATE | Put and get by digest, tampered blob refused -- LANDED gated | Organ | 0 u |
| Quota depth (CT1) after CT0 | pe_job_quota_set | cpu-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 emitter | Organ | 1.5 u |
| Syscall filter (CT2) after CT0 | sc_syscall_filter | A 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) | Organ | 3 u |
| P2P publish by digest (CT3) after CR0 | reg_p2p_publish | Publish 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 check | Organ | 1.5 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| M1 · Bounded children | CT1 | 1.5 u |
| M2 · Distributed by digest | CT3 | 3 u |
| M3 · Filtered like the Linux stack | CT2 | 6 u |
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
| Capability | Nishi | Docker Desktop | Portainer | Podman | Kubernetes |
|---|---|---|---|---|---|
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. | ● | ◉ | ◐ | ● | ○ |
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. | ● | ● | ◐ | ◐ | ◉ |
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. | ● | ◐ | ◐ | ● | ● |
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 — watchingruntime/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 | ○ | ● | ● | ● | ◉ |
Resource quota depth (cpu, memory, io bound per governed child)Open — watchingruntime/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 | ○ | ● | ● | ● | ◉ |
P2P image distribution over the live torrent planeOpen — watchingruntime/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 | ○ | ◉ | ◐ | ◉ | ● |
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. | ● | ◉ | ◐ | ◉ | ● |
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. | ◉ | ○ | ○ | ○ | ○ |
Risk register
| Risk | Likelihood x impact | Mitigation |
|---|---|---|
| A filter that blocks a call the governed CUDA engine needs bricks image-gen, the only production workload | possible x high | CT2 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 outage | possible x medium | CT1 done-rule is BOUNDED not killed; the kill path stays the supervisor's, single responsibility. |
Person · product · place — not yet measured for this domain
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
- [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· pinh5302a649aeea9618d7da96a9736c3651f6369d50dbc6edef137ac1feb90a5f6e· 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. - [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· pinhd4164e8141f3e08200e516f740df49d6369666007febe2bcaed660cdf9c9bdaf· 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. - [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· pinh2b67056e20dc9563da7d28906b877cab158d740f023b9a08271d38047088d046· 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. - [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· pinhc872c5bc6a95bd22216ac3c31eb42499bb459054d0d5cbced8da503d042ef094· 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). - [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· pinh2c91059571135379613836c808ab83040714818126088e3dd3b200f5accd1c93· 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. - [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· pinh542d8e9ad33361f0277a813b4bef0fd7f0db878a173c36f8a75807163c14c6d1· 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. - [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· pinh82d0a4ab5248257c09dcced343ed87b5a729448e9d5f7ca13008592294942279· 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. - [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· pinh7b8c94b7eeeb7a07dc063ecfb852959cbe32f01b7d4e33fe90eee9d4d4c1fdc0· 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. - [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· pinh98a4ffbab2d0856e58a4faa6c335b02b288bec61e2290c8fdbdabeac288c2b08· 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