ObjectOS is commercial-only; there is no open-source edition (as resources/license.mdx already states correctly). The Deploy section has not followed, and still teaches a licence-free, build-it-yourself path that cannot work.
Measured on content/docs/ at d13ba76.
What is wrong
Across all four Deploy pages — index, docker, kubernetes, air-gapped — the word "licence" appears zero times. For a product whose walled postures refuse to boot without one, the entire deployment section documents a path that does not exist.
deploy/docker.mdx specifically:
| Line | Says | Reality |
|---|
| «Build your own image» | git clone …/objectos.git then docker build -f docker/Dockerfile | This repository contains only the docs site. There is no docker/, no Dockerfile, no runtime source. The instruction cannot succeed. |
«We publish the runtime image … on every push to main» + latest / main / sha-<short> tag table | an open-source CI publishing story | Not how the commercial runtime is distributed |
| Node 20 Alpine | | the runtime image is Node 22 |
| (whole page) | no licence step at all | a reader following it end to end gets no licence, and therefore either a silent Community degrade or a hard boot refusal depending on posture |
deploy/air-gapped.mdx is worse than stale — it is reverse-wrong:
# Leave OS_CLOUD_URL unset to run fully offline
An unset OS_CLOUD_URL resolves to the default public control plane, not to "offline". On the composed shape this combination is now refused at startup. The page teaches a configuration that cannot boot. It also frames air-gap as a network property; for this product air-gap is a licence mode.
Decision taken
Previously published images are out of scope — do not document, reference, or preserve compatibility with them. The section is rewritten to the current rules, not reconciled with the old ones.
What the rewrite must carry
- The runtime image is pinned by digest, not by a moving tag.
- Licence is not optional and belongs in the happy path, including which licence mode each deployment shape requires.
- Air-gap is a licence mode, not a firewall configuration.
OS_CLOUD_URL and licence mode are mutually constrained; incompatible combinations are refused at startup rather than degrading silently. The page must state the supported combinations, not a knob to flip.- Multi-node changes what is mandatory (notably a shared secret — replicas generating their own diverge and the runtime refuses to start).
- Supply-chain verification (signature, SBOM, provenance) belongs in the production path.
Content boundary — the part that keeps this from rotting again
⛔ Do not inline the values a customer copies. The .env templates and compose files ship with the release and are covered by tests there; a prose copy on this site has nothing pinning it and will drift, which is exactly how the current pages got here.
The pages carry the decision shape — why digest pinning, which licence mode for which shape, what multi-node makes mandatory — and point at the release's deploy bundle for anything to be copied verbatim.
Locales
Seven locales (en, zh-Hans, ja, de, es, fr, ko); 4 English pages ⇒ 28 files. Fumadocs falls back to English when a translation is missing, so:
⇒ Delete the stale translations of any rewritten page rather than leaving them. A stale translation renders wrong content; a missing one renders correct English. ⛔ Do not leave a translated page asserting the retired story.
Note for whoever picks this up
AGENTS.md's Locale conventions section is itself out of date — it names en + cn with .cn.mdx siblings, while apps/docs/lib/i18n.ts defines the seven tags above and the content tree uses zh-Hans. A file named foo.cn.mdx would never render and would raise no error. Worth correcting in the same pass or as a follow-up.
ObjectOS is commercial-only; there is no open-source edition (as
resources/license.mdxalready states correctly). The Deploy section has not followed, and still teaches a licence-free, build-it-yourself path that cannot work.Measured on
content/docs/atd13ba76.What is wrong
Across all four Deploy pages —
index,docker,kubernetes,air-gapped— the word "licence" appears zero times. For a product whose walled postures refuse to boot without one, the entire deployment section documents a path that does not exist.deploy/docker.mdxspecifically:git clone …/objectos.gitthendocker build -f docker/Dockerfiledocker/, no Dockerfile, no runtime source. The instruction cannot succeed.main» +latest/main/sha-<short>tag tabledeploy/air-gapped.mdxis worse than stale — it is reverse-wrong:An unset
OS_CLOUD_URLresolves to the default public control plane, not to "offline". On the composed shape this combination is now refused at startup. The page teaches a configuration that cannot boot. It also frames air-gap as a network property; for this product air-gap is a licence mode.Decision taken
Previously published images are out of scope — do not document, reference, or preserve compatibility with them. The section is rewritten to the current rules, not reconciled with the old ones.
What the rewrite must carry
OS_CLOUD_URLand licence mode are mutually constrained; incompatible combinations are refused at startup rather than degrading silently. The page must state the supported combinations, not a knob to flip.Content boundary — the part that keeps this from rotting again
⛔ Do not inline the values a customer copies. The
.envtemplates and compose files ship with the release and are covered by tests there; a prose copy on this site has nothing pinning it and will drift, which is exactly how the current pages got here.The pages carry the decision shape — why digest pinning, which licence mode for which shape, what multi-node makes mandatory — and point at the release's deploy bundle for anything to be copied verbatim.
Locales
Seven locales (
en,zh-Hans,ja,de,es,fr,ko); 4 English pages ⇒ 28 files. Fumadocs falls back to English when a translation is missing, so:⇒ Delete the stale translations of any rewritten page rather than leaving them. A stale translation renders wrong content; a missing one renders correct English. ⛔ Do not leave a translated page asserting the retired story.
Note for whoever picks this up
AGENTS.md's Locale conventions section is itself out of date — it namesen+cnwith.cn.mdxsiblings, whileapps/docs/lib/i18n.tsdefines the seven tags above and the content tree useszh-Hans. A file namedfoo.cn.mdxwould never render and would raise no error. Worth correcting in the same pass or as a follow-up.