Open-source, live 3D visuals for Claude Code, available for VS Code, as a desktop app and as a web client: your codebase as a dependency graph, with Claude working through it as you watch. This repository holds the VS Code extension, the desktop app, the local server with its web client, and the editor-agnostic packages they are built from.
- Install it, read the docs and the changelog: orbit-code.imshaikot.com
- Use it in VS Code: apps/vscode/README.md
- Use it as a desktop app: apps/desktop/README.md
- Use it in your browser: apps/server/README.md, the server that the web client connects to
- Index a repository from the command line: packages/indexer/README.md
code --install-extension imshaikot.orbit-code # VS Code, from the Marketplace
curl -fsSL https://orbit-code.imshaikot.com/install.sh | sh # Cursor, Windsurf, VSCodium and other VS Code based editors
irm https://orbit-code.imshaikot.com/install.ps1 | iex # the same, in Windows PowerShellSessions need Claude Code installed and signed in; the graph works without it. The desktop app runs from a clone for now (yarn install && yarn desktop --folder <path>, see apps/desktop/README.md). The install guide has every option and how each one updates.
The docs directory holds the longer pages, which are also published at orbit-code.imshaikot.com/docs:
| Page | For |
|---|---|
| Using Orbit | Reading the view, navigating, prompting Claude, permissions, the file card, the Flat view and the tour |
| Architecture | The three bundles, the services, the protocol, the data flow and the security constraints |
| The graph pipeline | Indexing, language coverage, the cache, live updates and the layout |
| Claude in Orbit | How the claude CLI is run: conversations, permissions, questions, MCP, skills, files, history, subagents |
| The webview | The three.js scene, focus and levels, GPU picking, the frame loop, the HUD and the build's constraints |
| Hosts | What VS Code and the desktop app each provide, and how a third editor would host Orbit |
| The monorepo | Projects, tags, the boundary check, TypeScript per runtime, Nx targets and caching |
| Contributing | The dev loop, where a change goes, the checks, CI and the commit conventions |
| Releasing | Version plans, release groups, tags and publishing |
| Troubleshooting | Logs, caches and the failures with a known cause |
| Path | Package | What it is |
|---|---|---|
apps/vscode |
orbit-code |
The VS Code extension, packaged as a .vsix for the Marketplace and Open VSX |
apps/desktop |
@orbit-code/desktop |
The desktop app: Electron, with installers for macOS, Windows and Linux |
apps/server |
@imshaikot/orbit-code-server |
The local server: Orbit for one folder, reached by the web client over a WebSocket on 127.0.0.1; published to npm |
packages/web-client |
@orbit-code/web-client |
The page at orbit-code.imshaikot.com/web-client/ that guides starting the server and connects to it |
packages/protocol |
@orbit-code/protocol |
The messages between a host, the webview and the workers |
packages/graph |
@orbit-code/graph |
File kinds, the columnar graph, the directory tree, layout extension |
packages/common |
@orbit-code/common |
Events, disposables, logging and batching, for any host |
packages/indexer |
@orbit-code/indexer |
Workspace to dependency graph, as a worker thread and a CLI; published to npm |
packages/agent |
@orbit-code/agent |
Claude Code conversations over the claude CLI |
packages/core |
@orbit-code/core |
The editor-agnostic host: the graph, live updates, Claude's activity, and the controller every host shares |
packages/webview |
@orbit-code/webview |
The UI: the three.js scene and the HUD |
tools/harness |
@orbit-code/harness |
Headless Chrome checks of the webview against a simulated host |
Each project is tagged with the runtime its code needs (neutral, node, browser, vscode or electron), and yarn boundaries keeps every import within those lines. Only apps/vscode touches the VS Code API and only apps/desktop touches Electron's, so all three hosts share the engine, the controller, the protocol and the webview.
yarn install
yarn build # every project, through Nx
yarn typecheck
yarn boundaries
yarn self # build and open this repository in an Extension Development Host (or press F5)
yarn watch # rebuild on change
yarn harness # webview checks in headless Chrome
yarn smoke # end-to-end in a real VS Code
yarn package # dist/apps/vscode/orbit-code-<version>.vsix
yarn desktop --folder . # build and open this repository in the desktop app
yarn desktop:smoke # end-to-end in the desktop app
yarn desktop:package # dist/apps/desktop: a dmg and zip, an NSIS installer or an AppImage
yarn server . # build and serve this repository to the web client
yarn server:smoke # the server and the web client end to end in headless Chrome
yarn nx graph # the project graphNx 23 runs and caches the tasks; Yarn 4 workspaces link the packages, which import each other's sources directly. docs/contributing.md has the dev loop, the checks and where a change goes; docs/monorepo.md the workspace's rules.
Record a change worth releasing with yarn nx release plan <bump> --groups=apps (the extension and the desktop app, released together) or --projects=<package> for an npm package, and commit the plan with it. yarn nx release --skip-publish then applies the plans: it bumps versions, writes each project's CHANGELOG.md, commits and tags, v<version> for the apps and <project>-v<version> for an npm package. Pushing a v tag runs .github/workflows/release.yml, which builds the .vsix and the macOS dmgs and publishes them in one GitHub release with that version's changelog. docs/releasing.md has the whole procedure.
MIT
