MCPcopy Index your code
hub / github.com/Sidenai/sidex

github.com/Sidenai/sidex @v0.1.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.2 ↗ · + Follow
80,749 symbols 274,833 edges 3,767 files 4,393 documented · 5%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SideX

VSCode's workbench, without Electron.

Discord Contributing MIT License Built with Tauri

SideX — VSCode workbench running on Tauri

Why · What's Working · Getting Started · How It's Built · Contributing · Discord


SideX is a port of Visual Studio Code that replaces Electron with Tauri — a Rust backend and OS's native webview. The same TypeScript workbench, the same editor, terminal, and Git integration, running without a bundled browser.

Early release. Core editing and the terminal are solid. The extension host and debugger are still in progress. See What's Working for the full picture.


Why

VSCode's memory useage is almost entirely from its bundled Chromium, not the editor itself. Tauri replaces that with the webview already on your system — WKWebView on macOS, WebView2 on Windows — shared across apps and costing almost nothing extra.

SideX 16.4 MB vs Visual Studio Code 797.8 MB

RAM savings are most tested on macOS, WKWebView is shared with Safari. On Windows the picture is more nuanced — WebView2 memory can look higher depending on how it's measured, and it's an active area in the Tauri ecosystem. The target is under 200 MB at idle on macOS. We'll publish real benchmarks once the app is stable enough for them to be meaningful.


What's Working

Solid:

  • Monaco editor with syntax highlighting and basic IntelliSense
  • File explorer — open folders, create, rename, delete
  • Integrated terminal — full PTY via Rust, shell detection, resize, signals
  • Git — status, diff, log, stage, commit, branch, push/pull/fetch, stash, reset
  • Themes — multiple built-in themes from the VSCode catalogue
  • Native OS menus (macOS, Windows, Linux)
  • Extension installation from Open VSX
  • File watching, file search, full-text search, Rust-backed search index
  • SQLite storage, document management (autosave, undo/redo, encoding)

Getting Started

Run in Development

git clone https://github.com/Sidenai/sidex.git
cd sidex
npm install
npm run tauri dev

Build from Source

npm install

# macOS / Linux
NODE_OPTIONS="--max-old-space-size=12288" npm run build

# Windows (PowerShell)
$env:NODE_OPTIONS="--max-old-space-size=12288"
npm run build

npx tauri build

First build takes 5–10 minutes (Rust compile time). Pre-built binaries are not distributed yet.


How It's Built

SideX maps VSCode's Electron architecture onto Tauri layer by layer:

VSCode (Electron) SideX (Tauri)
Electron main process Tauri Rust backend
BrowserWindow WebviewWindow
ipcMain / ipcRenderer invoke() + Tauri events
Node.js fs, pty, etc. Rust commands (std::fs, portable-pty)
Menu / Dialog / Clipboard Tauri plugins
Renderer (DOM + TypeScript) Same — runs in native webview
Extension host Sidecar process (in progress)

The TypeScript frontend is a direct port of VSCode's workbench. The Rust backend is in src-tauri/src/commands/ and handles everything that would have been a Node.js native module: file I/O, terminal PTY, Git, file watching, search indexing, SQLite, and process management.

Project Layout

sidex/
├── src/                    # TypeScript workbench (ported from VSCode)
│   └── vs/
│       ├── base/           # Core utilities
│       ├── platform/       # Platform services and dependency injection
│       ├── editor/         # Monaco editor
│       └── workbench/      # IDE shell, panels, features, contributions
├── src-tauri/              # Rust backend
│   └── src/
│       ├── commands/       # fs, terminal, git, search, debug, etc.
│       ├── lib.rs          # App setup and command registration
│       └── main.rs         # Entry point
├── index.html
├── vite.config.ts
└── package.json

Tech Stack

Layer Technology
Frontend TypeScript, Vite 6, Monaco Editor
Terminal UI xterm.js + WebGL renderer
Syntax / Themes vscode-textmate, vscode-oniguruma (WASM)
Backend Rust, Tauri 2
Terminal portable-pty (Rust)
File watching notify crate (FSEvents on macOS)
Search dashmap + rayon + regex (parallel, Rust)
Storage SQLite via rusqlite
Extensions Open VSX registry

For a deeper dive, see ARCHITECTURE.md


Contributing

This was released early to get outside contributors involved.

How to Contribute

  1. Fork the repo and create a branch
  2. Pick something — check Issues or grab something from the Known Gaps list above
  3. Submit a PR — contributors get credited

Dev Notes

  • Follows VSCode's patterns — familiar if you've read the VSCode source
  • TypeScript imports use .js extensions (ES module convention)
  • Services use VSCode's @inject dependency injection decorators
  • New Rust commands go in src-tauri/src/commands/ and register in lib.rs

Community


License

MIT — SideX is a port of Visual Studio Code (Code - OSS), which is also MIT licensed. See LICENSE for details.

Extension points exported contracts — how you extend this code

IWebviewViewResolver (Interface)
* Fill in the contents of a newly created webview view. [88 implementers]
src/vs/workbench/contrib/webviewView/browser/webviewViewService.ts
TextEditorDecorationType (Interface)
(no doc) [832 implementers]
src/vscode-dts/vscode.d.ts
SubtleCrypto (Interface)
* This Web Crypto API interface provides a number of low-level cryptographic functions. It is accessed via the Crypto.su [4 …
src/typings/crypto.d.ts
NlsEntry (Interface)
(no doc)
scripts/vite-plugin-nls.ts
IDisposable (Interface)
(no doc) [832 implementers]
src/vs/monaco.d.ts
LanguageStatusItem (Interface)
(no doc) [832 implementers]
src/vscode-dts/vscode.d.ts
Thenable (Interface)
* Thenable is a common denominator between ES6 promises, Q, jquery.Deferred, WinJS.Promise, * and others. This API make
src/typings/thenable.d.ts
ILinkOpener (Interface)
(no doc) [38 implementers]
src/vs/monaco.d.ts

Core symbols most depended-on inside this repo

localize
called by 7685
src/vs/nls.ts
_register
called by 7343
src/vs/editor/common/services/languagesRegistry.ts
push
called by 4447
src/vs/workbench/contrib/testing/common/testResultService.ts
add
called by 4436
src/vs/workbench/contrib/testing/common/testItemCollection.ts
map
called by 3742
src/vs/base/common/event.ts
fire
called by 2927
src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts
ok
called by 2692
src/vs/platform/quickinput/browser/quickInput.ts
push
called by 2534
src/vs/editor/common/model.ts

Shape

Method 49,063
Class 13,851
Function 10,389
Interface 6,332
Enum 1,114

Languages

TypeScript99%
Rust1%

Modules by API surface

src/vs/workbench/api/common/extHost.protocol.ts1,120 symbols
src/vscode-dts/vscode.d.ts801 symbols
src/vs/monaco.d.ts673 symbols
src/vs/workbench/test/browser/workbenchTestServices.ts656 symbols
src/vs/workbench/api/common/extHostTypes.ts485 symbols
src/vs/workbench/browser/parts/editor/editorActions.ts411 symbols
src-tauri/extension-host/host.cjs376 symbols
src/vs/base/browser/ui/tree/abstractTree.ts344 symbols
src/vs/workbench/api/common/extHostLanguageFeatures.ts339 symbols
src/vs/platform/contextkey/common/contextkey.ts299 symbols
src/vs/workbench/contrib/debug/common/debug.ts295 symbols
src/vs/editor/common/config/editorOptions.ts291 symbols

For agents

$ claude mcp add sidex \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact