@byterover/byterover
v1.1.8
Published
ByteRover context engine plugin for OpenClaw — curates and queries conversation context via brv CLI
Maintainers
Readme
@byterover/byterover
ByteRover context engine plugin for OpenClaw. Integrates the brv CLI as a context engine that curates conversation knowledge and retrieves relevant context for each prompt — giving your AI agent persistent, queryable memory.
Table of contents
What it does
When you chat with an OpenClaw agent, the conversation is ephemeral — older messages get compacted or lost as the context window fills up. ByteRover changes that by:
- Curating every turn — after each conversation turn, the plugin feeds the new messages to
brv curate, which extracts and stores facts, decisions, technical details, and preferences worth remembering - Querying on demand — before each new prompt is sent to the LLM, the plugin runs
brv querywith the user's message to retrieve curated knowledge relevant to the current request - Injecting context — retrieved knowledge is appended to the system prompt so the LLM has the right context without the user needing to repeat themselves
The result: your agent remembers what matters, forgets what doesn't, and retrieves context that's actually relevant to what you're asking about right now.
Prerequisites
- OpenClaw with plugin context engine support
- Node.js 22+
- brv CLI installed and available on your
PATH(or provide a custom path via config). The brv path depends on how you installed it:- curl: the default path is
~/.brv-cli/bin/brv - npm: run
which brvto find the path, then set it viabrvPathin the plugin config
- curl: the default path is
Quick start
1. Install the plugin
openclaw plugins install @byterover/byteroverFor local development, build the plugin once and link your working copy:
cd /path/to/brv-openclaw-plugin
npm install
npm run build
openclaw plugins install --link /path/to/brv-openclaw-pluginOpenClaw's install validator requires compiled runtime output (dist/index.js) before it will accept a path-linked plugin, so the npm run build step is mandatory. Re-run npm run build after editing the source.
2. Configure the context engine slot
openclaw config set plugins.slots.contextEngine byterover3. Set plugin options
Point the plugin to your brv binary and project directory:
openclaw config set plugins.entries.byterover.config.brvPath /path/to/brv
openclaw config set plugins.entries.byterover.config.cwd /path/to/your/project4. Verify
openclaw plugins listYou should see byterover listed and enabled. Restart OpenClaw, then start a conversation — you'll see [byterover] Plugin loaded in the gateway logs.
5. Uninstall (if needed)
openclaw plugins uninstall byterover
openclaw config set plugins.slots.contextEngine ""Configuration
ByteRover is configured through plugins.entries.byterover.config in your OpenClaw config file (~/.openclaw/openclaw.json):
{
"plugins": {
"slots": {
"contextEngine": "byterover"
},
"entries": {
"byterover": {
"enabled": true,
"config": {
"brvPath": "/usr/local/bin/brv",
"cwd": "/path/to/your/project",
"queryTimeoutMs": 12000,
"curateTimeoutMs": 60000
}
}
}
}
}Options
| Option | Type | Default | Description |
| ----------------- | -------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| brvPath | string | "brv" | Path to the brv CLI binary. Defaults to resolving brv from PATH. |
| cwd | string | process.cwd() | Working directory for brv commands. Must be a project with .brv/ initialized. |
| queryTimeoutMs | number | 12000 | Timeout in milliseconds for brv query calls. The effective assemble deadline is capped at 10,000 ms to stay within the agent ready timeout. |
| curateTimeoutMs | number | 60000 | Timeout in milliseconds for brv curate calls. |
How it works
ByteRover hooks into three points in the OpenClaw context engine lifecycle:
afterTurn — curate conversation knowledge
After each conversation turn completes, the plugin:
- Extracts new messages from the turn (skipping pre-prompt messages)
- Strips OpenClaw metadata (sender info, timestamps, tool results) to get clean text
- Serializes messages with sender attribution
- Sends the text to
brv curate --detachfor asynchronous knowledge extraction
Curation runs in detached mode — the brv daemon queues the work and the CLI returns immediately, so it never blocks the conversation.
assemble — retrieve relevant context
Before each prompt is sent to the LLM, the plugin:
- Takes the current user message (or falls back to scanning message history)
- Strips metadata and skips trivially short queries (< 5 chars)
- Runs
brv querywith a 10-second deadline - Wraps the result in a
<byterover-context>block and injects it as a system prompt addition
If the query times out or fails, the conversation proceeds without context — it's always best-effort.
compact — delegated to runtime
ByteRover does not own compaction. The plugin sets ownsCompaction: false, so OpenClaw's built-in sliding-window compaction handles context window management as usual.
ingest — no-op
Ingestion is handled by afterTurn in batch (all new messages from the turn at once), so the per-message ingest hook is a no-op.
Development
# Install dependencies
npm install
# Type check runtime code (tests are checked by vitest)
npm run typecheck
# Run tests
npm test
# Build runtime output (required before linking)
npm run build
# Link for local testing with OpenClaw
openclaw plugins install --link .
openclaw config set plugins.slots.contextEngine byteroverTesting locally
- Initialize a brv project:
cd /your/project && brv init - Link the plugin and configure as shown in Quick start
- Restart OpenClaw
- Send a few messages — check gateway logs for:
[byterover] Plugin loaded— plugin registeredafterTurn curating N new messages— curation runningassemble injecting systemPromptAddition— context being retrieved and injected
Project structure
index.ts # Plugin entry point and registration
openclaw.plugin.json # Plugin manifest (id, kind, config schema)
src/
context-engine.ts # ByteRoverContextEngine — implements ContextEngine
brv-process.ts # brv CLI spawning (query, curate) with timeout/abort
message-utils.ts # Metadata stripping and message text extraction
types.ts # Standalone type definitions (structurally compatible with openclaw/plugin-sdk)