keep-skill 0.2.0__py3-none-any.whl → 0.4.1__py3-none-any.whl

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.
@@ -0,0 +1,219 @@
1
+ Metadata-Version: 2.4
2
+ Name: keep-skill
3
+ Version: 0.4.1
4
+ Summary: Semantic memory - remember and search documents by meaning
5
+ Project-URL: Homepage, https://github.com/hughpyle/keep
6
+ Project-URL: Repository, https://github.com/hughpyle/keep
7
+ Author: Hugh Pyle
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Keywords: agents,chromadb,embeddings,semantic-memory,vector-search
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries
19
+ Classifier: Topic :: Text Processing
20
+ Requires-Python: <3.14,>=3.11
21
+ Requires-Dist: chromadb>=0.4
22
+ Requires-Dist: tomli-w>=1.0
23
+ Requires-Dist: typer>=0.9
24
+ Provides-Extra: anthropic
25
+ Requires-Dist: anthropic>=0.40.0; extra == 'anthropic'
26
+ Provides-Extra: dev
27
+ Requires-Dist: pytest-cov>=4.0; extra == 'dev'
28
+ Requires-Dist: pytest>=7.0; extra == 'dev'
29
+ Provides-Extra: documents
30
+ Requires-Dist: beautifulsoup4>=4.9; extra == 'documents'
31
+ Requires-Dist: pypdf>=5.0; extra == 'documents'
32
+ Provides-Extra: gemini
33
+ Requires-Dist: google-genai>=1.0.0; extra == 'gemini'
34
+ Provides-Extra: local
35
+ Requires-Dist: beautifulsoup4>=4.9; extra == 'local'
36
+ Requires-Dist: mlx-lm>=0.10; (platform_system == 'Darwin' and platform_machine == 'arm64') and extra == 'local'
37
+ Requires-Dist: mlx>=0.10; (platform_system == 'Darwin' and platform_machine == 'arm64') and extra == 'local'
38
+ Requires-Dist: pypdf>=5.0; extra == 'local'
39
+ Requires-Dist: sentence-transformers>=2.2; extra == 'local'
40
+ Provides-Extra: mlx
41
+ Requires-Dist: mlx-lm>=0.10; extra == 'mlx'
42
+ Requires-Dist: mlx>=0.10; extra == 'mlx'
43
+ Provides-Extra: openai
44
+ Requires-Dist: openai>=1.0; extra == 'openai'
45
+ Provides-Extra: openclaw
46
+ Requires-Dist: anthropic>=0.18.0; extra == 'openclaw'
47
+ Requires-Dist: google-genai>=1.0.0; extra == 'openclaw'
48
+ Provides-Extra: sentence-transformers
49
+ Requires-Dist: sentence-transformers>=2.2; extra == 'sentence-transformers'
50
+ Description-Content-Type: text/markdown
51
+
52
+ # keep
53
+
54
+ **Semantic memory with version history.**
55
+
56
+ Index documents and notes. Search by meaning. Track changes over time.
57
+
58
+ ```bash
59
+ pip install 'keep-skill[local]'
60
+ keep init
61
+
62
+ # Index content
63
+ keep update path/to/document.md -t project=myapp
64
+ keep update "Rate limit is 100 req/min" -t topic=api
65
+
66
+ # Search by meaning
67
+ keep find "what's the rate limit?"
68
+
69
+ # Track what you're working on
70
+ keep now "Debugging auth flow"
71
+ keep now -V 1 # Previous context
72
+ ```
73
+
74
+ ---
75
+
76
+ ## What It Does
77
+
78
+ - **Semantic search** — Find by meaning, not just keywords
79
+ - **Version history** — All documents retain history on update
80
+ - **Tag organization** — Filter and navigate with key=value tags
81
+ - **Recency decay** — Recent items rank higher in search
82
+ - **Works offline** — Local embedding models by default
83
+
84
+ Backed by ChromaDB for vectors, SQLite for metadata and versions.
85
+
86
+ ---
87
+
88
+ ## Installation
89
+
90
+ **Python 3.11–3.13 required.**
91
+
92
+ ```bash
93
+ # Recommended: local models (works offline)
94
+ pip install 'keep-skill[local]'
95
+
96
+ # Or with uv (faster):
97
+ uv tool install 'keep-skill[local]'
98
+
99
+ # API-based alternative (requires OPENAI_API_KEY)
100
+ pip install 'keep-skill[openai]'
101
+ ```
102
+
103
+ First run downloads embedding models (~3-5 minutes).
104
+
105
+ ---
106
+
107
+ ## Quick Start
108
+
109
+ ```bash
110
+ keep init # Creates .keep/ at repo root
111
+
112
+ # Index files and notes
113
+ keep update file:///path/to/doc.md -t project=myapp
114
+ keep update "Important insight" -t type=note
115
+
116
+ # Search
117
+ keep find "authentication flow" --limit 5
118
+ keep find "auth" --since P7D # Last 7 days
119
+
120
+ # Retrieve
121
+ keep get file:///path/to/doc.md
122
+ keep get ID -V 1 # Previous version
123
+ keep get "ID@V{1}" # Same as -V 1 (version identifier)
124
+ keep get ID --history # All versions
125
+
126
+ # Tags
127
+ keep tag project=myapp # Find by tag
128
+ keep tag --list # List all tags
129
+
130
+ # Current context
131
+ keep now # Show what you're working on
132
+ keep now "Fixing login bug" # Update context
133
+ ```
134
+
135
+ ### Python API
136
+
137
+ ```python
138
+ from keep import Keeper
139
+
140
+ kp = Keeper()
141
+
142
+ # Index
143
+ kp.update("file:///path/to/doc.md", tags={"project": "myapp"})
144
+ kp.remember("Rate limit is 100 req/min", tags={"topic": "api"})
145
+
146
+ # Search
147
+ results = kp.find("rate limit", limit=5)
148
+ for r in results:
149
+ print(f"[{r.score:.2f}] {r.summary}")
150
+
151
+ # Version history
152
+ prev = kp.get_version("doc:1", offset=1)
153
+ versions = kp.list_versions("doc:1")
154
+ ```
155
+
156
+ See [docs/QUICKSTART.md](docs/QUICKSTART.md) for configuration and more examples.
157
+
158
+ ---
159
+
160
+ ## Documentation
161
+
162
+ - **[docs/QUICKSTART.md](docs/QUICKSTART.md)** — Setup, configuration, lazy summarization
163
+ - **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete CLI and API reference
164
+ - **[docs/AGENT-GUIDE.md](docs/AGENT-GUIDE.md)** — Working session patterns
165
+ - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
166
+ - **[SKILL.md](SKILL.md)** — The reflective practice (for AI agents)
167
+
168
+ ---
169
+
170
+ ## For AI Agents
171
+
172
+ This library was designed as an agent skill — persistent memory that helps agents reflect before acting and learn from experience.
173
+
174
+ **The practice:**
175
+ - Pause before acting — `keep find` what you already know
176
+ - Notice breakdowns — when assumptions surface, index them
177
+ - Reflect after — `keep update` learnings for future sessions
178
+
179
+ See **[SKILL.md](SKILL.md)** for the full practice guide.
180
+
181
+ ---
182
+
183
+ ## Status
184
+
185
+ **Current:** v0.3.0
186
+
187
+ **Working:**
188
+ - ✅ Semantic search with embeddings
189
+ - ✅ Document versioning (all updates retain history)
190
+ - ✅ Content-addressed IDs for text (same content = same ID)
191
+ - ✅ Tag queries and full-text search
192
+ - ✅ Current context tracking (`keep now`)
193
+ - ✅ Recency decay (recent items rank higher)
194
+ - ✅ Lazy summarization (background processing)
195
+ - ✅ Provider abstraction (local or API-based)
196
+
197
+ **Planned** (see [later/](later/)):
198
+ - ⏳ Private/shared routing
199
+ - ⏳ Relationship graphs between items
200
+ - ⏳ LLM-based auto-tagging
201
+
202
+ ---
203
+
204
+ ## License
205
+
206
+ MIT
207
+
208
+ ---
209
+
210
+ ## Contributing
211
+
212
+ Published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
213
+
214
+ Issues and PRs welcome:
215
+ - Provider implementations
216
+ - Performance improvements
217
+ - Documentation clarity
218
+
219
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
@@ -1,28 +1,28 @@
1
- keep/__init__.py,sha256=371SMehsuIYYX8AfbaPplhF-YJa8qcpoUyGTOcX9Iwg,1581
1
+ keep/__init__.py,sha256=1WVkySoomQuf9-o3pIKs1CC2OwIyfkiaCxn-mO6nhd8,1581
2
2
  keep/__main__.py,sha256=3Uu70IhIDIjh8OW6jp9jQQ3dF2lKdJWi_3FtRIQMiMY,104
