Skip to content
Back to skills

Crabpath

ASecurity

Memory graph engine with caller-provided embed and LLM callbacks; core is pure, with real-time correction flow and optional OpenAI integration.

  • 14 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 7, 2026
ai-agentspythonnodeapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 7, 2026

npx -y skills add modbender/skill-library-mcp --skill crabpath --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Crabpath?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Crabpath
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modbender-crabpath/badge)](https://www.skillsdirectory.com/skills/modbender-crabpath)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: crabpath
description: Memory graph engine with caller-provided embed and LLM callbacks; core is pure, with real-time correction flow and optional OpenAI integration.
metadata:
  openclaw:
    emoji: "🦀"
    requires:
      python: ">=3.10"
---

# CrabPath

Pure graph core: zero required deps and no network calls. Caller provides callbacks.

## Design Tenets

- No network calls in core
- No secret discovery (no dotfiles, keychain, or env probing)
- No subprocess provider wrappers
- Embedder identity in state metadata; dimension mismatches are errors
- One canonical state format (`state.json`)

## Quick Start

```python
from crabpath import split_workspace, HashEmbedder, VectorIndex

graph, texts = split_workspace("./workspace")
embedder = HashEmbedder()
index = VectorIndex()
for nid, content in texts.items():
    index.upsert(nid, embedder.embed(content))
```

## Embeddings and LLM callbacks

- Default: `HashEmbedder` (hash-v1, 1024-dim)
- Real: callback `embed_fn` / `embed_batch_fn` (e.g., `text-embedding-3-small`)
- LLM routing: callback `llm_fn` using `gpt-5-mini` (example)

## Session Replay

`replay_queries(graph, queries)` can warm-start from historical turns.

## CLI

`--state` is preferred:

`crabpath query TEXT --state S [--top N] [--json]`
`crabpath query TEXT --state S --chat-id CID`

`crabpath doctor --state S`
`crabpath info --state S`
`crabpath init --workspace W --output O --embedder openai`
`crabpath query TEXT --state S --llm openai`
`crabpath inject --state S --type TEACHING [--type DIRECTIVE]`

Real-time correction flow:
`python3 query_brain.py --chat-id CHAT_ID`
`python3 learn_correction.py --chat-id CHAT_ID`

## Quick Reference
- `crabpath init/query/learn/inject/health/doctor/info`
- `query_brain.py --chat-id` and `learn_correction.py` for real-time correction pipelines
- `query_brain.py` traversal limits: `beam_width=8`, `max_hops=30`, `fire_threshold=0.01`
- Hard traversal caps: `max_fired_nodes` and `max_context_chars` (defaults `None`; `query_brain.py` defaults `max_context_chars=20000`)
- `examples/correction_flow/`, `examples/cold_start/`, `examples/openai_embedder/`

## API Reference

- Core lifecycle:
  - `split_workspace`
  - `load_state`
  - `save_state`
  - `ManagedState`
  - `VectorIndex`
- Traversal and learning:
  - `traverse`
  - `TraversalConfig`
  - `TraversalConfig.beam_width`, `.max_hops`, `.fire_threshold`, `.max_fired_nodes`, `.max_context_chars`, `.reflex_threshold`, `.habitual_range`, `.inhibitory_threshold`
  - `TraversalResult`
  - `apply_outcome`
- Runtime injection APIs:
  - `inject_node`
  - `inject_correction`
  - `inject_batch`
- Maintenance helpers:
  - `suggest_connections`, `apply_connections`
  - `suggest_merges`, `apply_merge`
  - `measure_health`, `autotune`, `replay_queries`
- Embedding utilities:
  - `HashEmbedder`
  - `OpenAIEmbedder`
  - `default_embed`
  - `default_embed_batch`
  - `openai_llm_fn`
- LLM routing callbacks:
  - `chat_completion`
- Graph primitives:
  - `Node`
  - `Edge`
  - `Graph`
  - `split_workspace`
  - `generate_summaries`

## CLI Commands

- `crabpath init --workspace W --output O [--sessions S] [--embedder openai]`
- `crabpath query TEXT --state S [--top N] [--json] [--chat-id CHAT_ID]`
- `crabpath learn --state S --outcome N --fired-ids a,b,c [--json]`
- `crabpath inject --state S --id NODE_ID --content TEXT [--type CORRECTION|TEACHING|DIRECTIVE] [--json] [--connect-min-sim 0.0]`
- `crabpath inject --state S --id NODE_ID --content TEXT --type TEACHING`
- `crabpath inject --state S --id NODE_ID --content TEXT --type DIRECTIVE`
- `crabpath health --state S`
- `crabpath doctor --state S`
- `crabpath info --state S`
- `crabpath replay --state S --sessions S`
- `crabpath merge --state S [--llm openai]`
- `crabpath connect --state S [--llm openai]`
- `crabpath journal [--stats]`
- `query_brain.py --chat-id CHAT_ID`
- `learn_correction.py --chat-id CHAT_ID`

## Traversal defaults

- `beam_width=8`
- `max_hops=30`
- `fire_threshold=0.01`
- `reflex_threshold=0.6`
- `habitual_range=0.2-0.6`
- `inhibitory_threshold=-0.01`
- `max_fired_nodes` (hard node-count cap, default `None`)
- `max_context_chars` (hard context cap, default `None`; `query_brain.py` default is `20000`)

## Paper

https://jonathangu.com/crabpath/

Files in this skill

  • CHANGELOG.md12.5 KB
  • CONTRIBUTING.md1.7 KB
  • README.md16 KB
  • REPRODUCE.md4.4 KB
  • SKILL.md4.3 KB
  • benchmarks/external/README.md1.5 KB
  • benchmarks/external/run_hotpotqa.py19 KB
  • benchmarks/external/run_multihop_rag.py19.9 KB
  • benchmarks/queries.json7.7 KB
  • benchmarks/run_benchmark.py17.7 KB
  • crabpath/__init__.py2 KB
  • crabpath/__main__.py83 B
  • crabpath/_batch.py2.4 KB
  • crabpath/_util.py1.1 KB
  • crabpath/autotune.py6.2 KB
  • crabpath/cli.py43.4 KB
  • crabpath/compact.py10.1 KB
  • crabpath/connect.py5.9 KB
  • crabpath/daemon.py18.3 KB
  • crabpath/decay.py1.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…