Naming invariant: Cortex is the permanent component name; stable surfaces cortex-, CORTEX_, cortex-api, cortex-pg, local-cortex/. A redist without Cor…
redistributable/schema/cortex-project-pack.schema.jsonschema_version, kind: kaidera-os.project-pack, pack, project, extensions, portals[], generic assets[] (type ∈ {agent_prompt, cortex_seed, extension, frontend, filevault, config, docs, other}); the personas/skills/templates/ontology/cortex-seed layout is the fde-os pack convention (18-fde-os-turnkey §6), not a schema fielddocs/design/16-product-package-boundary.md + check-package-boundary.sh fitness gatekaidera.ai release JSON{edition, channel, version, artifact_url, sha256} — source of truth consumed by promote-commercial.pyhomebrew-kaiderakaidera-os.rb (OSS, GitHub tarball) · commercial template + operator cask rendered only from live website manifest · npm @kaidera/kaidera-os · curl installerkaidera-skillskos-infrakos-infra → localhost:8501)localhost:850102-cust-portal/cortex-service (ADR-023)cortex-api service container inside the appliance VM (appliance/appliance.yml), Cortex vendored as a hash-pinned wheel in the image (E021 pattern, design 23)Kaidera-AI/cortex (MIT), the current public product line: brew/curl native install pulling upstream Postgres (handoffs 57a68a67, aab66a36)Kaidera-AI/cortexappliance/appliance.yml (service roles) + appliance/bin/kos (operator)local-cortex/console/app/main.py under a systemd unit (install.sh lane; launchd on the Mac dev box), deployment_contract.py profile nativeopenkai, omp, node runtime; optional claude-code, codex), app/harness.py support tiers~/.openkai/.env is owned by OpenKaiappliance/Containerfile.{cortex,db} + per-role stagesdb (pgvector 0.8.2 on Postgres 18), migrate, cortex-api, project-bootstrap, graph-worker, embed-worker, pdf-worker; Cortex vendored as a hash-pinned wheel; only loopback ports published<project>_kos-control:/appliance.env (bin/kos CONTRACT_KEYS, schema 2)KOS_DB_PASSWORD, KOS_CORTEX_ADMIN_TOKEN…), KOS_EDITION, KOS_VERSION, KOS_SOURCE_REVISION, volume names, db tuning keys (KOS_DB_*); the console reads the tokens it needs from its runtime env, never from the browserkos-control, kos-state, kos-config, kos-secrets, kos-graphs, kos-models, kos-home-*lifecycle.operation in the control volume (CAS: build, up, down, backup, restore, upgrade, abandon, prune)up leaves up:claimed for the next command's recoveryapp/edition.py, baked at build (KOS_EDITION ∈ {dev, open-source, commercial}):z, linger, subuid/subgidinstall.sh (host lane) + M1/M3/M12kos; preflights old engines, stale ports, machine sizing (Mac)dist/release.sh, scripts/release/*, RELEASE_MANIFEST.jsonkos build from a clean checkout (dev)kos backup / kos restore (appliance/bin/kos) + the console state directorypg_dump -Fc of both databases + volume manifests; the ONLY sanctioned direct-Postgres path (E021 lifecycle boundary), never --no-owner/--no-privilegesdeployment_contract.py (KAIDERA_CONSOLE_RUNTIME=native), .agents/docker-compose.cortex.yml, launchd agents, podman machine (Fedora CoreOS guest, never Apple Container)The appliance is a Linux VM. Inside it the KOS console runs natively as a service, the harness CLIs are installed locally, and Cortex with its services runs as podman containers. Commercial ships Linux only. The macOS development box has the same shape with the containers in podman machine. Windows is not a target. Every object cites its backing file.
Actions. installer (host bootstrap) · kos build | up | down | doctor | backup | restore | upgrade | prune | abandon | contract-migrate | admin-bootstrap (services) · systemctl --user (console, beat) · openkai / omp / claude / codex (harness lanes, spawned by the console).
Versions immutable, never reused · commercial artifact published only from kaidera.ai (never GitHub releases) · prod origins baked: KAIDERA_OS_PLATFORM_URL=https://api.kaidera.ai, KAIDERA_OS_PORTAL_URL=https://app.kaidera.ai, KAIDERA_MANIFOLD_BASE_URL=https://api.kaidera.ai/v1.