3
- keep/api.py,sha256=xM0VPzSNdeXp94fbuEzq1K1L7EZ_Ojy3U1UOMhQrgXo,48158
3
+ keep/api.py,sha256=EaPkI9Gv1r5LM8ZibqquGP_59xf4kQlCdv7nfct8QZw,58894
4
4
  keep/chunking.py,sha256=neAXOLSvVwbUxapbqq7nZrbSNSzMXuhxj-ODoOSodsU,11830
5
- keep/cli.py,sha256=Gl_0Ap5FWWPD7Hwj3FoGEgN3e0yyW8YeIVx75gk1KzY,25209
6
- keep/config.py,sha256=wRTKcvpQdZQQl7vAr5RKgIbSjkgYpPc_w78qmXdmtmU,15833
5
+ keep/cli.py,sha256=3flcfZHjvnHY8TxT-HJBBAuKnDusPAUD3ZwuMYYU7sw,40470
6
+ keep/config.py,sha256=RRnHHvhc9KkJBYt0rpAFIvAVXw40b56xtT74TFIBiDU,15832
7
7
  keep/context.py,sha256=CNpjmrv6eW2kV1E0MO6qAQfhYKRlfzAL--6v4Mj1nFY,71
8
- keep/document_store.py,sha256=1WhlF6hpshVXp2MGGF-zBJi6pSmS-tMHFmwG3EwaXik,17515
8
+ keep/document_store.py,sha256=UswqKIGSc5E-r7Tg9k0g5-byYnuar3e9FieQ7WNod9k,29109
9
9
  keep/errors.py,sha256=G9e5FbdfeugyfHOuL_SPZlM5jgWWnwsX4hM7IzanBZc,857
