An AI agent IDE for Windows — project-centric workspace combining terminal multiplexing, a code editor, git integration, and smart notifications.
Features · Quick Start · Architecture · Tech Stack · Configuration · Contributing
Crucible is a desktop IDE built for developers who live in the terminal. It wraps multiple PTY sessions, a Monaco code editor, git tooling, and smart notifications into a single Tauri-powered window — native performance, no Electron, no browser tab.
One workspace. Every project. Zero context switching.
|
|
|
|
- Node.js (v18+)
- Rust (stable)
- Tauri v2 prerequisites for Windows
git clone https://github.com/The-R4V3N/Crucible.git
cd Crucible
npm install
npm run devThis starts both the Vite dev server and the Tauri/Rust backend.
npm run test # Frontend tests (Vitest)
cd src-tauri && cargo test # Rust testsnpm run buildProduces a Windows installer (.msi/.exe) in src-tauri/target/release/bundle/.
Crucible/
├── src-tauri/ Rust backend (Tauri v2)
│ └── src/
│ ├── main.rs Tauri entry point
│ ├── pty/ PTY session management (ConPTY)
│ ├── git/ Git integration (git2)
│ ├── files/ File system ops + watcher (notify)
│ ├── config/ Config loading + validation
│ └── commands.rs IPC command handlers
│
├── src/ React frontend
│ ├── components/ UI — sidebar, terminal, editor, explorer, diff, panels, layout, settings, palette, search
│ ├── hooks/ useSession, useGit, useFileWatcher, useKeyboard, useAutoSave, useEditorCursor, useGitDecorations
│ ├── stores/ State management (Zustand) — session, editor, ui, config, file, palette
│ ├── lib/ Utilities — ipc, keybindings, theme
│ └── styles/ Tailwind + custom CSS
│
└── tests/
├── rust/ Rust integration tests
└── frontend/ React component + hook tests
IPC Contract (Rust ↔ React)
Commands defined in src-tauri/src/commands.rs, called via @tauri-apps/api:
| Command | Description |
|---|---|
pty_create(path, command) |
Spawn a new PTY session → returns session_id |
pty_write(session_id, data) |
Write input to a PTY session |
pty_resize(session_id, rows, cols) |
Resize the terminal |
pty_kill(session_id) |
Kill a PTY session |
git_status(path) |
Get git status for a project |
git_diff(path) |
Get git diff output |
file_tree(path) |
List directory tree |
file_read(path) |
Read file contents |
file_write(path, content) |
Write file contents |
file_rename(old_path, new_path) |
Rename or move a file |
file_delete(path) |
Delete a file |
config_load() |
Load config from disk |
config_save(config) |
Persist config to disk |
list_fonts() |
List installed system fonts (Windows registry) |
Events: pty:output · pty:exit · file:changed
| Layer | Technology | Purpose |
|---|---|---|
| Backend | Rust (Tauri v2) | Native performance, system access |
| PTY | portable-pty (ConPTY) | Real terminal sessions on Windows |
| Git | git2 crate | Branch, status, diff operations |
| File Watch | notify crate | Real-time file change detection |
| Frontend | React 19 + TypeScript | UI components and state |
| Styling | Tailwind CSS | Utility-first styling |
| State | Zustand | Lightweight state management |
| Terminal | xterm.js | Terminal emulation in the browser view |
| Editor | Monaco Editor | Code editing with syntax highlighting |
| Build | Vite | Fast frontend bundling |
Crucible stores its config in Crucible_config.json (auto-created on first run, never committed):
{
"projects": [
{ "name": "my-app", "path": "C:/Projects/my-app", "command": "powershell.exe" }
],
"theme": "dark",
"accent_color": "#00E5FF",
"font_family": "Cascadia Code",
"font_size": 14,
"cursor_style": "bar",
"terminal_theme": "dark",
"divider_color": "#1E1E2E",
"ui_zoom": 1.0,
"sidebar_position": "left",
"default_project_path": "",
"shell_command": "powershell.exe",
"branch_prefix": "feature/",
"active_project": "my-app"
}All settings are editable through the Settings modal (gear icon in the activity bar).
PRs welcome. See ARCHITECTURE.md for the full blueprint.
Development follows strict TDD — every feature starts with a failing test. See CLAUDE.md for coding conventions and commit guidelines.