Boopy Context Engine
Local project intelligence for GitHub Copilot in VS Code
A VS Code extension that indexes your project in the background, keeps a compact project map and exposes six local context tools to Copilot in agent mode. Fewer tokens spent on "let me read the whole repository", more spent on the actual task.
What it is
BCE does not build its own assistant and does not touch Copilot's chat or agent loop — it is an additional tool provider (Language Model Tools). Copilot decides when to call the tools; you can also reference them explicitly in a prompt, for example #bceFindContext.
Indexing, parsing, ranking and caching all happen in the extension host. There is no network call anywhere in the codebase and no telemetry is sent — your source code never leaves the machine.
Key features
Fully local
Indexing, parsing, ranking and caching live in the extension host. No network calls, no telemetry, no source code leaving the machine.
Saves context, not steps
Instead of "read everything" the model gets ranked hits with exact line ranges. The estimated token budget per response is configurable (4000 by default).
Says where it is unsure
Parser results are labelled exact or heuristic and every token number is explicitly marked as an estimate. The tool never pretends to have precision it does not have.
Never returns secrets
Safety blocks cannot be turned off by configuration: .env files, keys, certificates, credential stores, binaries and oversized files are never indexed or returned.
Sees unsaved changes
When a file is dirty, the editor buffer is read, so the model does not see code that is 50 edits old. Unsaved text is never written into the index.
Controllable and measurable
Thirteen commands from a full project analysis to a local benchmark, diagnostics with counters, and the option to pause background indexing.
Tools it gives to Copilot
Every tool description states when the agent should use it and when it should not.
| Tool | Purpose | Use it when |
|---|---|---|
bce_get_project_overview |
Compact project map: languages, frameworks, entry points, modules, database objects, routes, tests and instructions. | You are new to the project or the task spans several modules. |
bce_find_context |
Ranked, de-duplicated hits with reasons, exact path:line references, short snippets and a token estimate. | You need to locate responsible code, a table, an endpoint or a symbol. |
bce_get_file_context |
One symbol or one line range plus imports, dependents and related tests. | You know the file and need one specific part of it. |
bce_explain_impact |
What depends on a symbol or file — verified references and heuristic guesses reported separately. | Before refactoring, renaming or deleting code. |
bce_get_related_tests |
Tests bound by convention, import or usage, plus the test runner configuration. | Before writing tests and after changing behaviour. |
bce_get_status |
Index freshness, file counts, cache state and recent errors. | Results look incomplete or stale. |
Commands in the palette
Everything that otherwise happens in the background can also be driven by hand from the command palette.
- BCE: Analyze Project — full scan with progress and cancellation
- BCE: Rebuild Index — drops both cache layers and re-parses everything
- BCE: Show Project Map — opens a readable, read-only rendering of the project map
- BCE: Search Context — quick pick over ranked hits, opens the file at the best line
- BCE: Show Diagnostics — counters, timings, per-tool usage, recent events
- BCE: Clear Cache — clears the parse cache and the context cache (index stays)
- BCE: Show Usage Report — totals from the local usage log: estimated tokens returned and what the naive alternative would have cost
- BCE: Reset Usage Log — deletes the local usage log after a confirmation
- BCE: Pause Background Indexing / Resume — queues file events instead of processing them
- BCE: Cancel Indexing — cancels the running pass, the last valid index is kept
- BCE: Ensure BCE Output Is Git-Ignored — re-applies the managed .gitignore block
- BCE: Run Local Benchmark — measures ranking quality and context size
Installation
Source and checks
The repository is public. The check step runs the typecheck, the tests and the bundle.
git clone https://github.com/BoopyCode/BoopyContextEngine.git
cd BoopyContextEngine
npm install
npm run check
Development host (fastest)
Open the folder in VS Code and press F5. A second window opens with BCE loaded — open any project there.
Install into your VS Code
Build the package and copy the folder into your extensions. After restarting VS Code the status bar shows "bce: Indexing" and then "bce: Ready (n files)".
npm run vscode:prepublish
# copy the folder here (or install a .vsix built with npx @vscode/vsce package):
# %USERPROFILE%\.vscode\extensions\boopycode.boopy-context-engine-0.1.4
Requirements
- VS Code 1.99 or newer (Language Model Tool API)
- Node 18+ when building from source
- Single runtime dependency: ignore (bundled)
- MIT with the Commons Clause — commercial use only under a written licence
What it cannot do
Answer quality, the number of agent steps and billed API usage are not measurable by the extension — it has no access to them. The local benchmark therefore measures only what can be measured locally: whether the right files were found and how many estimated tokens it cost.
Reference run on a 27-file fixture: 100% hit rate, mean rank of the first correct hit 1.4 and roughly 60% smaller context than naively reading the candidate files. The documentation states explicitly that this ratio cannot be generalised — verify the numbers with your own benchmark (BCE: Run Local Benchmark).
License
The source code is published under the MIT License with the Commons Clause. Personal, educational, research, hobby and non-commercial open source use is free of charge.
Commercial use — running it in a business, hosting it as a service, embedding it in a paid product, or paid integration and support work — requires a separate written commercial licence from BoopyCode. Without it the licence grants no commercial rights.
Any breach terminates all rights automatically, and every copy must include the full licence text including the Commons Clause.
Links
We reply within 24 hours. No obligation, no charge.