CATLX — Docker Architecture
This skill owns the container isolation and deployment layer for heavy ML workloads, enterprise
multi-service deployments, and portable runtime packages. On Windows this is Docker Desktop with a WSL2
backend. Docker is not required for T0/T1 operation — all capabilities are available without it there.
Canonical detail: ../knowledge/references/docker.md. Fragment template:
../templates/docker-compose.fragment.yml. Load on demand.
Purpose
Isolate heavy workloads (LLM, Whisper, TTS, OCR, ChromaDB, browser, telemetry) and deploy CATLX services
portably with relocatable volumes and GPU passthrough.
When to activate
- User asks how CATLX uses containers, or which services run in containers.
- Writing/reading the Compose file, debugging a container crash/degradation, or offline mode.
- Enterprise deployment (Swarm/Kubernetes).
What this skill handles
- Container strategy — Docker for heavy ML/enterprise/portable packages; optional for T0/T1; preferred
on T2+ (or when Docker Desktop is present) for isolation.
- Core service containers —
catlx-core, catlx-llm-server, catlx-whisper, catlx-tts,
catlx-chromadb, catlx-browser, catlx-ocr, catlx-telemetry (GPU passthrough where relevant).
- Docker Compose configuration —
/docker/docker-compose.yml defines services, build contexts, volume
mounts, network config, GPU assignments, health checks, restart policies; docker-compose.override.yml for
per-machine customization.
- Portable containers & relocatable volumes — all volume mount points relative to
CATLX_ROOT; resolves
when moved to a new machine (internal → external NVMe SSD); image builder embeds a portable image registry
so images load without internet.
- Offline mode — triggered automatically on network-health-check failure; remote providers disabled, local
LLM servers serve all inference, marketplace browseable from cache, memory/workflow continue; on
reconnection auto-resume + sync queued ops.
- Enterprise (Docker Swarm & Kubernetes) — distribute services across nodes (LLM/OCR on GPU nodes, core/
telemetry on CPU nodes); Helm chart with Kubernetes-native health checks, HPA for inference, PVCs for data.
- Docker recovery —
restart: unless-stopped; container health monitoring; failure to become healthy →
mark capability degraded, route to fallbacks, surface 'Service Degraded'; full stack restart via dashboard
or voice "Restart CATLX services."
Requirements / constraints
- R10 (local-first/offline): must run fully functional without internet.
- R5: containers are the strictest plugin/agent sandbox tier (T2+).
- Windows: Docker Desktop + WSL2 backend; GPU passthrough for CUDA workloads (see
../knowledge/rules/windows-rules.md).
- Volumes relative to
CATLX_ROOT (portability, R3/R11).
Canonical knowledge it reads
../knowledge/references/docker.md · ../knowledge/rules/windows-rules.md ·
../knowledge/references/portability.md · ../knowledge/references/data-registries.md.
Delegation
- Which tier / container or fallback → delegate to
catlx-capability-routing
(skill({ name: "catlx-capability-routing" })).
- Container crash recovery → delegate to
catlx-recovery
(skill({ name: "catlx-recovery" })).
- Relocatable volume paths / portable registry → delegate to
catlx-portability
(skill({ name: "catlx-portability" })).
- Container sandbox security → delegate to
catlx-security
(skill({ name: "catlx-security" })).
- Containerized modules (SILEXIS packaging) → delegate to
catlx-silexis-modules
(skill({ name: "catlx-silexis-modules" })).
Edge cases & warnings
- Not required on T0/T1 — do not assume Docker is present; fall back to local process/subprocess.
- GPU passthrough — only on GPU-capable hosts; otherwise drop to CPU.
- Offline — never depend on remote provider/container registry when offline; use the portable registry +
local servers.
- Container health — a container that never becomes healthy marks the capability degraded and routes to
fallbacks; surface the alert.
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 XIV §14.1–14.7 (container strategy, core service containers, Compose config, portable
containers & relocatable volumes, offline mode, Swarm/Kubernetes, Docker recovery).
- Inferred/adapted: Windows Docker Desktop + WSL2 backend; USB-drive wording removed from relocatable
volume/portable-registry discussion (external NVMe SSD only).
1---2name: catlx-docker3description: CATLX — Docker Architecture4---56# CATLX — Docker Architecture78This skill owns the **container isolation and deployment layer** for heavy ML workloads, enterprise9multi-service deployments, and portable runtime packages. On Windows this is **Docker Desktop with a WSL210backend**. Docker is **not required** for T0/T1 operation — all capabilities are available without it there.1112> Canonical detail: `../knowledge/references/docker.md`. Fragment template:13> `../templates/docker-compose.fragment.yml`. Load on demand.1415---1617## Purpose1819Isolate heavy workloads (LLM, Whisper, TTS, OCR, ChromaDB, browser, telemetry) and deploy CATLX services20portably with relocatable volumes and GPU passthrough.2122## When to activate2324- User asks how CATLX uses containers, or which services run in containers.25- Writing/reading the Compose file, debugging a container crash/degradation, or offline mode.26- Enterprise deployment (Swarm/Kubernetes).2728## What this skill handles29301. **Container strategy** — Docker for heavy ML/enterprise/portable packages; optional for T0/T1; preferred31 on T2+ (or when Docker Desktop is present) for isolation.322. **Core service containers** — `catlx-core`, `catlx-llm-server`, `catlx-whisper`, `catlx-tts`,33 `catlx-chromadb`, `catlx-browser`, `catlx-ocr`, `catlx-telemetry` (GPU passthrough where relevant).343. **Docker Compose configuration** — `/docker/docker-compose.yml` defines services, build contexts, volume35 mounts, network config, GPU assignments, health checks, restart policies; `docker-compose.override.yml` for36 per-machine customization.374. **Portable containers & relocatable volumes** — all volume mount points relative to `CATLX_ROOT`; resolves38 when moved to a new machine (internal → external NVMe SSD); image builder embeds a portable image registry39 so images load without internet.405. **Offline mode** — triggered automatically on network-health-check failure; remote providers disabled, local41 LLM servers serve all inference, marketplace browseable from cache, memory/workflow continue; on42 reconnection auto-resume + sync queued ops.436. **Enterprise (Docker Swarm & Kubernetes)** — distribute services across nodes (LLM/OCR on GPU nodes, core/44 telemetry on CPU nodes); Helm chart with Kubernetes-native health checks, HPA for inference, PVCs for data.457. **Docker recovery** — `restart: unless-stopped`; container health monitoring; failure to become healthy →46 mark capability degraded, route to fallbacks, surface 'Service Degraded'; full stack restart via dashboard47 or voice "Restart CATLX services."4849## Requirements / constraints5051- **R10 (local-first/offline):** must run fully functional without internet.52- **R5:** containers are the strictest plugin/agent sandbox tier (T2+).53- Windows: Docker Desktop + WSL2 backend; GPU passthrough for CUDA workloads (see `../knowledge/rules/windows-rules.md`).54- Volumes relative to `CATLX_ROOT` (portability, R3/R11).5556## Canonical knowledge it reads5758`../knowledge/references/docker.md` · `../knowledge/rules/windows-rules.md` ·59`../knowledge/references/portability.md` · `../knowledge/references/data-registries.md`.6061## Delegation6263- **Which tier / container or fallback** → delegate to `catlx-capability-routing`64 (`skill({ name: "catlx-capability-routing" })`).65- **Container crash recovery** → delegate to `catlx-recovery`66 (`skill({ name: "catlx-recovery" })`).67- **Relocatable volume paths / portable registry** → delegate to `catlx-portability`68 (`skill({ name: "catlx-portability" })`).69- **Container sandbox security** → delegate to `catlx-security`70 (`skill({ name: "catlx-security" })`).71- **Containerized modules (SILEXIS packaging)** → delegate to `catlx-silexis-modules`72 (`skill({ name: "catlx-silexis-modules" })`).7374## Edge cases & warnings7576- **Not required on T0/T1** — do not assume Docker is present; fall back to local process/subprocess.77- **GPU passthrough** — only on GPU-capable hosts; otherwise drop to CPU.78- **Offline** — never depend on remote provider/container registry when offline; use the portable registry +79 local servers.80- **Container health** — a container that never becomes healthy marks the capability degraded and routes to81 fallbacks; surface the alert.8283## Component lifecycle policy (reuse → install → adapt → create)8485**NEVER create a new component as the default.** Before building/creating anything (a sub-skill, dependency,86reference, workflow, helper, adapter, or template), check, in order:871. **Reuse** an existing local component (resolve aliases/equivalent capabilities first) — reuse, don't rebuild.882. **Use** an already-registered component from the registry.893. **Install** a suitable existing, trusted, supported component → validate → register → connect to the graph → use.904. **Adapt** an existing compatible component via a small persistent adapter/wrapper instead of re-creating it.915. **Create only as last resort** — then make it permanent immediately: stable id, canonical location, register,92 add to the capability index + dependency graph, add provenance, use, and allow future reuse.936. Never reorganise/recreate already-generated components (no `Skill X 2` / `new` / `temp` variants); extend the94 existing one. Never create a second competing knowledge source; connect back to the canonical `knowledge/` layer.95 Promote any reusable artifact out of `/tmp`/scratch into the permanent ecosystem.9697> Full policy: `../knowledge/rules/component-lifecycle.md`.9899## Source / provenance100101- **Source:** PART XIV §14.1–14.7 (container strategy, core service containers, Compose config, portable102 containers & relocatable volumes, offline mode, Swarm/Kubernetes, Docker recovery).103- **Inferred/adapted:** Windows Docker Desktop + WSL2 backend; USB-drive wording removed from relocatable104 volume/portable-registry discussion (external NVMe SSD only).