Tools
Engrm
Cross-device AI memory for OpenClaw, Claude Code, and Codex. The only memory plugin that syncs across devices and agents. Free tier: 2 devices, 5,000 observations.
Install
openclaw plugins install engrm-openclaw-plugin
Configuration Example
{
"project_id": "internal/design-system",
"name": "Design System"
}
README
# Engrm
[](./LICENSE)
[](https://nodejs.org)
[](https://www.typescriptlang.org/)
[](https://modelcontextprotocol.io)
**The only AI memory that syncs across devices and agents.**
Cross-device persistent memory for OpenClaw, Claude Code, Codex, and any MCP-compatible agent. Start free with 2 devices.
[Get Started](https://engrm.dev) โข [Documentation](https://engrm.dev/developers) โข [Blog](https://engrm.dev/blog)
---
## Why Engrm?
- **Cross-device sync** โ Fix a bug on your laptop, continue on your desktop. No other memory tool does this.
- **Cross-agent compatible** โ Works with OpenClaw, Claude Code, Codex, Cursor, Windsurf, Cline, Zed
- **Free tier** โ 2 devices, 5,000 observations, full sync. ยฃ0 forever.
- **Offline-first** โ Local SQLite + sqlite-vec. <50ms search. Works on a plane.
- **Delivery Review** โ Compare what was promised vs what shipped
- **Sentinel** โ Real-time code audit before changes land
- **Team memory** โ Share insights across your whole team (Team plan)
---
## vs Other Memory Tools
| Feature | Engrm Free | Supermemory Pro | mem0 |
|---------|------------|-----------------|------|
| **Cost** | ยฃ0 | $20/mo | ~$2/mo + usage |
| **Cross-device** | โ
2 devices | โ Single device | โ Single device |
| **OpenClaw plugin** | โ
Native | โ
(Pro required) | โ
(usage costs) |
| **Works with Claude/Codex** | โ
| โ | โ |
| **Delivery Review** | โ
| โ | โ |
| **Sentinel** | โ
(Vibe+) | โ | โ |
[Read the full comparison โ](https://engrm.dev/blog/engrm-openclaw-cross-device-memory)
---
## Installation
### For OpenClaw Users
```bash
# 1. Install the plugin
openclaw plugins install engrm-openclaw-plugin
# 2. Restart OpenClaw
# Quit and reopen, or restart gateway
# 3. Connect Engrm in chat
/engrm connect
# 4. Verify
/engrm status
```
**What works:**
- โ
Session startup memory injection
- โ
Automatic session capture
- โ
Cross-device sync (unique to Engrm)
- โ
`/engrm` slash commands
- โ
Sentinel advisory mode (Vibe+ plans)
**Blog:** [Engrm Now Supports OpenClaw โ](https://engrm.dev/blog/engrm-openclaw-cross-device-memory)
### For Claude Code / Codex
```bash
npx engrm init
```
This auto-configures MCP servers and hooks in `~/.claude.json` and `~/.codex/config.toml`.
**Alternative methods:**
```bash
# From a provisioning token (shown on engrm.dev after signup)
npx engrm init --token=cmt_your_token
# Self-hosted Candengo Vector
npx engrm init --url=https://vector.internal.company.com
# Manual setup (air-gapped environments)
npx engrm init --manual
```
For npm users, Engrm runs on Node.js 18+ and does not require Bun to be installed.
---
## How It Works
### Background Operation
Engrm works automatically:
- **Session start** โ injects relevant project memory into context
- **While you work** โ captures observations from tool use where the agent exposes that hook surface
- **Session end** โ generates a session digest, syncs to cloud, and turns recent work into a denser project brief
```
โโโ Engrm Session Summary โโโ
๐ Request: Fix the OAuth redirect validation
๐ Investigated: redirect_uri handling in auth.py
๐ก Learned: scheme + host + port must all match registered URIs
โ
Completed: Stricter redirect_uri validation (auth.py)
๐ข Risk: Low (0.12)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
### Check Status
```bash
npx engrm status
```
```
Engrm Status
User: david
Email: [email protected]
Device: macbook-a1b2c3d4
Plan: Pro (ยฃ9.99/mo)
Candengo: https://www.candengo.com
MCP server: registered
Codex MCP: registered
Hooks: registered (6 hooks)
Codex hooks: registered (2 hooks)
Observations: 1,247 active
By type: change: 412, discovery: 289, bugfix: 187, ...
Sentinel: enabled (advisory, 142/200 today)
Sync: push 2m ago, pull 5m ago
Security: 3 findings (1 high, 2 medium)
```
### Architecture
**Claude Code session:**
```
โ
โโ SessionStart hook โโโ inject relevant memory into context
โ
โโ PreToolUse hook โโโโโ Sentinel audits Edit/Write (optional)
โ
โโ PostToolUse hook โโโโ extract observations from tool results
โ
โโ PreCompact hook โโโโโ re-inject memory before context compression
โ
โโ ElicitationResult โโโ capture MCP form submissions
โ
โโ Stop hook โโโโโโโโโโโ session digest + sync + summary
โ
โผ
Local SQLite (FTS5 + sqlite-vec)
โ
โผ (sync every 30s)
Candengo Vector (cloud)
โ
โผ
Available on all your devices + team members
```
**Codex session:**
```
โ
โโ SessionStart hook โโโ inject relevant memory into context
โ
โโ MCP tools โโโโโโโโโโโ search, save, inspect, message, stats
โ
โโ Stop hook โโโโโโโโโโโ session digest + sync + summary
```
### Agent Capability Matrix
| Capability | Claude Code | Codex | OpenClaw |
|-----------|-------------|-------|----------|
| MCP server tools | โ | โ | Via skills / MCP |
| Session-start context injection | โ | โ | Via skill-guided workflow |
| Stop/session summary hook | โ | โ | Via skill-guided workflow |
| Per-tool automatic capture | โ | Partial via MCP/manual flows only | Manual / skill-guided |
| Pre-write Sentinel hook | โ | Not yet exposed by Codex public hooks | Not exposed |
| Pre-compact reinjection | โ | Not exposed | Not exposed |
| ElicitationResult capture | โ | Not exposed | Not exposed |
See [AGENT_SUPPORT.md](AGENT_SUPPORT.md) for detailed comparison.
---
## Features
### MCP Tools
The MCP server exposes tools that supported agents can call directly:
| Tool | Purpose |
|------|---------|
| `search` | Find relevant observations from memory (hybrid FTS5 + vector) |
| `timeline` | Chronological context around an observation |
| `get_observations` | Fetch full details by ID |
| `save_observation` | Manually save something worth remembering |
| `install_pack` | Load a curated knowledge pack for your stack |
| `send_message` | Leave a cross-device or team note |
| `recent_activity` | Inspect what Engrm captured most recently |
| `memory_stats` | View high-level capture and sync health |
### Observation Types
| Type | What it captures |
|------|------------------|
| `discovery` | Learning about existing systems or codebases |
| `bugfix` | Something was broken, now fixed |
| `decision` | Architectural or design choice with rationale |
| `change` | Meaningful modification (feature, config, docs) |
| `feature` | New capability or functionality |
| `refactor` | Code restructured without behavior change |
| `pattern` | Recurring issue or technique |
| `digest` | Session summary (auto-generated) |
### Hybrid Search
Local FTS5 + sqlite-vec (all-MiniLM-L6-v2, 384 dims) combined with Candengo Vector's BGE-M3 semantic search. Results merged via Reciprocal Rank Fusion.
### Sentinel
LLM-powered review of every `Edit`/`Write` before it executes. Catches security issues, anti-patterns, and drift from team decisions.
```
โ ๏ธ Sentinel: SQL query uses string concatenation instead of parameterized query
Rule: sql-injection
(Advisory mode โ change allowed)
```
**Built-in rule packs:** security, auth, api, react, database.
```bash
npx engrm sentinel init-rules # Install all rule packs
npx engrm sentinel rules # List available packs
```
### Knowledge Packs
Pre-loaded knowledge for your tech stack. Detected automatically on session start.
**Available:** typescript-patterns, nextjs-patterns, node-security, python-django, react-gotchas, api-best-practices, web-security
```bash
npx engrm install-pack typescript-patterns
```
### Secret Scrubbing
Multi-layer regex scanning for API keys, passwords, tokens, and credentials. Sensitive content is redacted before storage and sync. Custom patterns configurable in `~/.engrm/settings.json`.
### Retention & Aging
Observations age gracefully: **active** (30 days, full weight) โ **aging** (0.7x search weight) โ **archived** (compacted into digests) โ **purged** (after 12 months). Pinned observations never age.
---
## Pricing
**Free tier stays free forever.** No bait-and-switch.
Start with 2 devices and 5,000 observations. Upgrade when you need more.
| | Free | Vibe | Pro | Team |
|---|------|------|-----|------|
| **Price** | ยฃ0 | ยฃ5.99/mo | ยฃ9.99/mo | ยฃ12.99/seat/mo |
| **Observations** | 5,000 | 25,000 | 100,000 | Unlimited |
| **Devices** | 2 | 3 | 5 | Unlimited |
| **Cloud sync** | โ | โ | โ | โ |
| **Sentinel** | โ | Advisory (50/day) | Advisory (200/day) | Blocking (unlimited) |
| **Retention** | 30 days | 90 days | 1 year | Unlimited |
| **Team namespace** | โ | โ | โ | โ |
Sign up at [engrm.dev](https://engrm.dev).
---
## Self-Hosted
Point Engrm at your own [Candengo Vector](https://www.candengo.com) instance:
```bash
npx engrm init --url=https://vector.internal.company.com --token=cmt_...
```
Candengo Vector provides the backend: BGE-M3 hybrid search, multi-tenant namespaces, and team sync. See the [Candengo docs](https://www.candengo.com/docs) for deployment.
---
## Configuration
### `~/.engrm/settings.json`
Created by `engrm init`. Contains API credentials, sync settings, search preferences, secret scrubbing patterns, and Sentinel configuration.
### `.engrm-project.json`
Place in your project root to override project identity for non-git projects:
```json
{
"project_id": "internal/design-system",
"name": "Design System"
}
```
### Agent Auto-Registration
Engrm auto-registers in:
- `~/.claude.json` โ MCP server (`engrm`)
- `~/.claude/settings.json` โ 6 lifecycle hooks
- `~/.codex/config.toml` โ MCP server (`engrm`) + `codex_hooks` feature flag
- `~/.codex/hooks.json` โ SessionStart and Stop hooks
---
## Technical Stack
- **Runtime:** TypeScript, runs on Bun (dev) or Node.js 18+ (npm)
- **Local storage:** SQLite via `better-sqlite3`, FTS5 full-text search, `sqlite-vec` f
... (truncated)
tools
Comments
Sign in to leave a comment