cerebro
by Wendell-A
README.md
# Cérebro 2.0
Context optimization server for OpenCode. Compresses LLM prompts via LLMLingua-2, injects task protocols, and provides a 2nd Brain knowledge graph.
## Architecture
```
┌─────────────────────────────────────────────────┐
│ OpenCode │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ Plugin │ │ MCP Client │ │
│ │ (hooks) │ │ (tools) │ │
│ └──────┬───────┘ └────────────┬─────────────┘ │
│ │ │ │
└─────────┼───────────────────────┼────────────────┘
│ │
┌─────▼─────┐ ┌──────▼──────┐
│ Compressor │ │ MCP Server │
│ LLMLingua-2│ │ + HTTP API │
└─────┬─────┘ └──────┬──────┘
│ │
┌─────▼───────────────────────▼──────┐
│ @cerebro/core │
│ compressor · task-injector · brain │
└────────────────────────────────────┘
```
### Packages
| Package | Description |
|---|---|
| `@cerebro/core` | Compression engine, task injector, brain engine, metrics |
| `@cerebro/mcp-server` | MCP stdio server + HTTP API for dashboard |
| `@cerebro/plugin` | OpenCode plugin (message compression + task injection) |
| `@cerebro/dashboard` | Vite + React + Tailwind dashboard UI |
## Quick Start
```bash
# Install dependencies
pnpm install
# Approve native builds (onnxruntime-node)
pnpm approve-builds
# Run tests
pnpm test
# Build all packages
pnpm -r build
# Start MCP server (stdio for OpenCode)
node packages/mcp-server/dist/index.js
# Start dashboard dev server
pnpm --filter @cerebro/dashboard dev
```
## Configuration
Environment variables (set in `opencode.json` under `environment`):
| Variable | Default | Description |
|---|---|---|
| `COMPRESSION_RATE` | `0.4` | Compression rate (0.05–1.0, lower = more compression) |
| `BRAIN_PATH` | `.context-brain` | Path to 2nd Brain knowledge base |
| `DASHBOARD_PORT` | `4321` | HTTP API port for dashboard |
| `ENABLE_TASK_INJECTION` | `true` | Enable task protocol injection |
| `PROTECTED_PATTERNS` | `code,json,errors,system` | Comma-separated protected block patterns |
### OpenCode Integration
Add to `opencode.json` in your project root:
```json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cerebro": {
"type": "local",
"command": ["node", "caminho/para/cerebro/packages/mcp-server/dist/index.js"],
"environment": {
"COMPRESSION_RATE": "0.4",
"BRAIN_PATH": ".context-brain",
"DASHBOARD_PORT": "4321",
"ENABLE_TASK_INJECTION": "true"
},
"enabled": true
}
}
}
```
## MCP Tools
### `compress_prompt`
Compress text using LLMLingua-2 ONNX.
```json
{ "text": "Your long prompt...", "rate": 0.4 }
```
### `brain_resolve`
Query the 2nd Brain for a screen and its wiki-linked dependencies.
```json
{ "screen": "dashboard-vendas", "depth": 1 }
```
### `brain_index`
Index or update a screen in the knowledge graph.
```json
{
"id": "dashboard-vendas",
"content": "---\ntitle: Dashboard Vendas\n---\n\n# Dashboard Vendas\n\nMetrics for the sales dashboard."
}
```
### `brain_screens`
List all indexed screens. No parameters.
### `cerebro_metrics`
Get compression metrics and token savings. No parameters.
### `cerebro_config`
Get or set runtime configuration.
```json
{ "key": "compressionRate", "value": 0.3 }
```
## Dashboard
The dashboard runs on port 4321 and provides:
- **Métricas**: Compression stats, token savings, recent events
- **2º Cérebro**: Browse indexed screens and their wiki-links
- **Config**: View and edit runtime configuration
```bash
pnpm --filter @cerebro/dashboard dev
# Open http://localhost:4321
```
## Plugin Hooks
The OpenCode plugin provides three hooks:
| Hook | Description |
|---|---|
| `experimental.chat.messages.transform` | Compresses old messages before sending to LLM |
| `experimental.chat.system.transform` | Injects task protocol + self-check into system prompt |
| `tool.execute.after` | Logs tool execution for dashboard visibility |
## Development
```bash
# Type check all packages
pnpm -r typecheck
# Run tests
pnpm test
# Watch mode
npx vitest
# Build dashboard
pnpm --filter @cerebro/dashboard build
```
## Testing
66 tests across 6 suites:
```
packages/core/src/ task-injector.test.ts (18) · metrics.test.ts (5)
packages/mcp-server/src/ errors.test.ts (9) · rate-limiter.test.ts (7) · e2e.test.ts (10)
packages/plugin/src/ plugin.test.ts (8)
```
Run with: `pnpm test` or `npx vitest run`
## License
MIT
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues