Files-first personal claims memory for Obsidian + agent terminals (source-available, non-commercial)
Find a file
CoyoteClaude 31ad688a21 docs: vault markdown is the product; Forgejo is source of truth
Lead README with Obsidian-shaped claims memory and the agent host path.
Mark the old JSONL session skill deprecated leftover. GitHub is a mirror.
2026-08-23 11:18:36 -06:00
examples fix: do not inject domain claimKeys on new yarn 2026-08-03 11:14:02 -06:00
obsidian-plugin/tapestry-control Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00
scripts Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00
server fix: do not inject domain claimKeys on new yarn 2026-08-03 11:14:02 -06:00
skills docs: vault markdown is the product; Forgejo is source of truth 2026-08-23 11:18:36 -06:00
vault-template docs: vault markdown is the product; Forgejo is source of truth 2026-08-23 11:18:36 -06:00
.gitignore Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00
LICENSE Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00
NOTICE Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00
package-lock.json Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00
package.json Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00
README.md docs: vault markdown is the product; Forgejo is source of truth 2026-08-23 11:18:36 -06:00
tsconfig.json Initial public release: Tapestry v2 (source-available, non-commercial) 2026-08-03 10:55:44 -06:00

Tapestry

Personal claims memory as an Obsidian-shaped markdown vault.

The product is the vault: claims, generated surface, thread context-pack.md, and AGENTS.md. That loop is forever. Chat is not the system of record.

Source-available. Free for personal, non-commercial use. Commercial use needs a separate license. See LICENSE and NOTICE.


Clone (canonical)

git clone https://git.coyotes.cloud/coyotes/tapestry-memory.git

Product source of truth: git.coyotes.cloud/coyotes/tapestry-memory (Forgejo).

GitHub Coyotes-Commits/tapestry-memory is an optional mirror. Prefer Forgejo.


Core: the vault

Copy vault-template/ to a private folder (example: ~/Documents/Tapestry) and open it as an Obsidian vault — or any folder of markdown. Never commit a live vault.

AGENTS.md
PROTOCOL.md
yarns/<domain>/instructions.md
yarns/<domain>/threads/<thread>/
  instructions.md
  context-pack.md          budgeted reopen (prefer)
  surface.md               generated from current claims
  claims/*.md              system of record
  fibers/<id>/summary.md
  fibers/<id>/transcript/transcript.md

Supersession over mutation. New claim markdown supersedes the old. History stays. Partitions keep people and projects from mixing.


Default operator: any file-capable agent

Grok Bot, Claude, Hermes, Cursor, OpenClaw — same path. They share one host contract. Do not split per harness except a one-line pointer (skill file vs this vault’s AGENTS.md).

Step What the agent does
Arm Read the markdown stack. Confirm armed <domain>/<thread>. Answer from pack + surface + claims.
Work Think in the agent. Do not append every turn to JSONL.
Knot When the human says knot / land it: write claim .md, supersede stale claims, regenerate surface.md, refresh that thread’s context-pack.md only, write a short fiber summary + transcript, update TAPESTRY_SESSION.md and .tapestry/active.json (pointer only).

Skill to load: skills/tapestry-host/SKILL.md. If the host has no skill install, follow vault AGENTS.md — same loop.

skills/tapestry-session is DEPRECATED: leftover JSONL / non-Obsidian write path for the product CLI only. Not the live loop.

Do not use the product CLI for Q&A or knots. Do not invent ids; read .tapestry/active.json or existing folder names. Never cross partitions.

Arm read order

  1. AGENTS.md
  2. PROTOCOL.md (skim)
  3. yarns/<id>/instructions.md
  4. threads/<id>/instructions.md
  5. context-pack.md (prefer)
  6. surface.md if the pack looks stale
  7. Individual claims only if needed

Optional: terminal CLI + Obsidian plugin

A Node CLI (server/) and Tapestry Control plugin exist for people who want a control plane. They are leftover / optional, not the loop. The current CLI still expects JSON meta after the vault moved to Obsidian-shaped files. Host/agent markdown is the supported path.


Why

Chat is a terrible system of record. Static notes go stale without clean supersession. An LLM wiki is great for how the world works — and the wrong place for “what is our current protocol right now?”

C  LLM wiki          general mechanisms & entities
B  personal vault    long-form life notes
A  Tapestry          current claims, supersedes, packs   ← this repo
0  live agent        reads and writes the vault

Vocabulary

Term Meaning Disk
Yarn Domain workspace yarns/<id>/
Thread Long-lived conversation line yarns/<y>/threads/<id>/
fiber One sitting / segment …/fibers/<id>/
Claim One durable fact or decision …/claims/<id>.md
Surface Generated view of current claims …/surface.md
Pack Budgeted reopen context …/context-pack.md (thread-scoped)
Partition Isolation key (person / project) on thread + claims
Arm Bind to one thread by reading the stack .tapestry/active.json pointer
Knot HITL land: write claims + regenerate surface/pack vault files

License

PolyForm Noncommercial 1.0.0 — free for personal / non-commercial use.

Not OSI “open source.” Source is available to read, run, and adapt for permitted purposes. Commercial use requires a separate written license.

See LICENSE and NOTICE.


Status

Early (0.1.0). Core loop: arm (read markdown) → work → knot (write claims, regenerate surface/pack). The repo also ships optional CLI/plugin code. Not a rebuild of your agent — it owns memory structure, not the model.


Inspiration

Tapestry is not an LLM wiki. It is personal state with supersession — complementary, not competing.