threadkeeper 0.4.0__tar.gz → 0.4.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/PKG-INFO +41 -23
  2. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/README.md +39 -21
  3. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/pyproject.toml +2 -2
  4. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper.egg-info/PKG-INFO +41 -23
  5. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/LICENSE +0 -0
  6. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/setup.cfg +0 -0
  7. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_adapters.py +0 -0
  8. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_brief_sections.py +0 -0
  9. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_core_memory.py +0 -0
  10. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_curator.py +0 -0
  11. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_delegated_search.py +0 -0
  12. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_dialectic.py +0 -0
  13. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_error_paths.py +0 -0
  14. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_extract_daemon.py +0 -0
  15. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_i18n_multilang.py +0 -0
  16. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_identity.py +0 -0
  17. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_lessons.py +0 -0
  18. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_missed_spawns.py +0 -0
  19. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_nudges.py +0 -0
  20. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_process_health.py +0 -0
  21. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_shadow_review.py +0 -0
  22. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_skill_hint.py +0 -0
  23. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_skill_use_parser.py +0 -0
  24. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_skill_watcher.py +0 -0
  25. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_skills.py +0 -0
  26. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_spawn_budget.py +0 -0
  27. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_spawn_hint.py +0 -0
  28. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_spawn_slim.py +0 -0
  29. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_threads.py +0 -0
  30. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_tools_smoke.py +0 -0
  31. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/tests/test_vec_search.py +0 -0
  32. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/__init__.py +0 -0
  33. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/_mcp.py +0 -0
  34. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/_setup.py +0 -0
  35. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/__init__.py +0 -0
  36. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/_hook_helpers.py +0 -0
  37. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/base.py +0 -0
  38. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/claude_code.py +0 -0
  39. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/claude_desktop.py +0 -0
  40. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/codex.py +0 -0
  41. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/copilot.py +0 -0
  42. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/gemini.py +0 -0
  43. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/adapters/vscode.py +0 -0
  44. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/brief.py +0 -0
  45. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/config.py +0 -0
  46. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/curator.py +0 -0
  47. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/db.py +0 -0
  48. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/embeddings.py +0 -0
  49. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/extract_daemon.py +0 -0
  50. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/helpers.py +0 -0
  51. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/i18n.py +0 -0
  52. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/identity.py +0 -0
  53. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/ingest.py +0 -0
  54. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/lessons.py +0 -0
  55. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/nudges.py +0 -0
  56. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/process_health.py +0 -0
  57. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/review_prompts.py +0 -0
  58. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/search_proxy.py +0 -0
  59. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/server.py +0 -0
  60. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/shadow_review.py +0 -0
  61. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/skill_watcher.py +0 -0
  62. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/spawn_budget.py +0 -0
  63. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/__init__.py +0 -0
  64. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/concepts.py +0 -0
  65. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/consolidate.py +0 -0
  66. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/core_memory.py +0 -0
  67. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/correlation.py +0 -0
  68. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/curator.py +0 -0
  69. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/dialectic.py +0 -0
  70. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/dialog.py +0 -0
  71. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/distill.py +0 -0
  72. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/extract.py +0 -0
  73. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/graph.py +0 -0
  74. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/invariants.py +0 -0
  75. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/lessons.py +0 -0
  76. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/missed_spawns.py +0 -0
  77. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/peers.py +0 -0
  78. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/pickup.py +0 -0
  79. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/probes.py +0 -0
  80. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/process_health.py +0 -0
  81. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/session.py +0 -0
  82. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/shadow_review.py +0 -0
  83. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/skills.py +0 -0
  84. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/spawn.py +0 -0
  85. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/style.py +0 -0
  86. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper/tools/threads.py +0 -0
  87. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper.egg-info/SOURCES.txt +0 -0
  88. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper.egg-info/dependency_links.txt +0 -0
  89. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper.egg-info/entry_points.txt +0 -0
  90. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper.egg-info/requires.txt +0 -0
  91. {threadkeeper-0.4.0 → threadkeeper-0.4.1}/threadkeeper.egg-info/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: threadkeeper
