Extensions
Extensions let you add your own panels, commands and AI tools to Boltise. They are small JavaScript packages that run in a locked-down sandbox — useful for wiring Boltise to whatever your team already uses.
Where extensions live
Section titled “Where extensions live”| Scope | Location |
|---|---|
| Global — available in every project | ~/.cfxkit/extensions/ |
| Per project — only that project | <project>/.boltise/extensions/ |
Each extension is a folder containing a manifest.json and its entry script.
The manifest
Section titled “The manifest”{ "name": "my-extension", "displayName": "My Extension", "version": "1.0.0", "description": "What it does", "author": "You", "main": "index.js", "activationEvents": ["onStartup"], "contributes": { "panels": [ { "id": "my-panel", "title": "My Panel", "icon": "box", "location": "sidebar" } ], "commands": [ { "id": "my-extension.doThing", "title": "Do the thing", "keybinding": "Ctrl+Alt+T" } ], "tools": [ { "name": "lookup_thing", "description": "Look something up in our internal system", "parameters": { "query": "What to look up" } } ] }}Three kinds of contribution:
- Panels appear in the sidebar or the bottom panel, beside the built-in ones.
- Commands appear in the Command Palette, with an optional keybinding.
- Tools are given to the AI assistant. It can call them mid-conversation, and they go through the same approval flow as every other tool — see Approvals & Safety.
That last one is the interesting one. A tool that queries your own ticket system or asset database becomes something you can just ask the assistant about, in the middle of working on the code it relates to.
The sandbox
Section titled “The sandbox”Extension code runs inside an isolated context with no access to Node.js.
There is no process, no fs, no child_process, no electron, and no
unrestricted require — only an allowlisted subset. eval() and
new Function() are blocked.
This is a deliberate trade. An extension cannot read arbitrary files or spawn processes, which means installing one cannot quietly compromise your machine or your server. It also means an extension genuinely needing that access cannot be written — that is the intended limit, not an oversight.
Extensions get a console that prefixes their name, so their output is
identifiable in the log rather than anonymous.
Writing one
Section titled “Writing one”- Create a folder in one of the two locations above.
- Add
manifest.jsonand your entry script. - Restart Boltise, or reload extensions from the Command Palette.
- Check the log if it does not appear — a malformed manifest is reported rather than silently skipped.
Start per project while you are iterating; move it to the global folder once it is worth having everywhere.
See also
Section titled “See also”- What the AI Can Do — the built-in tools your own sit beside
- Approvals & Safety — how tool calls are gated
- Keyboard Shortcuts — where command keybindings fit
Help us improve these guides
Allow anonymous page and key-link counts? We use PostHog in the US. No session recording. You can change this below at any time.