CATLX — Portability Architecture
This skill owns the portability constraint: the same runtime runs identically from the internal system
drive or an external NVMe SSD on any Windows machine, with zero reconfiguration. Portability is a core
architectural constraint, not an afterthought. USB flash-drive scenarios are excluded.
Canonical detail: ../../knowledge/references/portability.md. Load on demand.
Purpose
Ensure moving the CATLX directory to any location on any drive requires no reconfiguration and preserves the
full user state (memory, workflows, preferences) via machine-agnostic identity.
When to activate
- User asks how CATLX is portable, how paths work, or how it moves between machines.
- Configuring portable mode on an external SSD.
- Troubleshooting a hardcoded/absolute path or a move that broke a registry path.
What this skill handles
- The portability mandate — identical runtime from the internal drive or an external NVMe SSD on any
Windows machine, no reinstallation.
- Relative path architecture — no hardcoded absolute OS paths anywhere. All paths relative to
CATLX_ROOT (the dir containing the launcher, determined at startup from the launcher's own path).
Moving the directory requires zero reconfiguration.
- Runtime portability — bundles its own portable Node.js binary; no global Node install; all npm deps
vendored in
node_modules/; no internet needed to start.
- Database portability — SQLite in WAL mode with relative paths; DuckDB relative to
CATLX_ROOT;
ChromaDB relative persistence path; no registry entries, OS service installs, or drivers outside the CATLX
dir (except GPU drivers expected on the host).
- Portable external SSD configuration — portable-mode installer: consistent drive-letter auto-assignment
via disk-serial-number driver shim; writes a portability manifest to the drive root; Electron shell starts
tray-only (no taskbar entry) to minimize footprint on guest machines. (USB flash-drive wording removed.)
- Cross-machine identity — identity is a keypair in
/data/identity/; the private key never leaves CATLX;
memory, workflows, preferences are tied to identity, not the host machine; plugged into any machine the full
state is immediately available.
Requirements / constraints
- R3 (relative paths) and R11 (portability as a hard constraint).
- R12 (machine-agnostic identity).
- Windows
CATLX_ROOT detection from launcher.exe; portable Node distribution.
Canonical knowledge it reads
../../knowledge/references/portability.md · ../../knowledge/references/folder-structure.md ·
../../knowledge/rules/windows-rules.md · ../../knowledge/rules/architectural-rules.md.
Delegation
- Storage-class tier detection → delegate to
catlx-hardware-adaptation
(skill({ name: "catlx-hardware-adaptation" })).
- Relocatable volumes / portable image registry → delegate to
catlx-docker
(skill({ name: "catlx-docker" })).
- Portable memory stores across machines → delegate to
catlx-memory
(skill({ name: "catlx-memory" })).
- Config/path resolution for registries → delegate to
catlx-capability-routing
(skill({ name: "catlx-capability-routing" })).
Edge cases & warnings
- No hardcoded paths — reject any path not relative to
CATLX_ROOT.
- Drive-letter changes — portable mode's serial-number shim keeps a consistent letter on external drives.
- Missing GPU drivers on a new host — expected host-side; do not attempt to bundle them.
- Identity key — the private key must never leave
/data/identity/; it is the source of cross-machine
continuity.
- USB flash drives — excluded; portable storage means external NVMe SSD.
Component lifecycle policy (reuse → install → adapt → create)
NEVER create a new component as the default. Before building/creating anything (a sub-skill, dependency,
reference, workflow, helper, adapter, or template), check, in order:
- Reuse an existing local component (resolve aliases/equivalent capabilities first) — reuse, don't rebuild.
- Use an already-registered component from the registry.
- Install a suitable existing, trusted, supported component → validate → register → connect to the graph → use.
- Adapt an existing compatible component via a small persistent adapter/wrapper instead of re-creating it.
- Create only as last resort — then make it permanent immediately: stable id, canonical location, register,
add to the capability index + dependency graph, add provenance, use, and allow future reuse.
- Never reorganise/recreate already-generated components (no
Skill X 2 / new / temp variants); extend the
existing one. Never create a second competing knowledge source; connect back to the canonical knowledge/ layer.
Promote any reusable artifact out of /tmp/scratch into the permanent ecosystem.
Full policy: ../../knowledge/rules/component-lifecycle.md.
Source / provenance
- Source: PART XV §15.1–15.6 (portability mandate, relative path architecture, runtime portability,
database portability, portable external SSD configuration, cross-machine identity).
- Deviations (explicit): §15.7 USB Drive Performance Considerations is removed; portable-mode wording
changed from "external SSD or USB drive" to "external NVMe SSD"; USB drive-letter/flash references removed.
These are noted as deviations, not silent changes.
1---2name: catlx-portability-23description: Handles CATLX portability: the portability mandate, the CATLX_ROOT relative-path architecture, bundled Node runtime, database portability, portable external NVMe SSD configuration (portable mode), and machine-agnostic identity. USB flash-drive scenarios are excluded. Use when the user asks how CATLX runs identically from an internal drive or external SSD, how paths stay relative, how it's portable across machines, or about cross-machine identity.4---56# CATLX — Portability Architecture78This skill owns the **portability constraint**: the same runtime runs identically from the internal system9drive or an external NVMe SSD on any Windows machine, with **zero reconfiguration**. Portability is a core10architectural constraint, not an afterthought. **USB flash-drive scenarios are excluded.**1112> Canonical detail: `../../knowledge/references/portability.md`. Load on demand.1314---1516## Purpose1718Ensure moving the CATLX directory to any location on any drive requires no reconfiguration and preserves the19full user state (memory, workflows, preferences) via machine-agnostic identity.2021## When to activate2223- User asks how CATLX is portable, how paths work, or how it moves between machines.24- Configuring portable mode on an external SSD.25- Troubleshooting a hardcoded/absolute path or a move that broke a registry path.2627## What this skill handles28291. **The portability mandate** — identical runtime from the internal drive or an external NVMe SSD on any30 Windows machine, no reinstallation.312. **Relative path architecture** — no hardcoded absolute OS paths anywhere. All paths relative to32 **`CATLX_ROOT`** (the dir containing the launcher, determined at startup from the launcher's own path).33 Moving the directory requires zero reconfiguration.343. **Runtime portability** — bundles its own **portable Node.js** binary; no global Node install; all npm deps35 vendored in `node_modules/`; no internet needed to start.364. **Database portability** — SQLite in WAL mode with relative paths; DuckDB relative to `CATLX_ROOT`;37 ChromaDB relative persistence path; no registry entries, OS service installs, or drivers outside the CATLX38 dir (except GPU drivers expected on the host).395. **Portable external SSD configuration** — portable-mode installer: consistent drive-letter auto-assignment40 via disk-serial-number driver shim; writes a portability manifest to the drive root; Electron shell starts41 **tray-only** (no taskbar entry) to minimize footprint on guest machines. (USB flash-drive wording removed.)426. **Cross-machine identity** — identity is a keypair in `/data/identity/`; the private key never leaves CATLX;43 memory, workflows, preferences are tied to identity, not the host machine; plugged into any machine the full44 state is immediately available.4546## Requirements / constraints4748- **R3 (relative paths)** and **R11 (portability as a hard constraint)**.49- **R12 (machine-agnostic identity).**50- Windows `CATLX_ROOT` detection from `launcher.exe`; portable Node distribution.5152## Canonical knowledge it reads5354`../../knowledge/references/portability.md` · `../../knowledge/references/folder-structure.md` ·55`../../knowledge/rules/windows-rules.md` · `../../knowledge/rules/architectural-rules.md`.5657## Delegation5859- **Storage-class tier detection** → delegate to `catlx-hardware-adaptation`60 (`skill({ name: "catlx-hardware-adaptation" })`).61- **Relocatable volumes / portable image registry** → delegate to `catlx-docker`62 (`skill({ name: "catlx-docker" })`).63- **Portable memory stores across machines** → delegate to `catlx-memory`64 (`skill({ name: "catlx-memory" })`).65- **Config/path resolution for registries** → delegate to `catlx-capability-routing`66 (`skill({ name: "catlx-capability-routing" })`).6768## Edge cases & warnings6970- **No hardcoded paths** — reject any path not relative to `CATLX_ROOT`.71- **Drive-letter changes** — portable mode's serial-number shim keeps a consistent letter on external drives.72- **Missing GPU drivers on a new host** — expected host-side; do not attempt to bundle them.73- **Identity key** — the private key must never leave `/data/identity/`; it is the source of cross-machine74 continuity.75- **USB flash drives** — excluded; portable storage means external NVMe SSD.7677## Component lifecycle policy (reuse → install → adapt → create)7879**NEVER create a new component as the default.** Before building/creating anything (a sub-skill, dependency,80reference, workflow, helper, adapter, or template), check, in order:811. **Reuse** an existing local component (resolve aliases/equivalent capabilities first) — reuse, don't rebuild.822. **Use** an already-registered component from the registry.833. **Install** a suitable existing, trusted, supported component → validate → register → connect to the graph → use.844. **Adapt** an existing compatible component via a small persistent adapter/wrapper instead of re-creating it.855. **Create only as last resort** — then make it permanent immediately: stable id, canonical location, register,86 add to the capability index + dependency graph, add provenance, use, and allow future reuse.876. Never reorganise/recreate already-generated components (no `Skill X 2` / `new` / `temp` variants); extend the88 existing one. Never create a second competing knowledge source; connect back to the canonical `knowledge/` layer.89 Promote any reusable artifact out of `/tmp`/scratch into the permanent ecosystem.9091> Full policy: `../../knowledge/rules/component-lifecycle.md`.9293## Source / provenance9495- **Source:** PART XV §15.1–15.6 (portability mandate, relative path architecture, runtime portability,96 database portability, portable external SSD configuration, cross-machine identity).97- **Deviations (explicit):** §15.7 **USB Drive Performance Considerations is removed**; portable-mode wording98 changed from "external SSD or USB drive" to "external NVMe SSD"; USB drive-letter/flash references removed.99 These are noted as deviations, not silent changes.