3
- Version: 0.4.0
4
- Summary: Persistent working memory across agentic CLI sessions — CLI-agnostic MCP server for Claude Code/Desktop, Codex, Gemini, Copilot, VS Code.
3
+ Version: 0.4.1
4
+ Summary: Multi-agent shared brain across Claude Code/Desktop, Codex, Gemini, Copilot, VS Code. Cross-session memory, self-improving skill loops, inter-agent signaling — one local MCP server.
5
5
  Author: thread-keeper contributors
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/po4erk91/thread-keeper
@@ -37,12 +37,19 @@ Dynamic: license-file
37
37
  [![tests](https://github.com/po4erk91/thread-keeper/actions/workflows/test.yml/badge.svg)](https://github.com/po4erk91/thread-keeper/actions/workflows/test.yml)
38
38
  [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
39
39
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
40
+ [![PyPI](https://img.shields.io/pypi/v/threadkeeper.svg)](https://pypi.org/project/threadkeeper/)
40
41
  [![CLIs](https://img.shields.io/badge/CLIs-Claude%20%7C%20Codex%20%7C%20Gemini%20%7C%20Copilot%20%7C%20VS%20Code-green)](#multi-cli-integration)
41
42
 
42
- A local MCP server that holds **persistent working memory across agentic CLI
43
- sessions** Claude Code, Claude Desktop, OpenAI Codex (CLI + desktop),
44
- Google Gemini, GitHub Copilot, and every MCP-aware VS Code extension share
45
- one SQLite store, one set of threads, one learning loop, one user model.
43
+ **Multi-agent shared brain across Claude Code/Desktop, Codex, Gemini,
44
+ Copilot, and VS Code.** Cross-session memory, self-improving skill
45
+ loops, and inter-agent signaling one local MCP server turns parallel
46
+ agent instances into a coordinated multi-agent system instead of N
47
+ isolated chats.
48
+
49
+ Every connected client (Claude Code, Claude Desktop, Codex CLI +
50
+ desktop, Gemini, Copilot, every MCP-aware VS Code extension) shares
51
+ one SQLite store, one set of threads, one user model, and one learning
52
+ loop that improves the skill library autonomously over time.
46
53
 
47
54
  The brief format is dense — structural tags, opaque IDs, ~6 KB per
48
55
  session-start injection. Optimized for agent consumption, not human reading.
@@ -51,23 +58,34 @@ session-start injection. Optimized for agent consumption, not human reading.
51
58
 
52
59
  ## Why
53
60
 
54
- Today every agent CLI starts cold. Context dies at session boundaries.
55
- Skills you taught Claude don't transfer to Codex. Threads you closed in
56
- yesterday's Gemini chat are invisible to today's Copilot.
57
-
58
- thread-keeper is the substrate underneath:
59
-
60
- - **One memory store** threads, notes, verbatim quotes, dialectic claims
61
- about you. Survives session, restart, CLI swap.
62
- - **One learning loop (hermes-style)** — closed threads with rich content
63
- spawn a background reviewer that appends lessons to
64
- `~/.threadkeeper/lessons.md`. Every CLI's per-user instructions file
65
- references this path, so the same procedural knowledge surfaces in
66
- Claude Code, Codex, Gemini, and Copilot. Claude-specific
67
- `~/.claude/skills/*/SKILL.md` is an optional secondary output when
68
- frontmatter auto-triggering adds value.
69
- - **Cross-session signaling** — broadcast / whisper / inbox / wait between
70
- concurrent sessions across different CLIs.
61
+ Every agent CLI starts cold. Context dies at session boundaries.
62
+ Skills you taught Claude don't transfer to Codex. Threads you closed
63
+ in yesterday's Gemini chat are invisible to today's Copilot. Parallel
64
+ agent instances running the same task don't know about each other and
65
+ duplicate work or step on each other's writes.
66
+
67
+ thread-keeper is the substrate underneath. Three things that together
68
+ make it more than a memory store:
69
+
70
+ - **Collective memory** threads, notes, verbatim quotes, dialectic
71
+ claims about you. Survives session, restart, CLI swap. One agent
72
+ records, every other agent (any CLI) reads. The brief injected at
73
+ session start gives a new agent everything the previous one knew.
74
+ - **Multi-agent coordination** `spawn` primitive launches child
75
+ agents in parallel, each gets a self_cid + sees the same memory.
76
+ `broadcast` / `whisper` / `inbox` / `wait` / `ask` / `respond` let
77
+ concurrent sessions signal each other across CLIs. Parent /
78
+ children / sibling agents become a coordinated swarm, not isolated
79
+ chats.
80
+ - **Self-improving skill library** — four autonomous background loops
81
+ (auto-review on thread close, shadow-review daemon, extract
82
+ harvester, weekly Curator) materialize class-level skills as the
83
+ agents work. Hermes Agent v0.12 pattern adapted to multi-CLI:
84
+ SKILL.md is the primary write target and gets mirrored to every
85
+ detected CLI's skills directory simultaneously
86
+ (`~/.claude/skills/`, `~/.codex/skills/`, `~/.threadkeeper/skills/`),
87
+ with lessons.md as a fallback for CLIs without a native skills
88
+ loader.
71
89
 
72
90
  ---
73
91
 
@@ -3,12 +3,19 @@
3
3
  [![tests](https://github.com/po4erk91/thread-keeper/actions/workflows/test.yml/badge.svg)](https://github.com/po4erk91/thread-keeper/actions/workflows/test.yml)
4
4
  [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
+ [![PyPI](https://img.shields.io/pypi/v/threadkeeper.svg)](https://pypi.org/project/threadkeeper/)
6
7
  [![CLIs](https://img.shields.io/badge/CLIs-Claude%20%7C%20Codex%20%7C%20Gemini%20%7C%20Copilot%20%7C%20VS%20Code-green)](#multi-cli-integration)
7
8
 
8
- A local MCP server that holds **persistent working memory across agentic CLI
9
- sessions** Claude Code, Claude Desktop, OpenAI Codex (CLI + desktop),
10
- Google Gemini, GitHub Copilot, and every MCP-aware VS Code extension share
11
- one SQLite store, one set of threads, one learning loop, one user model.
9
+ **Multi-agent shared brain across Claude Code/Desktop, Codex, Gemini,
10
+ Copilot, and VS Code.** Cross-session memory, self-improving skill
11
+ loops, and inter-agent signaling one local MCP server turns parallel
12
+ agent instances into a coordinated multi-agent system instead of N
13
+ isolated chats.
14
+
15
+ Every connected client (Claude Code, Claude Desktop, Codex CLI +
16
+ desktop, Gemini, Copilot, every MCP-aware VS Code extension) shares
17
+ one SQLite store, one set of threads, one user model, and one learning
18
+ loop that improves the skill library autonomously over time.
12
19
 
13
20
  The brief format is dense — structural tags, opaque IDs, ~6 KB per
14
21
  session-start injection. Optimized for agent consumption, not human reading.
@@ -17,23 +24,34 @@ session-start injection. Optimized for agent consumption, not human reading.
17
24
 
18
25
  ## Why
19
26
 
20
- Today every agent CLI starts cold. Context dies at session boundaries.
21
- Skills you taught Claude don't transfer to Codex. Threads you closed in
22
- yesterday's Gemini chat are invisible to today's Copilot.
23
-
24
- thread-keeper is the substrate underneath:
25
-
26
- - **One memory store** threads, notes, verbatim quotes, dialectic claims
27
- about you. Survives session, restart, CLI swap.
28
- - **One learning loop (hermes-style)** — closed threads with rich content
29
- spawn a background reviewer that appends lessons to
30
- `~/.threadkeeper/lessons.md`. Every CLI's per-user instructions file
31
- references this path, so the same procedural knowledge surfaces in
32
- Claude Code, Codex, Gemini, and Copilot. Claude-specific
33
- `~/.claude/skills/*/SKILL.md` is an optional secondary output when
34
- frontmatter auto-triggering adds value.
35
- - **Cross-session signaling** — broadcast / whisper / inbox / wait between
36
- concurrent sessions across different CLIs.
27
+ Every agent CLI starts cold. Context dies at session boundaries.
28
+ Skills you taught Claude don't transfer to Codex. Threads you closed
29
+ in yesterday's Gemini chat are invisible to today's Copilot. Parallel
30
+ agent instances running the same task don't know about each other and
31
+ duplicate work or step on each other's writes.
32
+
33
+ thread-keeper is the substrate underneath. Three things that together
34
+ make it more than a memory store:
35
+
36
+ - **Collective memory** threads, notes, verbatim quotes, dialectic
37
+ claims about you. Survives session, restart, CLI swap. One agent
38
+ records, every other agent (any CLI) reads. The brief injected at
39
+ session start gives a new agent everything the previous one knew.
40
+ - **Multi-agent coordination** `spawn` primitive launches child
41
+ agents in parallel, each gets a self_cid + sees the same memory.
42
+ `broadcast` / `whisper` / `inbox` / `wait` / `ask` / `respond` let
43
+ concurrent sessions signal each other across CLIs. Parent /
44
+ children / sibling agents become a coordinated swarm, not isolated
45
+ chats.
46
+ - **Self-improving skill library** — four autonomous background loops
47
+ (auto-review on thread close, shadow-review daemon, extract
48
+ harvester, weekly Curator) materialize class-level skills as the
49
+ agents work. Hermes Agent v0.12 pattern adapted to multi-CLI:
50
+ SKILL.md is the primary write target and gets mirrored to every
51
+ detected CLI's skills directory simultaneously
52
+ (`~/.claude/skills/`, `~/.codex/skills/`, `~/.threadkeeper/skills/`),
53
+ with lessons.md as a fallback for CLIs without a native skills
54
+ loader.
37
55
 
38
56
  ---
39
57
 
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "threadkeeper"
7
- version = "0.4.0"
8
- description = "Persistent working memory across agentic CLI sessions — CLI-agnostic MCP server for Claude Code/Desktop, Codex, Gemini, Copilot, VS Code."
7
+ version = "0.4.1"
8
+ description = "Multi-agent shared brain across Claude Code/Desktop, Codex, Gemini, Copilot, VS Code. Cross-session memory, self-improving skill loops, inter-agent signaling — one local MCP server."
9
9
  requires-python = ">=3.11"
10
10
  authors = [{ name = "thread-keeper contributors" }]
11
11
  license = { text = "MIT" }
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: threadkeeper
3
- Version: 0.4.0
4
- Summary: Persistent working memory across agentic CLI sessions — CLI-agnostic MCP server for Claude Code/Desktop, Codex, Gemini, Copilot, VS Code.
3
+ Version: 0.4.1
4
+ Summary: Multi-agent shared brain across Claude Code/Desktop, Codex, Gemini, Copilot, VS Code. Cross-session memory, self-improving skill loops, inter-agent signaling — one local MCP server.
5
5
  Author: thread-keeper contributors
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/po4erk91/thread-keeper
@@ -37,12 +37,19 @@ Dynamic: license-file
37
37
  [![tests](https://github.com/po4erk91/thread-keeper/actions/workflows/test.yml/badge.svg)](https://github.com/po4erk91/thread-keeper/actions/workflows/test.yml)
38
38
  [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
39
39
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
40
+ [![PyPI](https://img.shields.io/pypi/v/threadkeeper.svg)](https://pypi.org/project/threadkeeper/)
40
41
  [![CLIs](https://img.shields.io/badge/CLIs-Claude%20%7C%20Codex%20%7C%20Gemini%20%7C%20Copilot%20%7C%20VS%20Code-green)](#multi-cli-integration)
41
42
 
42
- A local MCP server that holds **persistent working memory across agentic CLI
43
- sessions** Claude Code, Claude Desktop, OpenAI Codex (CLI + desktop),
44
- Google Gemini, GitHub Copilot, and every MCP-aware VS Code extension share
45
- one SQLite store, one set of threads, one learning loop, one user model.
43
+ **Multi-agent shared brain across Claude Code/Desktop, Codex, Gemini,
44
+ Copilot, and VS Code.** Cross-session memory, self-improving skill
45
+ loops, and inter-agent signaling one local MCP server turns parallel
46
+ agent instances into a coordinated multi-agent system instead of N
47
+ isolated chats.
48
+
49
+ Every connected client (Claude Code, Claude Desktop, Codex CLI +
50
+ desktop, Gemini, Copilot, every MCP-aware VS Code extension) shares
51
+ one SQLite store, one set of threads, one user model, and one learning
52
+ loop that improves the skill library autonomously over time.
46
53
 
47
54
  The brief format is dense — structural tags, opaque IDs, ~6 KB per
48
55
  session-start injection. Optimized for agent consumption, not human reading.
@@ -51,23 +58,34 @@ session-start injection. Optimized for agent consumption, not human reading.
51
58
 
52
59
  ## Why
53
60
 
54
- Today every agent CLI starts cold. Context dies at session boundaries.
55
- Skills you taught Claude don't transfer to Codex. Threads you closed in
56
- yesterday's Gemini chat are invisible to today's Copilot.
57
-
58
- thread-keeper is the substrate underneath:
59
-
60
- - **One memory store** threads, notes, verbatim quotes, dialectic claims
61
- about you. Survives session, restart, CLI swap.
62
- - **One learning loop (hermes-style)** — closed threads with rich content
63
- spawn a background reviewer that appends lessons to
64
- `~/.threadkeeper/lessons.md`. Every CLI's per-user instructions file
65
- references this path, so the same procedural knowledge surfaces in
66
- Claude Code, Codex, Gemini, and Copilot. Claude-specific
67
- `~/.claude/skills/*/SKILL.md` is an optional secondary output when
68
- frontmatter auto-triggering adds value.
69
- - **Cross-session signaling** — broadcast / whisper / inbox / wait between
70
- concurrent sessions across different CLIs.
61
+ Every agent CLI starts cold. Context dies at session boundaries.
62
+ Skills you taught Claude don't transfer to Codex. Threads you closed
63
+ in yesterday's Gemini chat are invisible to today's Copilot. Parallel
64
+ agent instances running the same task don't know about each other and
65
+ duplicate work or step on each other's writes.
66
+
67
+ thread-keeper is the substrate underneath. Three things that together
68
+ make it more than a memory store:
69
+
70
+ - **Collective memory** threads, notes, verbatim quotes, dialectic
71
+ claims about you. Survives session, restart, CLI swap. One agent
72
+ records, every other agent (any CLI) reads. The brief injected at
73
+ session start gives a new agent everything the previous one knew.
74
+ - **Multi-agent coordination** `spawn` primitive launches child
75
+ agents in parallel, each gets a self_cid + sees the same memory.
76
+ `broadcast` / `whisper` / `inbox` / `wait` / `ask` / `respond` let
77
+ concurrent sessions signal each other across CLIs. Parent /
78
+ children / sibling agents become a coordinated swarm, not isolated
79
+ chats.
80
+ - **Self-improving skill library** — four autonomous background loops
81
+ (auto-review on thread close, shadow-review daemon, extract
82
+ harvester, weekly Curator) materialize class-level skills as the
83
+ agents work. Hermes Agent v0.12 pattern adapted to multi-CLI:
84
+ SKILL.md is the primary write target and gets mirrored to every
85
+ detected CLI's skills directory simultaneously
86
+ (`~/.claude/skills/`, `~/.codex/skills/`, `~/.threadkeeper/skills/`),
87
+ with lessons.md as a fallback for CLIs without a native skills
88
+ loader.
71
89
 
72
90
  ---
73
91
 
File without changes
File without changes