OpsContext
OpsContext is a local MCP server that gives AI coding agents searchable project knowledge, operational/infra auditing, persistent memory, and compliance/audit controls.
Search indexed project knowledge with hybrid, keyword, or semantic modes; list/read sources and force reindexing.
Discover projects and inspect tech stack, git/docker/PM2 infrastructure; detect port conflicts, run compliance/version audits, and score AI-readiness (project-level tools require Pro).
Save, load, list, and delete named sessions to persist context across coding sessions.
Save, list, delete, and bulk-import permanent operational learnings that auto-surface in search results.
Verify the tamper-evident audit log chain for evidence aligned with SOC 2/ISO 27001 controls.
Report multi-agent token/cost/capacity from Claude Code transcripts and surface drift, loop, stuck-tool, fabrication, or silent-failure signals.
Run an end-of-session checklist for uncommitted changes and documentation freshness.
Activate or check a Pro license.
Collects Composer dependency metadata as part of project operational context.
Collects Docker container and fleet state to provide visibility into running infrastructure.
Reads .env configuration files with secret values redacted, exposing environment context safely.
Collects git status, working-tree state, and repository drift across projects.
Plugin adapter for using Jira as a custom data source for search and context.
Collects nginx configuration and routing context for deployed environments.
Plugin adapter for using Notion as a custom data source for search and context.
Collects PM2 process metadata and live status to provide operational context.
Enforces policy-as-code checks as a pre-commit hook layer, including secret patterns, doc coverage, and deploy verification.
Plugin adapter for ingesting RSS feeds as a custom data source.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpsContext what Docker containers are running and which ports are they using?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpsContext for AI Agents
AI that doesn't break what it can't see.
Claude Code, Cursor, and Copilot write code without seeing your servers, so they suggest the wrong port, restart the wrong service, deploy into the wrong env. OpsContext gives them eyes on what's actually running, plus a tamper-evident log of every change they make, with an outside time stamp when SealHour is on. Free core, no signup, runs entirely on your machine.
Previously published as
@compr/contextengine-mcp. The 2.0 rename reflects what the project actually does: Claude Code sees the code, OpsContext sees the infra that runs it.
OpsContext is an MCP server. It runs locally, snapshots your live infra (PM2 processes, nginx config, Docker containers, git status, cron jobs, redacted env), and exposes it via tools your AI coding agents (Claude Code, Cursor, Copilot, Windsurf, OpenClaw) can call in real time. No telemetry, no code uploads: no record, no file and no code ever leaves your machine. The two things that can leave are listed under Privacy & Data Security.
🌐 Browser Capture (Phase 1, shipped 2026-06): OpsContext now records prompts, assistant responses and tool calls from Claude.ai, ChatGPT.com, and your Claude Code terminal sessions in the same hash-chained audit log. Since 2.9.0 a prompt or a response is kept as its length and a keyed fingerprint, never its words; commands are kept with credentials redacted. Cross-surface drift detection becomes possible (e.g. catch when a model says one thing in the browser and another in the terminal). See Step 3 below.
Why
Claude Code already reads your CLAUDE.md, copilot-instructions.md, and source files. It has hooks, skills, and native memory. It does not — and structurally cannot — see what's running on your servers. Live process state, nginx routes, port conflicts across fleets, git working-tree drift across 30+ repos — that's the operational context AI agents lack.
OpsContext fills that gap, plus two compliance layers regulated industries demand from any agent stack:
Operational visibility (the moat) — collectors for PM2 / nginx / Docker / git / cron / .env (redacted) / composer / systemd. Cross-project + check_ports + fleet HTML scoring. Claude Code can't see this; we feed it cleanly.
Tamper-evident audit log, with an outside time stamp when SealHour is on (compliance): hash-chained JSONL at
~/.contextengine/audit.log. Every state change recorded withprev_hash/hash. The chain is checked from the inside; SealHour, off until you turn it on, adds a date from outside your machine. Designed to produce evidence aligned with SOC 2 CC7.2 (change monitoring) and ISO 27001 A.12.4.1 (event logging). These are evidence artifacts, not a certification. OpsContext is not itself certified for SOC 2 or ISO 27001; the audit log helps your org's auditor satisfy those controls.Policy-as-code hooks (enforcement) — declarative
.contextengine/policy.jsonfor secret patterns (withpathsscoping), diff-aware doc coverage (replaces the workaround-y 4-hour staleness gate), deploy-verify hosts, and signed bypass tokens. Runs as a pre-commit hook layer alongside gitleaks.
Plus the persistent-memory + search features carried forward from the contextengine era:
🔍 Hybrid Search — keyword (BM25) ships always; semantic re-ranking is opt-in
🧠 Semantic Search (optional) —
all-MiniLM-L6-v2runs locally on CPU, no API keys. Install withnpm install @huggingface/transformers(~250MB, native onnxruntime). BM25 alone is plenty for most workspaces; turn semantic on when you have many similar projects and want fuzzy matches.📁 Auto-discover — finds
copilot-instructions.md,CLAUDE.md,.cursorrules,AGENTS.mdacross all projects💻 Code Parsing — extracts functions, classes, interfaces from TS/JS/Python source files
⚙️ Operational Intelligence — collects git, Docker, PM2, nginx, cron, package.json data
🔒 Local-only: no record, no file and no code ever leaves your machine
⚡ Instant startup — keyword search ready immediately, embeddings load in background
💾 Session Persistence — AI agents can save/restore context across conversations
💡 Learning Store — permanent operational rules that auto-surface in search results
🛡️ Protocol Firewall — progressive enforcement that ensures agents commit, document, and save learnings
🧩 MCP native — works with any MCP-compatible client (VS Code, Claude, Cursor, OpenClaw)
What OpsContext is NOT
Not a replacement for Claude Code, Cursor, or your IDE assistant. It runs alongside them as their ops/compliance backend. Code context = their job. Infra context + audit + policy = ours.
Not a code quality tool — it checks project structure (CI, tests, Docker, docs) and validates content depth, but won't tell you if your code is good. An A+ score means "well-organized for AI agents," not "production-ready."
Not required for tiny / solo projects — agents read
copilot-instructions.mdnatively, and the audit log + policy gates earn their keep when there's more than one developer to coordinate or a compliance officer to answer to.Not worth chasing 100% score — invest in your PIPELINES.md and SKILLS docs instead of score-chasing. Those prevent costly mistakes; the score keeps you honest.
Related MCP server: local-repo-mcp
Quick Start
1. Scaffold config (optional)
npx @compr/opscontext-mcp initDetects your project type, creates contextengine.json + .github/copilot-instructions.md template.
2. Add to your MCP client
VS Code (recommended — per-project setup)
Create .vscode/mcp.json in your project root:
{
"servers": {
"contextengine": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@compr/opscontext-mcp"]
}
}
}This activates ContextEngine when the workspace is open. Add this file to each project that needs it.
Note: VS Code deprecated MCP configuration in user
settings.json. Use.vscode/mcp.jsonper workspace instead.
Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"ContextEngine": {
"command": "npx",
"args": ["-y", "@compr/opscontext-mcp"]
}
}
}Cursor — add to MCP settings:
{
"mcpServers": {
"ContextEngine": {
"command": "npx",
"args": ["-y", "@compr/opscontext-mcp"]
}
}
}OpenClaw — add ContextEngine as an MCP server in your OpenClaw config, or use the bundled skill:
# Option 1: Copy the skill to your OpenClaw workspace
cp -r node_modules/@compr/opscontext-mcp/skills/contextengine ~/.openclaw/workspace/skills/
# Option 2: Add as MCP server in openclaw.json{
"mcpServers": {
"contextengine": {
"command": "npx",
"args": ["-y", "@compr/opscontext-mcp"],
"env": { "CONTEXTENGINE_WORKSPACES": "~/Projects" }
}
}
}3. Capture browser + Claude Code events (optional)
Phase-1 browser capture wires Claude.ai / ChatGPT.com / Claude Code into the same hash-chained audit log the MCP server already writes to. Three small commands; each one is independent.
3a. Generate the browser extension secret
npx @compr/opscontext-mcp init-extension-secretWrites a 32-byte hex token to ~/.contextengine/extension-secret (mode 0600). The Chrome extension authenticates to your local MCP server with this secret — nobody else on your network can post events.
Verify:
ls -la ~/.contextengine/extension-secret # → -rw------- (0600)Then load the unpacked extension and paste the secret into its Options page. Full install steps (build, load unpacked, paste secret): chrome-extension/README.md. (Chrome Web Store listing coming.)
3b. Auto-start the local server (macOS)
npx @compr/opscontext-mcp install-autostartInstalls a LaunchAgent so OpsContext binds 127.0.0.1:7842 on every login — that's the port the browser extension and the Claude Code hook both post to.
Verify:
curl http://127.0.0.1:7842/health # → {"ok":true,...}Companion commands: uninstall-autostart, autostart-status.
3c. Wire Claude Code terminal sessions
npm i -g @compr/opscontext-mcp && opscontext install-claude-hook(Prefer the global install here: the hook scripts keep absolute paths to the CLI, and an npx cache copy can be pruned.)
Adds UserPromptSubmit, PostToolUse, and SessionStart hook entries to ~/.claude/settings.json so every Claude Code prompt (kept as a length and a keyed fingerprint, not its words) and tool call (credentials redacted) lands in the same audit log as the browser events, plus a Stop entry: the session gate (2.7.0). A Claude Code turn cannot end while the repo's OpsContext session is older than the last commit; the agent is told which session to save, which session doc to update, and how far the agent docs are behind. No more "did you save the session?" at the end of a day. Details: npx @compr/opscontext-mcp session-gate --help.
Verify:
npx @compr/opscontext-mcp watch --once # → tails recent events; should show claude_code_* kinds after one promptOptional, opscontext install-claude-hook --guard: the Bash guard, a PreToolUse entry on Bash that refuses, before it runs, rsync --delete, scp -r, a script started by a relative path (give the script's full path, cd /absolute/path && /absolute/path/script args: Claude Code removes a leading cd to its current folder before a hook sees the command, so that cd alone is not enough, and the refusal names the folder the script would have run in) and github.com in a command's allowed sites. The reason reaches the agent; the owner runs such a command in their own terminal when it is really wanted. Details: opscontext bash-guard --help.
3d. Lock the agent out of your secrets files
opscontext secrets-lock # check only: one PASS / FAIL line per item, writes nothing
opscontext secrets-lock --apply # in your own terminal, never from inside a chatOutcome: Claude Code's own file tools (Read, Edit, Write) refuse the agent your credentials file, .env files, secrets/ folders and .p12 certificates, in every repo on the machine, and the agent cannot loosen its own settings. A secret you paste into one of those files while a chat is open no longer lands in the chat log. Commands the agent runs in Bash are not covered until Claude Code's sandbox is on: tested on fake files, a cat of a file under secrets/ still printed it. The check reports the sandbox as "part C". opscontext servers and the project score say whether the lock is in place; the check also tells you whether the sandbox is on and whether your Claude Code builds are new enough.
4. Pin your config (recommended)
If you have a contextengine.json with custom sources, add this to your shell profile (~/.zshrc or ~/.bashrc):
export CONTEXTENGINE_CONFIG="$HOME/path/to/contextengine.json"Without this, ContextEngine falls back to auto-discovery (finds copilot-instructions.md etc.) but won't load your explicit sources, code dirs, or custom patterns.
That's it. ContextEngine auto-discovers your docs in ~/Projects.
📦 VS Code Extension
ContextEngine has a free VS Code extension that provides proactive enforcement — no MCP setup required:
📊 Value meter — shows what ContextEngine saved you this session: learnings recalled, learnings saved, estimated time saved. Falls back to git status when no MCP session is active
📈 Live stats dashboard — click ℹ️ to see real-time session metrics (tool calls, recalls, nudges, truncations, time saved)
@contextengine chat —
/status,/commit,/search,/remind,/syncin Copilot ChatEscalating notifications — warns when files accumulate without commits
Terminal watcher — monitors commands with smart classification (git, deploy, database, python, build, test), credential redaction in logs, and stuck-pattern detection (alerts after 3+ consecutive failures)
One-click commit — commit all changes across all repos
The extension reads live metrics from the MCP server (via ~/.contextengine/session-stats.json). For search, learnings, sessions, and scoring — it uses the MCP server (npx @compr/opscontext-mcp).
⭐ PRO Features
OpsContext is source-available with a free tier. The free tier covers everything agents need — search, memory, sessions, and compliance enforcement. PRO adds team and ops intelligence across multiple projects. Licensed under BSL-1.1, which is not OSI-approved open source (converts to AGPL-3.0 on 2030-02-22). See docs/about.md for the full publisher disclosure and licensing intent.
Feature | Free | PRO |
Hybrid search (keyword + semantic) | ✅ | ✅ |
Persistent learnings | ✅ | ✅ |
Session save/load | ✅ | ✅ |
End-of-session enforcement | ✅ | ✅ |
Protocol Firewall (agent compliance) | ✅ | ✅ |
VS Code extension (git monitor, chat) | ✅ | ✅ |
Project health score (A+ to F) | — | ✅ |
Compliance audit | — | ✅ |
Port conflict detection | — | ✅ |
Multi-project discovery | — | ✅ |
HTML score reports | — | ✅ |
Pricing
Plan | Price | Machines | SealHour |
Pro | CHF 2/mo | 2 | until its pilot ends on 1 December 2026; after that, by moving to Team |
Team | CHF 12/mo | 5 | included |
Enterprise | CHF 36/mo | 10 | included |
→ Get PRO · Annual plans save 17%
# Activate after purchase
npx @compr/opscontext-mcp activateSealHour: an outside time stamp for the audit chain
SealHour seals your work every hour, so you can prove later that it existed by then: an outside time stamp from an official European provider, written into Bitcoin. A date, not ownership.
On its own the audit chain is checked from the inside: it shows a record that was changed, not when the chain was written. With SealHour on, the log is tamper-evident, with an outside time stamp.
Team and Enterprise. Sealed every hour by SealHour: an outside time stamp from an official European provider, written into Bitcoin.
Off until you turn it on.
npx @compr/opscontext-mcp anchor enableshows what would leave your machine and starts nothing without your yes.What leaves. Once an hour, OpsContext sends SealHour a checkpoint of your audit chain: a few 32-byte fingerprints, the number of records and the time, and, if you choose, one fingerprint for all your repositories with their number; with your licence key. As with any web request, the receiver also sees this machine's address and the time, so it learns the hours you were active. Nothing else leaves: no record, no file, no code, no name. You can stop it any time.
What comes back. A signed receipt for each checkpoint; SealHour keeps the checkpoint too, so a lost or rewritten disk does not lose the proof. At minute 2 of the next hour SealHour seals the checkpoints of the hour together, has that seal stamped by the official provider and writes it into Bitcoin. Your checkpoint is included in the stamped hour, verifiable by anyone:
anchor export-evidence <from> <to>writes the proofs of a period into a folder anyone can check without OpsContext and without SealHour.Who has it. SealHour is included in OpsContext Team and Enterprise, and open to every licence while its pilot lasts. The pilot ends on 1 December 2026 at 00:00 UTC: 30 November is its last day. After the pilot, Pro reaches SealHour by moving to Team. Without a licence, a pilot code made on your machine (random: it names no one) takes the place of the licence key while the pilot lasts.
Interim mode.
anchor enable --interimasks two free public time stamp services directly, in place of the SealHour service: an outside date; not the official European stamp, not Bitcoin, no SealHour receipt. Only one 32-byte fingerprint of each checkpoint leaves, and no licence key.
npx @compr/opscontext-mcp anchor status # one line: the last seal, its receipt, what is queued
npx @compr/opscontext-mcp anchor verify # recompute every checkpoint from this machine's log; check every receipt, proof and stamp
npx @compr/opscontext-mcp anchor disable # stop: nothing leaves any more, what was made is keptCLI Usage (no MCP required)
ContextEngine also works as a standalone CLI tool — no MCP client setup needed:
# Search across all your project knowledge
npx @compr/opscontext-mcp search "docker nginx"
npx @compr/opscontext-mcp search "rate limiting" -n 10
# List all indexed sources
npx @compr/opscontext-mcp list-sources
# Discover and analyze all projects
npx @compr/opscontext-mcp list-projects
npx @compr/opscontext-mcp unpushed # per project, the commits not yet on GitHub (nothing is fetched)
npx @compr/opscontext-mcp actions # your open action points, from the `actions` key of every saved session (YYYY-MM-DD | open | project | what)
# AI-readiness score — no argument scores the CURRENT project only
npx @compr/opscontext-mcp score
npx @compr/opscontext-mcp score ContextEngine # by project name
npx @compr/opscontext-mcp score ~/Projects/PLANK.io # or by path
# Score every discovered project (writes a SCORE.md into each — opt in explicitly)
npx @compr/opscontext-mcp score --all
npx @compr/opscontext-mcp score --all --no-save # scan without writing
# Visual HTML report (opens in browser)
npx @compr/opscontext-mcp score --html
npx @compr/opscontext-mcp score ContextEngine --html
# List permanent learnings (optionally by category)
npx @compr/opscontext-mcp list-learnings
npx @compr/opscontext-mcp list-learnings security
# Run compliance audit across all projects
npx @compr/opscontext-mcp audit
# Verify the tamper-evident audit log, archived segments included
npx @compr/opscontext-mcp audit-verify
# SealHour: an outside time stamp for the audit chain (shows what would leave, starts nothing without a yes)
npx @compr/opscontext-mcp anchor enable
# Multi-agent token, cost and capacity report from Claude Code's own transcripts
npx @compr/opscontext-mcp cost
# Stream drift / loop / stuck-tool alerts from the audit log
npx @compr/opscontext-mcp watch
# Bulk-import learnings from a Markdown or JSON file
npx @compr/opscontext-mcp import-learnings rules.md -c deployment
# Scaffold config for a new project
npx @compr/opscontext-mcp init
# Show all commands
npx @compr/opscontext-mcp helpCLI mode uses keyword search (BM25) which is instant — no model loading required.
Tools (16)
Tool | Description | Tier |
| Hybrid keyword+semantic search with mode selector | Free |
| Show all indexed sources with chunk counts | Free |
| Force full re-index of all sources | Free |
| Save key-value entry to a named session | Free |
| Load all entries from a named session | Free |
| List all saved sessions | Free |
| Pre-flight checklist — uncommitted changes + doc freshness | Free |
| Save a permanent operational rule — auto-surfaces in search | Free |
| List all permanent learnings, optionally by category | Free |
| Remove a learning by ID | Free |
| Activate a PRO license on this machine | Free |
| Check current license status | Free |
| Discover and analyze all projects (tech stack, git, docker) | PRO |
| Scan all projects for port conflicts | PRO |
| Compliance agent — git, hooks, .env, Docker, PM2, versions | PRO |
| AI-readiness scoring 0-100% with letter grades (A+ to F) | PRO |
Retired in 2.17.0, unused: read_source, delete_session, audit_verify, drift_status, agent_cost
and import_learnings. The command line keeps what they did: audit-verify (evidence aligned with
SOC 2 CC7.2 and ISO 27001 A.12.4.1, not a
certification), watch, cost and import-learnings.
All tools are wrapped by the Protocol Firewall — a built-in enforcement layer that ensures agents save learnings, persist sessions, and commit code. No action needed from users; it's automatic.
Configuration
ContextEngine works zero-config — it auto-discovers documentation files in ~/Projects.
For full control, create a contextengine.json:
{
"sources": [
{ "name": "Team Runbook", "path": "./docs/RUNBOOK.md" },
{ "name": "Architecture", "path": "./docs/ARCHITECTURE.md" }
],
"workspaces": ["~/Projects"],
"patterns": [
".github/copilot-instructions.md",
"CLAUDE.md",
".cursorrules",
"AGENTS.md"
],
"codeDirs": ["src"]
}The adapters key was retired in 2.17.0 with the plug-in adapters: a config that still lists some gets one
line on stderr saying they are ignored, and no adapter code is loaded.
Auto-discovered patterns
Pattern | Description |
| GitHub Copilot project instructions |
| VS Code instructions folder format |
| Team skills inventory |
| Claude Code project instructions |
| Cursor AI rules |
| Cursor AI rules (folder format) |
| Multi-agent instructions |
| File-to-concern mapping for agents |
Config resolution order
Which config file is read (both the search corpus and the project fleet):
Priority | Source |
1 |
|
2 |
|
3 |
|
Which project fleet is scanned — this is what score --all, audit, list_projects
and check_ports operate on:
Priority | Source |
1 |
|
2 |
|
3 |
|
The env var wins. It is set per-invocation, so it is the most specific statement of intent — and it is what the MCP config blocks in this README set. Use it to scope a run:
CONTEXTENGINE_WORKSPACES=/tmp/sandbox npx @compr/opscontext-mcp score --allNote: the search corpus (
search,reindex,list-sources) still prefers the config file'sworkspacesover the env var. If you rely on the env var to scope indexing, setCONTEXTENGINE_CONFIGto a config withoutworkspaces, or unsetworkspacesthere.
How It Works
Your Project Files ContextEngine AI Agent
+-----------------+ +-------------------+ +---------------+
| copilot- | | 1. Parse & chunk | | GitHub |
| instructions |--->| 2. Embed vectors |<-->| Copilot |
| CLAUDE.md | | 3. Hybrid search | | Claude |
| source code | | 4. Return top-k | | Cursor |
| git/docker/pm2 | | 5. Persist state | | Windsurf |
+-----------------+ +-------------------+ +---------------+
stdio (MCP)Parse — chunks markdown + extracts functions from source code
Embed — sentence embeddings run locally on CPU (no API keys)
Search — hybrid keyword + semantic scoring
Collect — operational data from git, package.json, Docker, PM2, nginx
Audit — compliance checks, port conflicts, AI-readiness scoring
Scoring
The score command evaluates project AI-readiness across documentation, infrastructure, code quality, and security — producing a letter grade from A+ to F.
Grade scale: A+ (90%+) · A (80%+) · B (70%+) · C (60%+) · D (50%+) · F (<50%)
What gets scored, and what gets written
score writes a SCORE.md into each project it scores. Because that is a write into your
repositories, the scope is never inferred:
Command | Scores | Writes |
| the project you are standing in (walks up to the repo root) | that one project |
| that one project | that one project |
| every discovered project | every discovered project |
any of the above | as above | nothing |
A project argument may be a name (PLANK.io) or a path (~/Projects/PLANK.io,
../PLANK.io, or an absolute path). A path also works for projects outside your configured
workspaces.
Project Naming & Structure Tips
The scorer discovers projects from your configured workspaces directories (default: ~/Projects).
Each subdirectory is treated as a separate project. For best results:
Use descriptive folder names — the folder name becomes the project name in reports
Keep one project per directory — monorepos should have a root
copilot-instructions.mdReal files over symlinks — each project should have its own configs with project-specific content
Install your tools — a linting config without the linter installed doesn't count as linting
Architecture
TypeScript monorepo — MCP server + CLI + search engine + operational collectors.
See the npm package for installation and usage.
Development
npm install @compr/opscontext-mcp
npx @compr/opscontext-mcp helpRequirements
Node.js 18+
No API keys needed — embeddings run locally
Contributing
Feedback, feature requests, and bug reports welcome — email yannick@compr.ch.
If you're using ContextEngine, we'd love to hear about it.
Privacy & Data Security
ContextEngine runs 100% on your machine. Your code, your data, your rules.
Everything happens locally: search, scoring, learnings, sessions, embeddings. No record, no file and no code is ever sent to an external server. Two things can leave, both listed below: the licence check (PRO only), and, only if you turn it on, SealHour's hourly checkpoint (fingerprints, numbers and a time).
What stays on your machine (always)
Data | Storage | Leaves your machine? |
Project files & source code | Read locally, never stored externally | ❌ Never |
Learnings (operational rules) |
| ❌ Never |
Sessions (decisions, progress) |
| ❌ Never |
Session stats (value meter) |
| ❌ Never |
Search index & embeddings | In-memory + | ❌ Never |
Git history & branches | Local | ❌ Never |
Dependencies & package.json | Read locally | ❌ Never |
.env variable names | Read locally (values are never read) | ❌ Never |
What the activation server receives (PRO only)
Data | When | Purpose |
License key ( | Activation + daily heartbeat | Validate subscription |
Machine ID (SHA-256 hash) | Activation + daily heartbeat | Enforce machine limit |
Activation only | Tie the licence to an account | |
Package version | Activation only | Recorded with your activation, so support knows which version a machine runs |
Platform/arch (e.g., | Activation only | Compatibility check |
Licence bundle version | Daily heartbeat | Compatibility marker carried in the signed licence |
That is the complete list. The activation request sends exactly six fields and the heartbeat exactly three — enforced by a lock comment in src/activation.ts that forbids adding a seventh field reflecting usage.
The server never receives: project names, file contents, learnings, sessions, git history, dependencies, code, .env variables, or anything about your actual work.
Until you turn SealHour on, these are the only two network calls the tool makes. activate and heartbeat, both in src/activation.ts.
What SealHour receives (only if you turn it on)
Off by default. npx @compr/opscontext-mcp anchor enable shows this list on your screen and starts nothing without your yes; anchor disable stops it.
Data | When | Who receives it |
A checkpoint of your audit chain: a few 32-byte fingerprints, the number of records and the time | Once an hour, while OpsContext runs and only if the chain grew | SealHour ( |
One fingerprint for all your workspace repositories, and their number | With the checkpoint, only if you said yes to the code question | SealHour |
Your licence key, or without a licence a pilot code made on your machine (random: it names no one) | With the checkpoint | SealHour, which asks the OpsContext licence server whether the key may seal |
This machine's address and the time | As with any web request | SealHour |
Once an hour, OpsContext sends SealHour a checkpoint of your audit chain: a few 32-byte fingerprints, the number of records and the time, and, if you choose, one fingerprint for all your repositories with their number; with your licence key. As with any web request, the receiver also sees this machine's address and the time, so it learns the hours you were active. Nothing else leaves: no record, no file, no code, no name. You can stop it any time.
During the pilot, everything SealHour receives is kept and nothing is deleted. How long it is kept afterwards will be written on SealHour's privacy page before the first paid use.
In interim mode (anchor enable --interim) the checkpoint stays on your machine: one 32-byte fingerprint of it goes to each of two free public time stamp services, named on the enable screen, with this machine's address and the time. No licence key.
SealHour's calls are in src/anchor-service.ts, the interim mode's in src/anchor-tsa.ts. Nothing else in the codebase opens a connection to another machine: verify it yourself with grep -rlE 'fetch\(|from "https?"' src/, which lists those two files, src/activation.ts, and src/http-server.ts (the local event port, bound to 127.0.0.1).
What's obfuscated, and what isn't
One file in the published package is deliberately unreadable: dist/rubric.js, which holds the scoring thresholds (what earns which points). Those values are commercial IP under BSL-1.1, and knowing them exactly makes an AI-readiness score easy to game by padding files to hit a number rather than doing the work.
What that hides: values. What it does not hide: behaviour. No code path, network call, file access, or data flow is concealed anywhere in this package. The scoring logic itself, every collector, the search ranker, and both network calls above ship as readable JavaScript — and the full source is public at FASTPROD/ContextEngine. If a privacy claim on this page were false, the code that broke it would be right there to find.
Why this matters
Most AI coding tools (Copilot, Cursor, Codeium) send your code to external servers for processing. ContextEngine takes the opposite approach: embeddings run locally on CPU, search runs locally, and all persistent state stays in ~/.contextengine/ on your disk. Unless you turn SealHour on, the only network call is a lightweight license check for PRO users.
License
BSL-1.1 (Business Source License) — see LICENSE.
You may use ContextEngine for any purpose, including production, except offering it as a hosted/managed service competing with ContextEngine PRO/Team/Enterprise.
Converts to AGPL-3.0 on February 22, 2030.
For commercial licensing: yannick@compr.ch
Publisher
OpsContext is built by PROD LLC, an operating brand of CSS LLC (Cross Stream Solutions Sàrl), a Swiss company incorporated in 2005. The engineering team works under the FASTPROD name, which is also the GitHub organisation hosting this repository.
The VS Code Marketplace lists the extension under the legal-parent publisher ID css-llc; the npm package is published under the @compr scope. Both belong to the same entity.
PROD LLC also operates these products. The full, current list is on compr.fr.
Product | What it does | Site |
CROWLR | Recruitment software: applicant tracking for companies, a job app for candidates, live event sensing | |
KONIVE | AI career agent: salary negotiation and job matching | |
INVOC | Grocery scanner app for shoppers, brand monitoring for food companies | |
INVOC.me | Demand forecasting shared by operations, sales and finance | |
PLANK | Hyperlocal social app for iOS and Android | |
compR | Company site, and candidate credibility scoring |
Contact: yannick@compr.ch. Full corporate disclosure at docs/about.md.
Available Tools
22 toolsactivateA
Activate a ContextEngine Pro license to unlock premium tools (score_project, run_audit, check_ports, list_projects, HTML reports). Get a license at https://api.compr.ch/contextengine/pricing
Inputs: email (required), license_key (required).
activation_statusA
Check current ContextEngine license status, plan, and available premium tools.
Inputs: no named parameters.
agent_costA
Multi-agent cost report from Claude Code's own transcripts on this machine: tokens moved (cache read/write, fresh input, output), valued cost at API list prices (marked NOTIONAL on a subscription, UNPRICED when no rate matches), capacity intensity (subagents, failed, died at window, tool calls per agent, cache reuse), top runs, and context_burn / fanout_without_canary signals. Call it after a fan-out to read what it consumed, or before one to compare with the last. Thresholds come from .contextengine/policy.json agent_cost, else built-in defaults.
Inputs: run, top, days, json, +3 more.
audit_verifyA
Verify the integrity of the local audit log chain. Returns OK + record count, or BROKEN + break index when a record has been edited or the chain otherwise diverges. Produces evidence aligned with SOC 2 CC7.2 (change monitoring) and ISO 27001 A.12.4.1 (event logging) — evidence artifacts, not a certification (OpsContext is not itself SOC 2– or ISO 27001–certified; see docs/compliance/). The audit log lives at ~/.contextengine/audit.log and records every state-changing operation (learning save/delete/import, session save/delete, activation activate/deactivate) as a hash-chained JSONL line.
Inputs: since, until.
check_portsA
Scan all projects for port declarations (ecosystem.config.js, docker-compose.yml, .env, package.json) and detect port conflicts. Returns a port allocation map with conflict warnings. Requires Pro license.
Inputs: no named parameters.
delete_learningA
Delete a learning by its ID. Use list_learnings first to find the ID of the learning you want to remove.
Inputs: id (required).
delete_sessionA
Delete a saved session by name. Returns success/not-found. Use for cleanup of stale or obsolete session context.
Inputs: name (required).
drift_statusA
Returns active drift / loop / stuck-tool / fabrication / silent-failure signals detected over the recent audit-log window. Use to self-check before starting a major task phase. If any 'critical' signal is active (fabrication_suspect or silent_failure), pause and surface to the human.
Inputs: minSeverity, windowSeconds.
end_sessionA
MUST be called before ending any coding session. Checks all project repos for uncommitted changes, verifies documentation freshness (copilot-instructions.md, SKILLS.md, session docs), and returns a checklist of required actions. Will report PASS/FAIL for each check. The AI agent should resolve all FAIL items before ending.
Inputs: no named parameters.
import_learningsA
Bulk-import learnings from a Markdown or JSON file. By default only MARKED learnings are imported: inline bullets with a [category] prefix, anything inside a *LEARNINGS.md file, anything under a heading that says learnings / lessons / gotchas / rules, and JSON arrays of {category, rule, context}. Set permissive=true to also import every H3 heading, bold bullet and table row (H2=category, H3=rule, bullets=context). Deduplicates against existing learnings.
Inputs: file_path (required), project, permissive, default_category.
list_learningsA
List all permanent learnings, optionally filtered by category. Shows operational rules that have been discovered across sessions. Use search_context to find learnings by keyword — they're automatically included in search results.
Inputs: since, category.
list_projectsA
Discover and analyze all projects in the workspace. Shows tech stack (framework, runtime, key dependencies), infrastructure (git, docker, pm2), and git remote status for each project. Requires Pro license.
Inputs: no named parameters.
list_sessionsA
List all saved sessions. Shows session names, entry counts, and timestamps. Use to discover what context is available from previous conversations.
Inputs: no named parameters.
list_sourcesA
List all knowledge sources indexed by ContextEngine, each with a one-line summary (from the file's own head: frontmatter description, title plus first sentence, or module docstring), status (found/missing) and chunk counts. Read the summary to pick the right source before calling read_source.
Inputs: no named parameters.
load_sessionA
Load a previously saved session by name. Returns all stored key-value entries with timestamps. Use at the start of a session to restore context from a previous conversation.
Inputs: session (required).
read_sourceA
Read the full content of a specific knowledge source by name.
Inputs: source_name (required).
reindexA
Force a full re-index of all knowledge sources. Use after adding new files or changing contextengine.json.
Inputs: no named parameters.
run_auditB
Run the Compliance Agent audit across all projects. Checks: port conflicts, git remotes (origin + gdrive), git hooks (post-commit auto-push), .env files (existence + gitignore), Docker config (restart policy, workdir), PM2 config (treekill, kill_timeout, no bash wrappers), version issues (EOL runtimes, outdated deps, MUI v4/v5 coexistence). Returns a structured plan with findings and remediation steps.
Inputs: scope.
save_learningA
Save a permanent operational rule learned during a coding session. Unlike sessions (ephemeral), learnings persist forever and auto-surface in search_context results so AI agents don't repeat mistakes. Duplicate rules (same category + rule text) are updated in place.
Inputs: rule (required), context (required), category (required), project.
save_sessionA
Save a key-value entry to a named session. Use to persist decisions, context, plans, and findings between coding sessions. Each session can hold multiple keys (e.g., 'summary', 'active_tasks', 'decisions'). Keys are updated in place if they already exist.
Inputs: key (required), value (required), session (required).
score_projectA
Score one or all projects on AI-readiness (0-100%). Checks documentation (copilot-instructions, README, CLAUDE.md, .cursorrules, SKILLS.md, .env.example), infrastructure (git, hooks, Docker, CI, deploy scripts, PM2), code quality (tests, TypeScript, linting, npm scripts), and security (.env gitignored, secrets exposure, lockfiles). Returns letter grade (A+ to F) with detailed breakdown.
Inputs: project.
search_contextA
Search across all indexed project knowledge (copilot-instructions, skills docs, runbooks, session docs). Uses hybrid BM25 keyword + semantic search with temporal decay. Returns the most relevant chunks with source file, section, and line numbers.
Inputs: query (required), mode, top_k.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 22 tools
Tools cluster into clear domains (sessions, learnings, knowledge sources, project audit, monitoring) and most have a single obvious purpose. Minor overlap exists between run_audit and score_project, and between end_session and drift_status, but the descriptions are specific enough to prevent serious misselection.
Most tools follow a snake_case verb_noun pattern (list_sources, save_session, delete_learning, score_project), making the set predictable. A few names break the pattern—audit_verify, agent_cost, drift_status, activation_status—but these are still readable and not chaotic.
At 22 tools, the surface is on the heavy side and spans many distinct domains: knowledge, sessions, learnings, project audit, compliance, and licensing. The breadth is defensible, but the count lands in the 16-25 range that feels heavy for an agent to navigate.
Sessions and learnings have full create/read/update/delete coverage, and knowledge sources support list/read/search/reindex. Minor gaps exist—no direct tool for adding or removing knowledge sources and no remediation application for audit findings—but agents can work around them via files and reindexing.
Maintenance
Related MCP Connectors
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Shared, permission-aware company context for AI agents, with provenance, approvals and audit.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Governed access to sensitive data, secrets and APIs for AI agents. A signed proof for each decision.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceSecure local development platform that exposes controlled developer capabilities (FS, Git, search, command execution) to AI assistants via MCP with deny-by-default security and audit logging.-
- AlicenseCqualityCmaintenanceSecure agent coding runtime for local Git repos with policy enforcement, RBAC, sessions, approval workflow, and sandboxed writes, optionally connectable to ChatGPT via Secure MCP Tunnel.86MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to securely inspect, modify, and manage local projects with trusted filesystem access, safe Git operations, controlled task execution, and developer runtime process management over stdio or HTTP.4Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables authorized AI coding agents to securely access development machines, repositories, terminals, and processes through a policy-enforced, audited control plane.Apache 2.0