Found while fact-checking a self-hosting how-to for www.objectos.ai (issue #92 there) against shipping tooling. Filing unassigned — I only read this repo.
What the docs say
content/docs/reference/environment-variables.mdx, under Retired names:
| OS_ARTIFACT_PATH | OS_ARTIFACT_URL. The runtime image refuses a boot that carries a non-default OS_ARTIFACT_PATH, naming the replacement. Two spellings for "which artifact do I boot" is one dialect too many, and the retired one never carried an integrity pin. |
What ships in the open-source framework
In objectstack-ai/objectstack at origin/main:
docker/Dockerfile — the official open runtime image, ghcr.io/objectstack-ai/objectstack — sets it as a preset:
ENV NODE_ENV=production OS_ARTIFACT_PATH=/srv/app/objectstack.json OS_PORT=8080
packages/cli/src/commands/start.ts resolves it as a normal input (~190 references to the name across packages/**).
Measured on this machine with @objectstack/cli@17.2.0 (the current npm latest), Node 22, PostgreSQL 16 — booting an artifact by path succeeds, with no deprecation notice and no refusal:
OS_ARTIFACT_PATH="$PWD/dist/objectstack.json" npx os start
...
📦 Artifact: dist/objectstack.json
✓ Server is ready
Mode: production
Driver: SqlDriver(pg) → postgres://127.0.0.1:5432/osverify
Why this may be correct as written
The same page keys other rows to the enterprise deploy bundle (OS_EE_IMAGE, OS_LICENSE_KEY, OS_COMPOSED_ARTIFACT_URL), so "the runtime image" here plausibly means the ObjectOS EE image, not ghcr.io/objectstack-ai/objectstack. If so nothing is broken — but the page never says which image it means, and the variable is not scoped the way the licence/tenancy rows are.
Why it is still worth a look
A reader self-hosting the open runtime is the exact audience for a page titled "Environment Variables", and the sentence they meet tells them that a variable the open image itself presets is retired and will refuse their boot. The cheap fix is a scope qualifier on that row naming which image refuses, rather than any behaviour change.
No existing open issue mentions OS_ARTIFACT_PATH (checked the 14 open issues in this repo).
Generated by Claude Code
Found while fact-checking a self-hosting how-to for
www.objectos.ai(issue #92 there) against shipping tooling. Filing unassigned — I only read this repo.What the docs say
content/docs/reference/environment-variables.mdx, under Retired names:What ships in the open-source framework
In
objectstack-ai/objectstackatorigin/main:docker/Dockerfile— the official open runtime image,ghcr.io/objectstack-ai/objectstack— sets it as a preset:ENV NODE_ENV=production OS_ARTIFACT_PATH=/srv/app/objectstack.json OS_PORT=8080packages/cli/src/commands/start.tsresolves it as a normal input (~190 references to the name acrosspackages/**).Measured on this machine with
@objectstack/cli@17.2.0(the current npmlatest), Node 22, PostgreSQL 16 — booting an artifact by path succeeds, with no deprecation notice and no refusal:Why this may be correct as written
The same page keys other rows to the enterprise deploy bundle (
OS_EE_IMAGE,OS_LICENSE_KEY,OS_COMPOSED_ARTIFACT_URL), so "the runtime image" here plausibly means the ObjectOS EE image, notghcr.io/objectstack-ai/objectstack. If so nothing is broken — but the page never says which image it means, and the variable is not scoped the way the licence/tenancy rows are.Why it is still worth a look
A reader self-hosting the open runtime is the exact audience for a page titled "Environment Variables", and the sentence they meet tells them that a variable the open image itself presets is retired and will refuse their boot. The cheap fix is a scope qualifier on that row naming which image refuses, rather than any behaviour change.
No existing open issue mentions
OS_ARTIFACT_PATH(checked the 14 open issues in this repo).Generated by Claude Code