🦀 Memory store for AI agents that learns what to retrieve — and what to suppress — from experience.
Project description
🦀 CrabPath
CrabPath is a memory store for AI agents that learns what to retrieve — and what to suppress — from experience.
Why?
- Static context loading wastes tokens because you load too much every turn.
- Classic RAG can’t learn from feedback, so retrieval stays similarity-only.
- CrabPath tracks which retrieval paths worked, and builds a graph of learned routes.
Install
python3 -m venv ~/.crabpath-env && source ~/.crabpath-env/bin/activate
pip install crabpath # PyPI
clawhub install crabpath # or ClawHub (OpenClaw agents)
# For embeddings (strongly recommended):
pip install crabpath[openai] # or: pip install crabpath[google]
Zero required dependencies. Python 3.10+. macOS Homebrew Python needs a venv (PEP 668).
Quick Start (60 seconds)
from crabpath import Node, Edge, Graph, activate, learn
g = Graph()
g.add_node(Node("timeout", "Deployment timed out"))
g.add_node(Node("rollback", "Rollback and restore"))
g.add_node(Node("debug", "Inspect logs"))
g.add_edge(Edge("timeout", "rollback", 0.6))
g.add_edge(Edge("timeout", "debug", 0.4))
result = activate(g, seeds={"timeout": 1.0})
learn(g, result, outcome=1.0) # reinforces paths that fired
print([node.id for node, energy in result.fired])
For AI Agents (3 commands)
crabpath init --workspace ~/.openclaw/workspace --sessions ~/.openclaw/agents/main/sessions/
crabpath install-hook --agent-workspace ~/.openclaw/workspace
crabpath query 'how do I deploy' --graph ~/.crabpath/graph.json --index ~/.crabpath/embed.json --top 8 --json
Which Interface?
| Interface | Status / Use |
|---|---|
| CLI (agents) | Primary agent-facing interface; JSON I/O for shell workflows. |
| MemoryController (Python) | Recommended direct integration for Python apps. |
| Adapter | Deprecated legacy bridge; prefer CLI or MemoryController. |
How It Works
- Documents are split into nodes and edges become weighted pointers.
- Reflex edges (
>0.8) auto-follow with near-zero overhead. - Habitual edges (
0.3-0.8) go through normal routing policy. - Dormant edges (
<0.3) are suppressed by default. - Positive outcomes (
+1) strengthen paths; negative outcomes (-1) create inhibitory edges. - Decay drops unused connections, while the autotuner keeps graph routing healthy.
Key Results
| Metric | Result |
|---|---|
| Context reduction | 90-99% |
| Negation accuracy | 1.0 vs 0.0 (BM25) |
| Internal tests | 360 |
| Required deps | Zero |
Full benchmark details: docs/research/
When NOT to Use CrabPath
- Simple static-document RAG without feedback loops (use a vector DB).
- Very small codebases (
< 10files) with insufficient structure to learn recurring routes. - One-off questions with no recurring retrieval patterns.
Links
- Paper: jonathangu.com/crabpath/
- ClawHub: clawhub.ai
- PyPI: pypi.org/project/crabpath/
License
Apache 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crabpath-2.0.0.tar.gz.
File metadata
- Download URL: crabpath-2.0.0.tar.gz
- Upload date:
- Size: 2.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30111000a8df1e43cb91eb90f0785d43ac4b489faf76e8d063e41a2df3ed0b02
|
|
| MD5 |
fe0acba96d15f79f72eafc3067f932a1
|
|
| BLAKE2b-256 |
1256fc2286f11ab213f787b9b0b55629289fa540556d5463686931c54dc77b39
|
Provenance
The following attestation bundles were made for crabpath-2.0.0.tar.gz:
Publisher:
publish.yml on jonathangu/crabpath
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crabpath-2.0.0.tar.gz -
Subject digest:
30111000a8df1e43cb91eb90f0785d43ac4b489faf76e8d063e41a2df3ed0b02 - Sigstore transparency entry: 998071925
- Sigstore integration time:
-
Permalink:
jonathangu/crabpath@aaf1938a0ad082a76634992ba91b3b0ac13fa77e -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/jonathangu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@aaf1938a0ad082a76634992ba91b3b0ac13fa77e -
Trigger Event:
push
-
Statement type:
File details
Details for the file crabpath-2.0.0-py3-none-any.whl.
File metadata
- Download URL: crabpath-2.0.0-py3-none-any.whl
- Upload date:
- Size: 106.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c76f5964ed49505af53397f3a9f26265ed38ec204e061f9d02641ac769ba1659
|
|
| MD5 |
844a406a624c84607a57abfa8a02e602
|
|
| BLAKE2b-256 |
dcf08b102ec809e8f7adca9a812246554601653c435312c60e5dfe8f833457e7
|
Provenance
The following attestation bundles were made for crabpath-2.0.0-py3-none-any.whl:
Publisher:
publish.yml on jonathangu/crabpath
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
crabpath-2.0.0-py3-none-any.whl -
Subject digest:
c76f5964ed49505af53397f3a9f26265ed38ec204e061f9d02641ac769ba1659 - Sigstore transparency entry: 998072022
- Sigstore integration time:
-
Permalink:
jonathangu/crabpath@aaf1938a0ad082a76634992ba91b3b0ac13fa77e -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/jonathangu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@aaf1938a0ad082a76634992ba91b3b0ac13fa77e -
Trigger Event:
push
-
Statement type: