docs: introduce Layered Memory Fabric terminology (Sam & Codex)

Replaces public split-brain wording with Layered Memory Fabric, documents the skills/brain/ops planes, and sketches the shared FreeBSD/Linux install contract around PostgreSQL, ZFS/OpenZFS, and platform isolation adapters.\n\nChecks: npx --yes prettier@3 --check touched docs/html; git diff --check

---
Build: pass | Tests: FAIL — 1 failed
This commit is contained in:
Sam & Claude 2026-06-13 14:01:50 +02:00
parent 8855b123ed
commit faf060e0ce
20 changed files with 208 additions and 118 deletions

View file

@ -142,7 +142,7 @@ just setup-cms # npm run setup -- --step cms
- **Main channel** - Your private channel (self-chat) for admin control; every group is completely isolated.
- **Scheduled tasks** - Recurring jobs that run the AI agent and can message you back.
- **Jail isolation** - Agents are sandboxed in FreeBSD jails with ZFS snapshots.
- **Split-brain memory** - PostgreSQL stores three platform-owned databases by default: `system_skills` for preloaded reference knowledge, `system_brain` for user/agent memory, and `system_ops` for messages, tasks, sessions, routing, and runtime state.
- **Layered Memory Fabric** - PostgreSQL stores three platform-owned planes by default: `system_skills` for reviewed skills/reference knowledge, `system_brain` for user/agent memory, and `system_ops` for messages, tasks, sessions, routing, and runtime state. See [`docs/public/architecture/layered-memory-fabric.md`](docs/public/architecture/layered-memory-fabric.md).
- **Built-in payments, optional extras** - Stripe ships in core and is ready when configured; other channels and integrations can still be layered through skills.
## Installation
@ -258,7 +258,7 @@ replace it with `fd-find`. That replacement is the intended FreeBSD baseline.
- `docs` — docs and release copy
- `cms` — Astro/Strapi publishing work
- `git` — local git mirror and upstream sync
- `memory`split-brain and PostgreSQL memory work
- `memory`Layered Memory Fabric and PostgreSQL memory work
- `local` — Ollama/offline fallback
- `cnc` — CNC machine operation and G-code work
@ -278,7 +278,7 @@ List all built-in profiles with:
just setup -- --step pi-config --list-profiles
```
The split-brain database path is mandatory. Setup generates or preserves the
The Layered Memory Fabric database path is mandatory. Setup generates or preserves the
PostgreSQL and Strapi secrets in `.env`, then keeps `SKILLS_DB_URL`,
`MEMORY_DB_URL`, and `OPS_DB_URL` aligned with `AGENT_NAME`, subnet, and
passwords. The `db` step applies three distinct schema tracks:
@ -440,7 +440,7 @@ Talk to your assistant with the trigger word (default: `@Clawdie`):
@Clawdie every Monday at 8am, compile news on AI developments and message me a briefing
```
Run `just doctor` to check system health (runtime, jails, networking, services, DNS resolver probes, TLS certificate expiry, ACME renewal cron, morning-report schedule, and split-brain DB/artifact status). Exit codes: 0 = ok or warnings, 1 = error.
Run `just doctor` to check system health (runtime, jails, networking, services, DNS resolver probes, TLS certificate expiry, ACME renewal cron, morning-report schedule, and Layered Memory Fabric DB/artifact status). Exit codes: 0 = ok or warnings, 1 = error.
### TLS Certificate Lifecycle
@ -473,25 +473,25 @@ A short selection — for the full reference (status, structured reports,
runtime, sessions, admin actions, free-text routing) see
[Operator Commands](docs/public/operate/operator-commands.md).
| Command | Description | Auth |
| ---------------- | -------------------------------------------------------------- | --------- |
| `/status` | System summary: jails, ZFS, PF, budget, model | anyone |
| `/report` | Structured system + auth report | admin |
| `/disk` | Structured ZFS pool + snapshot report | admin |
| `/tasks` | Structured controlplane task report | admin |
| `/budgetreport` | Structured budget + token analytics | admin |
| `/publishreport` | Structured tenant publish/content report | admin |
| `/testreport` | Structured build + test status (from wrapper-written JSON) | admin |
| `/policy` | Default runtime, per-chat overrides, fallback cooldowns | anyone |
| `/usage` | Per-agent token budget breakdown | anyone |
| Command | Description | Auth |
| ---------------- | ------------------------------------------------------------------------------ | -------- |
| `/status` | System summary: jails, ZFS, PF, budget, model | anyone |
| `/report` | Structured system + auth report | admin |
| `/disk` | Structured ZFS pool + snapshot report | admin |
| `/tasks` | Structured controlplane task report | admin |
| `/budgetreport` | Structured budget + token analytics | admin |
| `/publishreport` | Structured tenant publish/content report | admin |
| `/testreport` | Structured build + test status (from wrapper-written JSON) | admin |
| `/policy` | Default runtime, per-chat overrides, fallback cooldowns | anyone |
| `/usage` | Per-agent token budget breakdown | anyone |
| `/clearcooldown` | Clear a [provider fallback](docs/public/operate/provider-fallback.md) cooldown | ops chat |
| `/compact` | Compact session (summarize old, keep recent turns) | admin |
| `/new` | Hard reset session, start fresh | admin |
| `/stop` | Kill running agent mid-response | admin |
| `/tts` | Toggle voice replies (on/off/status/default) | admin |
| `/activation` | Set trigger mode (always/mention) | admin |
| `/whoami` | Show your Telegram identity | anyone |
| `/help` | List available commands | anyone |
| `/compact` | Compact session (summarize old, keep recent turns) | admin |
| `/new` | Hard reset session, start fresh | admin |
| `/stop` | Kill running agent mid-response | admin |
| `/tts` | Toggle voice replies (on/off/status/default) | admin |
| `/activation` | Set trigger mode (always/mention) | admin |
| `/whoami` | Show your Telegram identity | anyone |
| `/help` | List available commands | anyone |
The bot also routes **free-text ops phrasings** ("disk usage", "are the
tests passing", "task report", etc.) to the matching structured report

View file

@ -180,15 +180,23 @@ Examples:
Do not derive DB names from `ASSISTANT_NAME`.
## Split-brain responsibilities
## Layered Memory Fabric responsibilities
Three core data families drive Clawdie's runtime behavior:
Three core data planes drive Clawdie's runtime behavior. This is not a
"split-brain" design: PostgreSQL remains the common data fabric, while each
plane has a clear lifecycle and ownership boundary.
| Family | Default shared DB | Purpose |
|--------|-------------------|---------|
| Agent System Skills | `system_skills` | Preloaded read-only skills, install docs, operator workflows |
| User / Agent Memory | `system_brain` | Dynamic conversation memory, preferences, compaction summaries |
| Operational State | `system_ops` | Messages, tasks, sessions, routing, registered groups |
| Plane | Default shared DB | Purpose |
| ------ | ----------------- | -------------------------------------------------------------- |
| Skills | `system_skills` | Reviewed read-only skills, install docs, operator workflows |
| Brain | `system_brain` | Dynamic conversation memory, preferences, compaction summaries |
| Ops | `system_ops` | Messages, tasks, sessions, routing, registered groups |
Embeddings and full-text indexes accelerate recall, but PostgreSQL rows and
committed skill artifacts remain the source of truth. On FreeBSD the fabric is
usually protected with ZFS datasets and jail-aware service boundaries. On Linux,
the same logical database contract can run against host PostgreSQL or a native
service/container path, with OpenZFS preferred when available.
Additional platform service DBs also live in PostgreSQL when enabled:

View file

@ -37,7 +37,7 @@ FreeBSD host
│ ├── setup.sh / npm run wizard
│ ├── rc.d service
│ ├── Telegram routing
│ ├── split-brain prompt enrichment
│ ├── Layered Memory Fabric prompt enrichment
│ ├── operator controlplane at ai.<internal_base> (HTTP API port 3100)
│ └── Bastille / bastille cmd orchestration
├── git jail <subnet>.2 shared Git Service

View file

@ -3,7 +3,9 @@ title: Architecture
description: Core runtime layout, isolation model, and deployment shapes.
---
System-level references for how Clawdie is assembled on FreeBSD.
System-level references for how Clawdie is assembled. FreeBSD remains the
reference implementation; Linux should follow the same platform contracts where
it is supported.
## Runtime shape
@ -29,6 +31,7 @@ Shared platform services:
- Web Service
- Local AI Models
- [Layered Memory Fabric](./layered-memory-fabric/)
- [Deployment models](./deployment-models/)
- [Warden model](./warden/)
- [Host operator model](./host-operator-model/)

View file

@ -0,0 +1,61 @@
---
title: Layered Memory Fabric
description: Clawdie's PostgreSQL-backed skills, brain, and ops data planes across FreeBSD and Linux.
---
# Layered Memory Fabric
Clawdie's memory model is a **Layered Memory Fabric**: reviewed skills, learned memory, and operational state live in one PostgreSQL-backed data plane with separate lifecycle boundaries.
This replaces the older promotional phrase "split brain". Split brain is a distributed-systems failure mode; Clawdie's design goal is the opposite: one source of truth with clear ownership.
## Three planes
| Plane | Shared database | What belongs there | Source of truth |
| ------ | --------------- | ---------------------------------------------------- | ----------------------------------------------- |
| Skills | `system_skills` | Reviewed skills, install docs, operator workflows | committed artifacts + PostgreSQL import |
| Brain | `system_brain` | User/agent memory, preferences, compaction summaries | PostgreSQL rows + optional vector embeddings |
| Ops | `system_ops` | Messages, tasks, sessions, routing, runtime health | PostgreSQL rows and runtime control-plane state |
Embeddings and full-text indexes improve recall, but they are not the authority. The authoritative record is PostgreSQL plus the committed skill artifacts that seeded it.
## FreeBSD-first implementation
The FreeBSD path remains the reference implementation:
- ZFS datasets protect persistent platform state.
- FreeBSD jails isolate workers and optional services.
- PostgreSQL runs on the host by default (`DB_RUNTIME=host`) or in the optional Data Service jail (`DB_RUNTIME=jail`).
- `system_skills`, `system_brain`, and `system_ops` keep the same names regardless of assistant name or tenant label.
## Linux-compatible contract
Linux should implement the same contracts instead of inventing a second product model:
- PostgreSQL remains the database substrate.
- OpenZFS is preferred when available; a plain filesystem fallback can exist for development or small installs.
- Linux-native worker isolation should satisfy the same worker contract that FreeBSD jails satisfy.
- The installer should select platform adapters, not rename the data model.
## Installer unification target
The future install path should emit a common manifest shape on both platforms:
```json
{
"platform": "freebsd",
"storage": "zfs",
"database_runtime": "postgres-host",
"isolation_runtime": "freebsd-jail",
"databases": ["system_skills", "system_brain", "system_ops"]
}
```
Linux can use the same shape with Linux-native adapter values such as `linux-service`, `linux-container`, or `filesystem` where appropriate.
## Naming rules
- Use **Layered Memory Fabric** in public/promo copy.
- Use **skills / brain / ops planes** in technical docs.
- Keep `system_brain` as the database name; that name is intentional.
- Avoid "split brain" except when referring to legacy filenames or historical changelog entries.

View file

@ -1,9 +1,13 @@
---
title: Installation
description: Operator install paths for Clawdie on FreeBSD.
description: Operator install paths for Clawdie, FreeBSD-first with shared platform contracts.
---
Choose the path that matches your host.
Choose the path that matches your host. FreeBSD remains the reference install
path; Linux support should follow the same Layered Memory Fabric, PostgreSQL,
and storage/isolation contracts rather than becoming a separate product model.
See [Layered Memory Fabric](../architecture/layered-memory-fabric/) for the
shared data-plane target.
## ISO install

View file

@ -58,13 +58,13 @@ active/queued jails, and the latest control plane report.
Checks:
| Check | Method | Fix if failing |
| --------------------- | --------------------- | ------------------------- |
| hostd reachable | TCP connect to socket | none (can't self-fix) |
| Check | Method | Fix if failing |
| ---------------------- | ------------------------------ | ------------------------------------------ |
| hostd reachable | TCP connect to socket | none (can't self-fix) |
| Data Service available | `jls -q name` or host DB probe | `hostd('bastille-start')` when jail-backed |
| Git Service running | `jls -q name` | `hostd('bastille-start')` |
| Web Service running | `jls -q name` | `hostd('bastille-start')` |
| PF enabled | `pfctl -s info` | `hostd('pf-enable')` |
| Git Service running | `jls -q name` | `hostd('bastille-start')` |
| Web Service running | `jls -q name` | `hostd('bastille-start')` |
| PF enabled | `pfctl -s info` | `hostd('pf-enable')` |
Severity:
@ -107,7 +107,7 @@ Reports (in order):
- TLS certificate expiry for the public Clawdie and docs certificates
- acme.sh renewal cron presence (`ACME_RENEWAL_CRON`)
- morning report scheduler state, cron expression, next run, last run, and latest task log
- split-brain DB availability and row counts
- Layered Memory Fabric DB availability and row counts
Exit codes:
@ -158,14 +158,14 @@ matching Telegram slash command and follows the same `Observed` /
`Interpretation` / `Operator Notes` template — see
[Structured Reports](./structured-reports/) for the design and the full list.
| Report | Command | What it answers |
| ---------- | ----------------- | --------------------------------------------------- |
| System | `/report` | Are services + jails + controlplane healthy? |
| Disk | `/disk` | What is consuming ZFS pool space and snapshots? |
| Tasks | `/tasks` | What is in the controlplane task queue? |
| Budget | `/budgetreport` | Token budgets and burn analytics |
| Publish | `/publishreport` | Tenant publish/content state |
| Test/Build | `/testreport` | Was the last build/test run green? |
| Report | Command | What it answers |
| ---------- | ---------------- | ----------------------------------------------- |
| System | `/report` | Are services + jails + controlplane healthy? |
| Disk | `/disk` | What is consuming ZFS pool space and snapshots? |
| Tasks | `/tasks` | What is in the controlplane task queue? |
| Budget | `/budgetreport` | Token budgets and burn analytics |
| Publish | `/publishreport` | Tenant publish/content state |
| Test/Build | `/testreport` | Was the last build/test run green? |
`/testreport` is fed by `scripts/write-test-build-status.sh`, not by the
running process — invoke the wrapper from CI, a hook, or by hand to refresh

View file

@ -23,7 +23,7 @@ just doctor
- potek javnih TLS certifikatov za Clawdie in dokumentacijo
- prisotnost acme.sh obnovitvenega crona (`ACME_RENEWAL_CRON`)
- stanje razporejevalnika jutranjega poročila
- stanje split-brain podatkovnih baz in uvoženega skills artefakta
- stanje Layered Memory Fabric podatkovnih baz in uvoženega skills artefakta
## Izhodna stanja
@ -57,7 +57,7 @@ Od zadnjih sprememb `just doctor` posebej preverja:
- ali se javni TLS certifikati približujejo poteku in ali obstaja acme.sh
obnovitveni cron
To pomaga ujeti split-brain DNS napake, tiha odstopanja razporejevalnika in
To pomaga ujeti DNS razhajanja, tiha odstopanja razporejevalnika in
pozabljene obnove certifikatov, ki jih sam PID procesa ne razkrije.
## Priporočilo

View file

@ -10,9 +10,10 @@ This folder holds the versioned source set for the `docs.clawdie.si` subdomain.
The site explains:
- Clawdie on FreeBSD
- the split-brain model
- Agent System Skills built-in local knowledge
- User/Agent Memory for user and future-agent memory
- the Layered Memory Fabric model
- Skills built-in local knowledge
- Brain memory for user and future-agent memory
- Ops runtime state
- the relationship to NanoClaw upstream
## Layout

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">
@ -118,8 +118,8 @@
<p>
This static HTML page is an archival snapshot and can lag behind the
live repository. Use the repo tags, commits, and
<code>package.json</code> version as the authoritative current
release state.
<code>package.json</code> version as the authoritative current release
state.
</p>
<div class="divider"></div>

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">
@ -203,8 +203,8 @@
<h3>Privileged host daemon</h3>
<p>
<code>hostd</code> runs as root on a Unix socket
(<code>/var/run/clawdie-hostd.sock</code>). All privileged
host operations —
(<code>/var/run/clawdie-hostd.sock</code>). All privileged host
operations —
<a
href="https://bastillebsd.org/"
target="_blank"
@ -301,12 +301,12 @@
<h3>How IPC actually works</h3>
<p>
The host daemon (<code>hostd</code>) listens on a Unix socket at
<code>/var/run/clawdie-hostd.sock</code>. That same socket
path is nullfs-mounted read-write into the jail. A process inside
the jail writes to the socket and the host daemon — running as root
outside the jail — handles the operation. No network hop. No
serialization overhead. The socket inode is literally shared at the
kernel level. The same mechanism works for the shared
<code>/var/run/clawdie-hostd.sock</code>. That same socket path is
nullfs-mounted read-write into the jail. A process inside the jail
writes to the socket and the host daemon — running as root outside
the jail — handles the operation. No network hop. No serialization
overhead. The socket inode is literally shared at the kernel level.
The same mechanism works for the shared
<code>zroot/pkg-cache</code> dataset: the host mounts it read-only
into each jail via nullfs, and <code>bastille pkg install</code>
reads packages from the local cache without touching the network.
@ -1110,14 +1110,14 @@
<div class="card-grid">
<a class="card" href="/docs/split-brain.html">
<span class="card-icon">&#9673;</span>
<h3>Split Brain</h3>
<h3>Layered Memory Fabric</h3>
<p>
Agent System Skills and User/Agent Memory explained in plain
language and technical terms: built-in local knowledge first,
user memory later.
Skills, Brain, and Ops explained in plain language and technical
terms: reviewed local knowledge, learned memory, and runtime
state.
</p>
<span class="card-tag"
>Agent System Skills &middot; User/Agent Memory &middot; Local
>Skills &middot; Brain &middot; Ops &middot; Local
knowledge</span
>
</a>

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html" class="active">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">

View file

@ -3,10 +3,10 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Split Brain — Clawdie Docs</title>
<title>Layered Memory Fabric — Clawdie Docs</title>
<meta
name="description"
content="Split-brain architecture: built-in skills knowledge, user and agent memory, and operational state stored separately in PostgreSQL. Host runtime by default, optional db jail."
content="Layered Memory Fabric: reviewed skills knowledge, user and agent memory, and operational state stored in separate PostgreSQL planes. Host runtime by default, optional db jail."
/>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link
@ -41,7 +41,7 @@
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li>
<a href="/docs/split-brain.html" class="active">Split Brain</a>
<a href="/docs/split-brain.html" class="active">Layered Memory</a>
</li>
</ul>
</div>
@ -104,27 +104,29 @@
<div class="breadcrumb">
<a href="/">Home</a><span class="sep">/</span>
<a href="/docs/">Docs</a><span class="sep">/</span>
Split Brain
Layered Memory Fabric
</div>
<div class="page-header">
<p class="page-kicker">Core architecture</p>
<h1>
Split brain: agent-system skills and user/agent memory are separate
by design.
Layered Memory Fabric: skills, brain, and ops are separate by
design.
</h1>
<p class="subtitle">
Separate PostgreSQL lifecycles for built-in knowledge, dynamic
memory, and operational state.
One PostgreSQL-backed fabric with clear lifecycles for reviewed
knowledge, learned memory, and operational state.
</p>
</div>
<p>
Clawdie keeps stable built-in knowledge, dynamic user and agent
memory, and operational state in separate PostgreSQL databases. That
memory, and operational state in separate PostgreSQL planes. That
separation makes each easier to back up, validate, and evolve without
conflating factory knowledge, live conversation memory, and runtime
bookkeeping.
conflating reviewed knowledge, live conversation memory, and runtime
bookkeeping. The older "split brain" label is retired because split
brain is a failure mode; the product design is one coordinated memory
fabric.
</p>
<section>
@ -152,6 +154,13 @@
<section>
<h2>The technical explanation</h2>
<p>
The fabric has three planes: <code>system_skills</code> for reviewed
reference knowledge, <code>system_brain</code> for user and agent
memory, and <code>system_ops</code> for runtime state. Embeddings
and full-text indexes improve recall, but PostgreSQL rows and the
committed skills artifact remain the source of truth.
</p>
<div class="two-col-grid">
<article class="panel">
<span class="mini-tag">Agent System Skills</span>
@ -192,7 +201,10 @@
<code>system_skills</code>, <code>system_brain</code>, and
<code>system_ops</code>. By default they run on host PostgreSQL
(<code>DB_RUNTIME=host</code>); an optional db jail remains
available when explicitly selected.
available when explicitly selected. FreeBSD protects this with ZFS
datasets and jail-aware service boundaries; Linux should use the
same database contract with Linux-native service/isolation
adapters.
</p>
</div>
</section>
@ -251,16 +263,15 @@ runtime starts; provider auth can be added when ready</code></pre>
that depends less on live web-provider setup during installation.
</p>
<p>
Clawdie uses this split deliberately to make first install useful
before any production LLM provider is configured, while keeping
user memory flexible and runtime state auditable. FreeBSD makes
this natural: built-in skills can live in a read-stable versioned
database while user memory and ops state follow separate
lifecycles.
Clawdie uses these layers deliberately to make first install useful
before any production LLM provider is configured, while keeping user
memory flexible and runtime state auditable. FreeBSD makes this
natural: built-in skills can live in a read-stable versioned
database while user memory and ops state follow separate lifecycles.
</p>
<p>
Before each jail run, the host queries the local skills database
and prepends the top relevant built-in references to the prompt.
Before each jail run, the host queries the local skills database and
prepends the top relevant built-in references to the prompt.
</p>
</section>
@ -297,9 +308,7 @@ runtime starts; provider auth can be added when ready</code></pre>
<tbody>
<tr>
<td>Built-in knowledge</td>
<td>
Committed artifact plus refresh/import workflow
</td>
<td>Committed artifact plus refresh/import workflow</td>
</tr>
<tr>
<td>User and agent memory</td>
@ -308,8 +317,8 @@ runtime starts; provider auth can be added when ready</code></pre>
<tr>
<td>Operational state</td>
<td>
Separate ops database for sessions, tasks, routing, and
health bookkeeping
Separate ops database for sessions, tasks, routing, and health
bookkeeping
</td>
</tr>
</tbody>
@ -318,7 +327,8 @@ runtime starts; provider auth can be added when ready</code></pre>
<footer>
<div class="footer-left">
<a href="https://clawdie.si">Clawdie AI</a> &middot; Split Brain<br />
<a href="https://clawdie.si">Clawdie AI</a> &middot; Layered Memory
Fabric<br />
<a
href="https://codeberg.org/Clawdie/Clawdie-AI/src/branch/main/html/docs-clawdie-si/docs/split-brain.html"
target="_blank"
@ -330,7 +340,7 @@ runtime starts; provider auth can be added when ready</code></pre>
href="https://codeberg.org/Clawdie/Clawdie-AI/src/branch/main/src/split-brain-status.ts"
target="_blank"
rel="noopener"
>Split-brain status</a
>Memory fabric status</a
><br />
<a
href="https://osa.smilepowered.org"

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">

View file

@ -40,7 +40,7 @@
<li><a href="/" class="active">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">
@ -178,11 +178,12 @@
<div class="divider"></div>
<section>
<h2>What split brain means</h2>
<h2>Layered Memory Fabric</h2>
<p>
Split brain is simple: Clawdie keeps agent-system knowledge and user
memory in two separate databases. Each has its own lifecycle, backup
strategy, and update path.
Clawdie keeps reviewed skills, user/agent memory, and operational
state in separate PostgreSQL planes. Each has its own lifecycle,
backup strategy, and update path, while PostgreSQL remains the
common source of truth.
</p>
<div class="two-col-grid">
@ -224,7 +225,8 @@
rel="noopener"
>ZFS snapshots</a
>
recommended)
recommended; OpenZFS keeps the Linux path consistent where
available)
</li>
<li>Can use production provider keys for embeddings</li>
</ul>
@ -243,10 +245,11 @@
<div class="info-box">
<span class="info-label">Technical version</span>
<p>
Agent System Skills is a prebuilt vector-backed knowledge package
stored locally in the skills database. User/Agent Memory is
dynamic user and agent memory with a separate lifecycle,
provenance, and update path.
The Layered Memory Fabric has three planes: skills
(<code>system_skills</code>), brain (<code>system_brain</code>),
and ops (<code>system_ops</code>). Embeddings and full-text search
improve recall, but PostgreSQL rows and committed artifacts stay
authoritative.
</p>
</div>
</section>
@ -366,7 +369,7 @@
<tr>
<td>Memory model</td>
<td>Generic</td>
<td>Split brain: built-in knowledge plus user memory</td>
<td>Layered Memory Fabric: skills, brain, and ops planes</td>
</tr>
</tbody>
</table>
@ -558,10 +561,10 @@
</a>
<a class="card" href="/docs/split-brain.html">
<span class="card-icon">&#9673;</span>
<h3>Split Brain</h3>
<h3>Layered Memory Fabric</h3>
<p>
Agent System Skills and User/Agent Memory — how split-brain
works in plain language and technical detail.
Skills, Brain, and Ops — how the Layered Memory Fabric works in
plain language and technical detail.
</p>
<span class="card-tag">Core concept</span>
</a>

View file

@ -36,7 +36,7 @@
<li><a href="/">Introduction</a></li>
<li><a href="/docs/install.html">Installation</a></li>
<li><a href="/docs/iso.html">ISO Install</a></li>
<li><a href="/docs/split-brain.html">Split Brain</a></li>
<li><a href="/docs/split-brain.html">Layered Memory</a></li>
</ul>
</div>
<div class="sidebar-section">