← Back to Plugins
Tools

Engrm

dr12hes By dr12hes 👁 98 views ▲ 0 votes

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.

Homepage GitHub

Install

openclaw plugins install engrm-openclaw-plugin

Configuration Example

{
  "project_id": "internal/design-system",
  "name": "Design System"
}

README

# Engrm

[![License: FSL-1.1-ALv2](https://img.shields.io/badge/license-FSL--1.1--ALv2-blue)](./LICENSE)
[![Node.js](https://img.shields.io/badge/node-%3E%3D18-green)](https://nodejs.org)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue)](https://www.typescriptlang.org/)
[![MCP Compatible](https://img.shields.io/badge/MCP-compatible-purple)](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

Loading comments...