URI-based memory addressing with versioning, causal tracking, and vector search.
┌─────────────────────────────────────────────────────────────┐
│ Pointer Memory OS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Pointer │───▶│ Qdrant │───▶│ MemoV │ │
│ │ System │ │ Vector │ │ Git Sync │ │
│ │ │ │ Search │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Pointer Directory (JSON) │ │
│ │ ptr://domain/topic/slug@version → payload │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
ptr://{domain}/{topic}/{slug}@{version}
Examples:
ptr://finance/rule/revenue@2025-Q1ptr://api/auth/clientId@v2ptr://code/bug/memory-leak@v1ptr://hash/sha256:a1b2c3d4e5f6(content-addressed)
Core pointer generation, versioning, and management.
const { PointerSystem } = require('./memory/pointer');
const ps = new PointerSystem();
// Generate pointer
const ptr = ps.generatePointer('finance', 'rule', 'revenue', 'v1');
// → ptr://finance/rule/revenue@v1
// Create payload
const payload = ps.createPayload({
pointer: ptr,
type: 'rule',
topic: 'finance',
content: 'Revenue recognition follows ASC 606',
keywords: ['revenue', 'accounting']
});
// Store
ps.store(ptr, payload);
// Deprecate and create new version
const newPayload = ps.deprecateAndCreate(ptr, {
type: 'rule',
topic: 'finance',
content: 'Updated revenue rule for 2026',
keywords: ['revenue', 'accounting', '2026']
});
// → ptr://finance/rule/revenue@v2 (supersedes v1)Vector search with pointer addressing.
const { QdrantPointerStore } = require('./memory/qdrant-pointer');
const store = new QdrantPointerStore('http://localhost:6333');
// Initialize
await store.initialize();
// Store with embedding
await store.storePointer(payload, embedding);
// Search by vector similarity
const results = await store.searchPointers(queryEmbedding, 10);
// → [{ pointer, score, summary, payload }]
// Get exact pointer
const payload = await store.getPointer('ptr://finance/rule/revenue@v1');
// Filter by topic
const active = await store.getActiveByTopic('finance');
// Get version chain
const chain = await store.getPointerChain('ptr://finance/rule/revenue@v2');
// → [v1, v2]Migrate existing Memos to pointer system.
# Set environment variables
export MEMOS_URL=http://localhost:5230
export MEMOS_TOKEN=your_token
export OPENAI_KEY=sk-...
export QDRANT_URL=http://localhost:6333
# Run migration
node scripts/memos-migration.jsProcess:
- Fetch all memos from Memos API
- Extract facts using GPT-4
- Generate pointers for each fact
- Create embeddings with OpenAI
- Store in Qdrant
- Export to
memory/pointers.json
{
"pointer": "ptr://finance/rule/revenue@v1",
"type": "fact|rule|lesson|error",
"topic": "finance",
"content": "Revenue recognition follows ASC 606",
"version": "v1",
"status": "active|deprecated",
"keywords": ["revenue", "accounting"],
"supersedes": "ptr://finance/rule/revenue@v0",
"metadata": {
"source": "memos",
"memo_id": "123"
},
"created_at": "2026-03-03T08:00:00Z",
"updated_at": "2026-03-03T08:00:00Z"
}// Old pointer becomes deprecated
const oldPtr = 'ptr://api/auth/token@v1';
const oldPayload = await store.getPointer(oldPtr);
// status: 'active'
// Create new version
const newPayload = await store.deprecateAndCreate(
oldPtr,
{ content: 'Updated token logic', ... },
newEmbedding
);
// → ptr://api/auth/token@v2
// Old pointer now deprecated
const updated = await store.getPointer(oldPtr);
// status: 'deprecated'
// supersedes: null
// New pointer supersedes old
newPayload.supersedes === oldPtr; // trueconst chain = await store.getPointerChain('ptr://api/auth/token@v3');
// → [
// { pointer: 'ptr://api/auth/token@v1', status: 'deprecated' },
// { pointer: 'ptr://api/auth/token@v2', status: 'deprecated' },
// { pointer: 'ptr://api/auth/token@v3', status: 'active' }
// ]# Test pointer system (no dependencies)
node scripts/test-pointer.js
# Test Qdrant integration (requires Qdrant running)
node scripts/test-pointer.js --qdrantclaw-mesh-dev/
├── memory/
│ ├── pointer.js # Pointer system
│ ├── qdrant-pointer.js # Qdrant integration
│ ├── causal.js # Causal correction (existing)
│ ├── ontology.js # Ontology (existing)
│ └── pointers.json # Pointer directory
├── scripts/
│ ├── memos-migration.js # Memos → Pointers
│ └── test-pointer.js # Tests
└── .mem/ # MemoV Git repo
// Store in both MemoV and Qdrant
async function fusedStore(text) {
// 1. Store in MemoV Git
await memov.store(text);
// 2. Extract pointer
const pointer = extractPointer(text);
// 3. Generate embedding
const embedding = await generateEmbedding(text);
// 4. Store in Qdrant
await store.storePointer(pointer, embedding);
}
// Global recall
async function globalRecall(query) {
// 1. Search Qdrant
const embedding = await generateEmbedding(query);
const results = await store.searchPointers(embedding);
// 2. Get full content from MemoV
const fullContent = await Promise.all(
results.map(r => memov.get(r.pointer))
);
return fullContent;
}// Get active pointers by type
await store.filterPointers({
must: [
{ key: 'type', match: { value: 'rule' } },
{ key: 'status', match: { value: 'active' } }
]
});
// Get pointers by keyword
await store.filterPointers({
must: [
{ key: 'keywords', match: { any: ['revenue', 'accounting'] } }
]
});
// Get recent pointers
await store.filterPointers({
must: [
{
key: 'created_at',
range: {
gte: '2026-03-01T00:00:00Z'
}
}
]
});# Qdrant
QDRANT_URL=http://localhost:6333
# OpenAI (for embeddings and extraction)
OPENAI_KEY=sk-...
# Memos (for migration)
MEMOS_URL=http://localhost:5230
MEMOS_TOKEN=your_token
# MemoV
MEMOV_PATH=~/.mem- Integrate
causal.jsfor error correction - Add context tree pruning
- Create A2A agent chain (planner/researcher/coder/validator/updater)
- Implement
fusedStoreandglobalRecall - Add evolver fitness optimization
- Docker compose setup
- Distributed sync via claw-mesh
- memory-qdrant - Core inspiration
- memov - Code memory
- claw-mesh - Distributed mesh
- Paper 2509: URI-based Memory
- Paper 2511: Causal Correction