The native C++ code editor with built-in AI — fast, lightweight, open source
VS Code features. Native performance. ~50 MB memory. Sub-second startup.
Why Exorcist? • Features • Quick Start • Comparison • Architecture • Plugins • Contributing
Modern IDEs are powerful but heavy. VS Code runs an entire Chromium browser. JetBrains IDEs need gigabytes of RAM. Developers who want AI-powered intelligence, LSP completion, Git integration, and a terminal emulator shouldn't have to pay for it with 500 MB of memory and 5-second startup times.
Exorcist is a ground-up rewrite of the modern IDE experience in native C++17 with Qt 6. It compiles to a single binary, starts instantly, and stays under 50 MB of RAM — while delivering the features you actually use every day:
- AI chat + inline completions — built-in, not bolted on
- LSP intelligence — completion, diagnostics, go-to-definition, rename
- Integrated terminal — native PTY, not a web terminal
- Git panel — status, diff, stage, commit, branch switching
- Plugin system — extend it with Qt plugins or C ABI / LuaJIT scripts
Think of it as: VS Code's feature set in a Sublime Text–sized package, with AI built into the core architecture.
|
|
|
|
|
|
- Qt plugin system — load/unload at runtime
- C ABI — write plugins in Rust, Go, Zig, or any language with C FFI
- LuaJIT scripting — lightweight sandboxed automation
- Service registry — components communicate through string-keyed services
- AI provider plugins — add Claude, GPT, Copilot, or your own endpoint
- MCP protocol — discover and register tools dynamically
| Dependency | Version | Required |
|---|---|---|
| Qt 6 | 6.5+ | Yes |
| CMake | 3.21+ | Yes |
| C++17 compiler | GCC 10+ / Clang 12+ / MSVC 2019+ | Yes |
| LLVM | 15+ | Optional |
git clone https://github.com/shrec/Exorcist.git
cd Exorcist
cmake --preset default # Configure (Ninja, Debug)
cmake --build build # Build
./build/exorcist # Linux/macOS
.\build\exorcist.exe # Windowscmake -S . -B build -DEXORCIST_USE_LLVM=ON -DLLVM_DIR=/path/to/llvm/lib/cmake/llvm
cmake --build buildComing soon — check Releases for updates.
How Exorcist stacks up against popular editors:
| Exorcist | VS Code | Sublime Text | Neovim | |
|---|---|---|---|---|
| Language | C++17 / Qt 6 | Electron / JS | C++ / custom | C |
| Startup | < 1 s | 2–5 s | < 1 s | < 0.5 s |
| Memory (idle) | ~50 MB | ~300 MB | ~80 MB | ~30 MB |
| AI assistant | Built-in | Extension | Extension | Plugin |
| LSP | Native | Native | Plugin | Plugin |
| Terminal | Native PTY | node-pty | None | Native |
| Plugin system | Qt / C ABI / Lua | JS extensions | Python | Lua / Vim |
| Cross-platform | Yes | Yes | Yes | Yes |
| Open source | MIT | MIT | Proprietary | Apache-2.0 |
Exorcist follows a layered, interface-first architecture with a shared daemon (ExoBridge) for cross-instance services:
┌─────────────────────────────────────────────┐
│ UI Layer │
│ MainWindow · Panels · Docks · Dialogs │
├─────────────────────────────────────────────┤
│ Plugin System │
│ QPluginLoader · IPlugin · IAgentPlugin │
├─────────────────────────────────────────────┤
│ Service Registry │
│ Loose coupling · String-keyed resolution │
├─────────────────────────────────────────────┤
│ Core Abstractions │
│ IFileSystem · IProcess · ITerminal │
├─────────────────────────────────────────────┤
│ ExoBridge (shared daemon per machine) │
│ MCP servers · Git watch · Auth tokens │
└─────────────────────────────────────────────┘
Key design principles:
- Dependencies flow downward only — UI → Plugins → Services → Core
- All OS abstractions are interfaces in
src/core/ - AI is a plugin — core never hard-codes an AI backend
- Services communicate through the ServiceRegistry, not direct references
- No raw
new/delete— smart pointers or Qt parent/child ownership - Shared resources (MCP, git watch, auth) live in ExoBridge, not per-instance
src/
├── core/ # OS abstractions (IFileSystem, IProcess, ITerminal, INetwork)
├── editor/ # EditorView, syntax highlighting, minimap, inline completions
├── agent/ # AI orchestrator, chat panel, context builder, tools
│ ├── inlinechat/ # Inline chat widget
│ └── tools/ # Built-in agent tools (file ops, search, terminal, etc.)
├── lsp/ # LSP client, clangd manager, completion popup
├── search/ # Full-text search, workspace indexer, symbol index
├── terminal/ # PTY backend, VT100 emulator, terminal panel
├── git/ # Git service, git panel, diff overlays
├── mcp/ # MCP client and panel
├── project/ # Project/solution management
├── build/ # Build system, task runner, CMake integration
├── process/ # ExoBridge IPC protocol, bridge client, process manager
├── bootstrap/ # Subsystem bootstrappers (LSP, Build, Bridge)
├── sdk/ # Stable plugin API (C++ / C ABI / LuaJIT)
└── ui/ # Shared UI (notifications, dock framework, themes)
server/ # ExoBridge daemon executable
plugins/
├── claude/ # Anthropic Claude AI provider
├── codex/ # OpenAI Codex AI provider
├── copilot/ # GitHub Copilot AI provider
└── common/ # Shared plugin utilities (SSE parser)
docs/ # Architecture docs, roadmap, plugin API guide
For full details see docs/architecture.md.
Exorcist supports runtime-loadable plugins via three interfaces:
| Interface | Language | Use case |
|---|---|---|
| Qt C++ plugin | C++ | Full Qt access, rich UI contribution |
| C ABI plugin | Rust, Go, Zig, C | Compiler-independent, stable binary interface |
| LuaJIT script | Lua | Lightweight automation, sandboxed |
| Provider | Status | Model |
|---|---|---|
| Claude | Ready | Anthropic Claude (HTTP streaming) |
| Codex | Ready | OpenAI GPT / Codex models |
| Copilot | Ready | GitHub Copilot (OAuth) |
| Custom | Ready | Any OpenAI-compatible endpoint (BYOK) |
See docs/plugin_api.md for the plugin development guide.
| Shortcut | Action |
|---|---|
Ctrl+P |
Quick file open |
Ctrl+Shift+P |
Command palette |
Ctrl+F |
Find in file |
Ctrl+Shift+F |
Format document |
F12 |
Go to definition |
Shift+F12 |
Find references |
F2 |
Rename symbol |
Ctrl+Space |
Trigger completion |
Ctrl+I |
Inline chat |
Alt+\ |
Trigger AI completion |
Ctrl+` |
Toggle terminal |
| Document | Description |
|---|---|
| Architecture | System design, layers, ExoBridge |
| Development Principles | How Exorcist evolves as a system |
| Core Philosophy | Core vs Plugin boundary, activation model |
| Roadmap | Development phases and progress |
| Plugin API | Plugin development guide |
| AI Integration | AI architecture and providers |
| LSP Lifecycle | LSP client lifecycle |
| Search Framework | Search system design |
| Remote Build | Remote build via SSH |
| Dependencies | Third-party dependency notes |
| Metric | Value |
|---|---|
| Source files | 664 |
| Lines of C++ | ~96,000 |
| Languages highlighted | 41+ |
| AI agent tools | 112 |
| Plugins | 12 |
| Tests | 49 |
| Required dependency | Qt 6 only |
| License | MIT |
Contributions are welcome! See CONTRIBUTING.md for guidelines.
git clone https://github.com/shrec/Exorcist.git
cd Exorcist
cmake --preset default
cmake --build buildCode style: C++17, PascalCase classes, m_ prefix for members, I prefix for interfaces, #pragma once, no raw new/delete. Full guidelines in .github/copilot-instructions.md.
MIT © 2025–2026 Exorcist Contributors