10
10
  keep/indexing.py,sha256=dpPYo3WXnIhFDWinz5ZBZVk7_qumeNpP4EpOIY0zMbs,6063
11
11
  keep/logging_config.py,sha256=IGwkgIyg-TfYaT4MnoCXfmjeHAe_wsB_XQ1QhVT_ro8,3503
12
12
  keep/paths.py,sha256=Dv7pM6oo2QgjL6sj5wPjhuMOK2wqUkfd4Kz08TwJ1ps,3331
13
- keep/pending_summaries.py,sha256=KRQ2AGQNnKlDBoVbOF7tkSv1oTmlimWtJzxQ3YcaVKY,5472
14
- keep/store.py,sha256=txaydUIrhbB-S-cSlSszxOVlAg0kJXmS_Mnit6jzR3c,14483
13
+ keep/pending_summaries.py,sha256=_irGe7P1Lmog2c5cEgx-BElpq4YJW-tEmF5A3IUZQbQ,5727
14
+ keep/store.py,sha256=d_exdEBQM7agpJcXL-nGsl46zXPQ2t35C8QF-NQX_Bw,18097
15
15
  keep/types.py,sha256=f6uOSYsYt6mj1ulKn2iRkooi__dWCiOQFPD6he2eID4,2149
16
16
  keep/providers/__init__.py,sha256=GFX_12g9OdjmpFUkTekOQBOWvcRW2Ae6yidfVVW2SiI,1095
17
17
  keep/providers/base.py,sha256=7Ug4Kj9fK2Dq4zDcZjn-GKsoZBOAlB9b-FMk969ER-g,14590
18
18
  keep/providers/documents.py,sha256=EXeSy5i3RUL0kciIC6w3ldAEfbTIyC5fgfzC_WAI0iY,8211
19
- keep/providers/embedding_cache.py,sha256=hUuQuP8MeXQdEr0eYqHesH-5wX1kRpumJQQ3o1_DI_A,8601
19
+ keep/providers/embedding_cache.py,sha256=gna6PZEJanbn2GUN0vj1b1MC0xVWePM9cot2KgZUdu8,8856
20
20
  keep/providers/embeddings.py,sha256=zi8GyitKexdbCJyU1nLrUhGt_zzPn3udYrrPZ5Ak8Wo,9081
21
21
  keep/providers/llm.py,sha256=BxROKOklKbkGsHcSADPNNgWQExgSN6Bg4KPQIxVuB3U,12441
22
22
  keep/providers/mlx.py,sha256=aNl00r9tGi5tCGj2ArYH7CmDHtL1jLjVzb1rofU1DAo,9050
23
23
  keep/providers/summarization.py,sha256=MlVTcYipaqp2lT-QYnznp0AMuPVG36QfcTQnvY7Gb-Q,3409
24
- keep_skill-0.2.0.dist-info/METADATA,sha256=mQtDWzLbEX_L6aKoM807zxph0y4J6IP45zGXQIvHuFU,9305
25
- keep_skill-0.2.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
26
- keep_skill-0.2.0.dist-info/entry_points.txt,sha256=W8yiI4kNeW0IC8ji4EHRWrvdhFxzaqTIePUhJAJAMOo,39
27
- keep_skill-0.2.0.dist-info/licenses/LICENSE,sha256=zsm0tpvtyUkevcjn5BIvs9jAho8iwxq3Ax9647AaOSg,1086
28
- keep_skill-0.2.0.dist-info/RECORD,,
24
+ keep_skill-0.4.1.dist-info/METADATA,sha256=sasoFYgfL9FK4nuIK99pruVoiUH65I-SN30giqc2wHs,6387
25
+ keep_skill-0.4.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
26
+ keep_skill-0.4.1.dist-info/entry_points.txt,sha256=W8yiI4kNeW0IC8ji4EHRWrvdhFxzaqTIePUhJAJAMOo,39
27
+ keep_skill-0.4.1.dist-info/licenses/LICENSE,sha256=zsm0tpvtyUkevcjn5BIvs9jAho8iwxq3Ax9647AaOSg,1086
28
+ keep_skill-0.4.1.dist-info/RECORD,,
@@ -1,304 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: keep-skill
3
- Version: 0.2.0
4
- Summary: Semantic memory - remember and search documents by meaning
5
- Project-URL: Homepage, https://github.com/hughpyle/keep
6
- Project-URL: Repository, https://github.com/hughpyle/keep
7
- Author: Hugh Pyle
8
- License: MIT
9
- License-File: LICENSE
10
- Keywords: agents,chromadb,embeddings,semantic-memory,vector-search
11
- Classifier: Development Status :: 3 - Alpha
12
- Classifier: Intended Audience :: Developers
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
- Classifier: Programming Language :: Python :: 3.13
18
- Classifier: Topic :: Software Development :: Libraries
19
- Classifier: Topic :: Text Processing
20
- Requires-Python: <3.14,>=3.11
21
- Requires-Dist: chromadb>=0.4
22
- Requires-Dist: tomli-w>=1.0
23
- Requires-Dist: typer>=0.9
24
- Provides-Extra: anthropic
25
- Requires-Dist: anthropic>=0.40.0; extra == 'anthropic'
26
- Provides-Extra: dev
27
- Requires-Dist: pytest-cov>=4.0; extra == 'dev'
28
- Requires-Dist: pytest>=7.0; extra == 'dev'
29
- Provides-Extra: documents
30
- Requires-Dist: beautifulsoup4>=4.9; extra == 'documents'
31
- Requires-Dist: pypdf>=5.0; extra == 'documents'
32
- Provides-Extra: gemini
33
- Requires-Dist: google-genai>=1.0.0; extra == 'gemini'
34
- Provides-Extra: local
35
- Requires-Dist: beautifulsoup4>=4.9; extra == 'local'
36
- Requires-Dist: mlx-lm>=0.10; (platform_system == 'Darwin' and platform_machine == 'arm64') and extra == 'local'
37
- Requires-Dist: mlx>=0.10; (platform_system == 'Darwin' and platform_machine == 'arm64') and extra == 'local'
38
- Requires-Dist: pypdf>=5.0; extra == 'local'
39
- Requires-Dist: sentence-transformers>=2.2; extra == 'local'
40
- Provides-Extra: mlx
41
- Requires-Dist: mlx-lm>=0.10; extra == 'mlx'
42
- Requires-Dist: mlx>=0.10; extra == 'mlx'
43
- Provides-Extra: openai
44
- Requires-Dist: openai>=1.0; extra == 'openai'
45
- Provides-Extra: openclaw
46
- Requires-Dist: anthropic>=0.18.0; extra == 'openclaw'
47
- Requires-Dist: google-genai>=1.0.0; extra == 'openclaw'
48
- Provides-Extra: sentence-transformers
49
- Requires-Dist: sentence-transformers>=2.2; extra == 'sentence-transformers'
50
- Description-Content-Type: text/markdown
51
-
52
- # keep
53
-
54
- **Associative memory for reflection and skillful action.**
55
-
56
- ---
57
-
58
- ## What is this?
59
-
60
- An agent skill. A practice tool for agents who want to develop judgment.
61
-
62
- An agent who rushes to act without checking memory will repeat mistakes, miss context, and fail to grow. An agent who reflects — before, during, after — becomes skillful. This library provides the mirror: persistent semantic memory that lets you ask "what do I already know?" before acting, and "what did I learn?" after.
63
-
64
- For the full practice guide, see **[SKILL.md](SKILL.md)**.
65
-
66
- Technically: semantic search using embeddings, backed by ChromaDB, with tag-based organization and recency decay. Available as CLI and Python API.
67
-
68
- ```bash
69
- # Before acting: what do I already know?
70
- keep find "how should we handle auth?"
71
-
72
- # After learning: capture it for future you
73
- keep update "User prefers OAuth2 with PKCE for authentication"
74
- ```
75
-
76
- **The practice:**
77
- - Pause before acting — check what you already know
78
- - Notice breakdowns — when assumptions surface, that's valuable
79
- - Reflect after — capture learnings so future you can find them
80
-
81
- **The technology:**
82
- - Semantic search (by meaning, not keywords)
83
- - Persistent across sessions (ChromaDB)
84
- - Tag-based organization and filtering
85
- - Recency decay (recent items rank higher)
86
- - Provider abstraction (local models or APIs)
87
- - CLI and Python API
88
-
89
- ---
90
-
91
- ## Quick Start
92
-
93
- ### Requirements
94
-
95
- - **Python:** 3.11, 3.12, or 3.13 (3.14+ not yet supported due to dependency constraints)
96
- - **Installation time:** 3-5 minutes (ChromaDB dependency resolution + embedding model downloads)
97
-
98
- ### Installation
99
-
100
- #### For users (just want the `keep` command)
101
-
102
- ```bash
103
- # With pip:
104
- pip install 'keep-skill[local]'
105
-
106
- # Or with uv (faster, auto-manages isolated environment):
107
- # Install uv first: https://docs.astral.sh/uv/getting-started/installation/
108
- uv tool install 'keep-skill[local]'
109
- ```
110
-
111
- #### For developers (working on keep itself)
112
-
113
- ```bash
114
- git clone https://github.com/hughpyle/keep
115
- cd keep
116
-
117
- # Create and activate a virtual environment
118
- python -m venv .venv
119
- source .venv/bin/activate # On Windows: .venv\Scripts\activate
120
-
121
- # Install in editable mode with local models
122
- pip install -e '.[local,dev]'
123
-
124
- # Or with uv (faster):
125
- uv pip install -e '.[local,dev]'
126
- ```
127
-
128
- #### Optional extras
129
-
130
- ```bash
131
- # OpenClaw integration (uses your configured models):
132
- pip install 'keep-skill[openclaw]'
133
-
134
- # Minimal install (configure providers manually):
135
- pip install keep-skill
136
- ```
137
-
138
- **After installation:**
139
-
140
- ```bash
141
- keep init
142
- # ⚠️ Remember to add .keep/ to .gitignore
143
-
144
- # Index a file
145
- keep update path/to/document.md --tag project=myapp
146
-
147
- # Store inline content
148
- keep update "Important: rate limit is 100 req/min" --tag topic=api
149
-
150
- # Semantic search
151
- keep find "what's the rate limit?"
152
-
153
- # Tag lookup
154
- keep tag topic=api
155
- ```
156
-
157
- ### Python API
158
-
159
- ```python
160
- from keep import Keeper
161
-
162
- kp = Keeper()
163
-
164
- # Index a file
165
- kp.update("file:///path/to/document.md", tags={"project": "myapp"})
166
-
167
- # Store inline content (API method)
168
- kp.remember("Important: rate limit is 100 req/min", tags={"topic": "api"})
169
-
170
- # Semantic search
171
- results = kp.find("what's the rate limit?", limit=5)
172
- for r in results:
173
- print(f"[{r.score:.2f}] {r.summary}")
174
-
175
- # Tag lookup
176
- api_docs = kp.query_tag("topic", "api")
177
- ```
178
-
179
- See [docs/QUICKSTART.md](docs/QUICKSTART.md) for more examples.
180
-
181
- ---
182
-
183
- ## OpenClaw Integration
184
-
185
- If you have [OpenClaw](https://openclaw.dev) configured, keep automatically uses your configured models:
186
-
187
- ```bash
188
- # Install with OpenClaw support
189
- pip install 'keep-skill[openclaw]'
190
-
191
- # Set your Anthropic API key (if using Claude models)
192
- export ANTHROPIC_API_KEY=sk-ant-...
193
-
194
- # Initialize (auto-detects ~/.openclaw/openclaw.json)
195
- keep init
196
- # ✓ Detected providers:
197
- # Embedding: sentence-transformers (local)
198
- # Summarization: anthropic (claude-sonnet-4)
199
- ```
200
-
201
- **Benefits:**
202
- - 🔄 Unified model configuration (DRY principle)
203
- - 🧠 Best of both: local embeddings + smart summarization
204
- - 🔒 Privacy-preserving (embeddings stay local)
205
- - 💰 Cost-effective (~$0.0001/document)
206
-
207
- See [docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md) for details.
208
-
209
- ---
210
-
211
- ## Documentation
212
-
213
- - **[SKILL.md](SKILL.md)** — The practice guide (start here for how to use memory skillfully)
214
- - **[docs/QUICKSTART.md](docs/QUICKSTART.md)** — Installation, setup, configuration
215
- - **[docs/AGENT-GUIDE.md](docs/AGENT-GUIDE.md)** — Detailed agent patterns, Python API
216
- - **[docs/REFERENCE.md](docs/REFERENCE.md)** — Complete API reference
217
- - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — How it works under the hood
218
- - **[docs/OPENCLAW-INTEGRATION.md](docs/OPENCLAW-INTEGRATION.md)** — OpenClaw integration guide
219
- - **[docs/system/](docs/system/)** — Domain and conversation patterns
220
-
221
- ---
222
-
223
- ## Philosophy
224
-
225
- ### Practice
226
-
227
- Memory isn't storage — it's a mirror for reflection.
228
-
229
- The triple check: before acting (what do I know?), during (notice breakdowns), after (capture learning). Breakdowns are valuable — they reveal assumptions. Index them, don't hide them.
230
-
231
- An agent without memory reacts to each moment as if it were new. An agent with memory reflects, learns, and grows. See **[SKILL.md](SKILL.md)** for the full practice guide.
232
-
233
- ### Technical Design
234
-
235
- **Schema as Data** — Configuration stored as queryable documents, not hardcoded.
236
-
237
- **Semantic by Default** — Search by meaning via vector similarity, not keywords.
238
-
239
- **Lazy Loading** — Dependencies loaded only when needed; missing providers give helpful errors.
240
-
241
- **Provider Agnostic** — Pluggable backends for embeddings, summarization, and storage.
242
-
243
- **No Original Content** — Only summaries and embeddings stored. URIs can be re-fetched if needed.
244
-
245
- ---
246
-
247
- ## Status
248
-
249
- **Current**: v0.1.0 — Early draft
250
-
251
- **Working:**
252
- - ✅ Core indexing (`update` with URI, text, or stdin modes)
253
- - ✅ Semantic search (`find`, `find_similar`)
254
- - ✅ Tag queries and full-text search
255
- - ✅ Embedding cache for performance
256
- - ✅ Recency decay (ACT-R style)
257
- - ✅ CLI interface
258
- - ✅ Provider abstraction with lazy loading
259
-
260
- **Planned** (see [later/](later/)):
261
- - ⏳ Context management (working context, top-of-mind retrieval)
262
- - ⏳ Private/shared routing
263
- - ⏳ Relationship graphs between items
264
- - ⏳ LLM-based tagging
265
-
266
- ---
267
-
268
- ## Requirements
269
-
270
- - Python 3.11+
271
- - ChromaDB (vector store)
272
- - One embedding provider:
273
- - sentence-transformers (local, default)
274
- - MLX (Apple Silicon, local)
275
- - OpenAI (API, requires key)
276
-
277
- ---
278
-
279
- ## License
280
-
281
- MIT
282
-
283
- ---
284
-
285
- ## Contributing
286
-
287
- This project is published on [PyPI as `keep-skill`](https://pypi.org/project/keep-skill/).
288
-
289
- See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on versioning and backward compatibility.
290
-
291
- Issues and PRs welcome, especially for:
292
- - Additional provider implementations
293
- - Performance improvements
294
- - Documentation clarity
295
- - OpenClaw integration patterns
296
-
297
- ---
298
-
299
- ## Related Projects
300
-
301
- - [ChromaDB](https://github.com/chroma-core/chroma) — Vector database backend
302
- - [sentence-transformers](https://github.com/UKPLab/sentence-transformers) — Embedding models
303
- - [MLX](https://github.com/ml-explore/mlx) — Apple Silicon ML framework
304
- - [OpenClaw](https://openclaw.dev) — Agent framework (integration target)