# OpenIDEA > The IDE you know, rebuilt in Rust. ## Guide ### Get started - [Introduction](https://openidea.sh/en/index.md): OpenIDEA is an open-source IDE with the IntelliJ IDEA way of working, built as a native app with a Rust core. - [Install](https://openidea.sh/en/guide/install.md): Download and install OpenIDEA on macOS, Windows or Linux, and keep it up to date. - [Quickstart](https://openidea.sh/en/guide/quickstart.md): Open a project, let it index, find your way around, then run and debug it. - [Migrate from another IDE](https://openidea.sh/en/guide/migrate.md): Pick a familiar keymap, bring over settings, themes and run configurations, and map concepts from IntelliJ IDEA, VS Code and Eclipse. - [Roadmap](https://openidea.sh/en/roadmap.md): Goals, scope and completion criteria of the current OpenIDEA milestone. ### Editing - [Editor basics](https://openidea.sh/en/guide/editor.md): Carets and selections, line editing, the clipboard history, folding, formatting, editor tabs and split editors. - [Code intelligence](https://openidea.sh/en/guide/code-intelligence.md): Completion, navigation, find usages, documentation, hierarchies and structure, and where the answers come from. - [Refactoring](https://openidea.sh/en/guide/refactoring.md): Rename, introduce and extract, inline, move, change signature and safe delete, and which ones depend on the language server. - [Inspections](https://openidea.sh/en/guide/inspections.md): Problems in the editor and the Problems tool window, quick fixes and intentions, inspection profiles, batch analysis and spell checking. - [Search and navigation](https://openidea.sh/en/guide/search.md): Search Everywhere, Go to File, Class and Symbol, Find and Replace in Files, recent files and locations, bookmarks and Run Anything. - [Live templates and macros](https://openidea.sh/en/guide/templates.md): Expand abbreviations, surround code, use postfix completion and Emmet, write your own templates, and record editor macros. - [Vim mode](https://openidea.sh/en/guide/vim.md): Turn on Vim emulation, configure it with ~/.ideavimrc, map keys to IDE actions and resolve shortcut conflicts. - [Scratch files and TODO](https://openidea.sh/en/guide/scratch-todo.md): Keep throwaway files outside the project, and collect TODO and FIXME comments in the TODO tool window. ### Run and debug - [Run configurations](https://openidea.sh/en/guide/run.md): Create, edit and launch run configurations, run code from the gutter, and read the output in the Run tool window. - [Build tools](https://openidea.sh/en/guide/build-tools.md): Build the project from the Build menu, work with Maven and Gradle in their tool windows, and manage .NET, CMake, Cargo, Go and npm projects. - [Testing](https://openidea.sh/en/guide/testing.md): Run tests from the gutter, read results in the test tree, rerun failed tests and jump between code and tests. - [Debugging](https://openidea.sh/en/guide/debugging.md): Set breakpoints, step through code, inspect variables and evaluate expressions with the built-in Debug Adapter Protocol client. - [Coverage](https://openidea.sh/en/guide/coverage.md): Run a configuration with coverage and see covered, partly covered and uncovered lines in the editor, the project view and the Coverage tool window. - [Profiler](https://openidea.sh/en/guide/profiler.md): Profile a run configuration with a sampling profiler and explore the result as a flame graph, call tree or method list. ### Tools - [Version control](https://openidea.sh/en/guide/vcs.md): Commit, branch, merge, rebase, stash and review history with the built-in Git integration. - [GitHub](https://openidea.sh/en/guide/github.md): Review, create, check out and merge GitHub pull requests, and clone your repositories, through the GitHub CLI. - [Terminal](https://openidea.sh/en/guide/terminal.md): Use the built-in terminal: tabs, splits, shells, links, find, and terminal settings. - [Databases](https://openidea.sh/en/guide/database.md): Connect to SQL databases, browse schemas, run queries in a console, and view, edit, import and export data. - [HTTP Client](https://openidea.sh/en/guide/http-client.md): Write HTTP requests in .http files, run them from the editor, and inspect responses. - [Docker and services](https://openidea.sh/en/guide/services.md): Manage run configurations, Docker containers, images and Compose projects in the Services tool window, and deploy files over SFTP. - [Notebooks](https://openidea.sh/en/guide/notebook.md): Open, edit and run Jupyter notebooks (.ipynb) with a local Python kernel. - [Android and Logcat](https://openidea.sh/en/guide/android.md): Watch the log of a connected Android device or emulator in the Logcat tool window. ### AI - [Agents](https://openidea.sh/en/guide/agents.md): Run coding agents such as Claude Code, Codex and Gemini CLI inside the IDE, each task in its own Git worktree or in your checkout. - [MCP server](https://openidea.sh/en/guide/mcp.md): Let Claude Code, Codex and other MCP clients use OpenIDEA's search, code insight, editing, run and Git tools on your open projects. ### Remote development - [SSH](https://openidea.sh/en/guide/remote/ssh.md): Open a project that lives on an SSH host or in a WSL distribution, with the IDE backend running next to the code. - [openidea-server](https://openidea.sh/en/guide/remote/server.md): The IDE backend that runs on the remote host: how the desktop app installs and starts it, where it keeps its files, and how to install it offline. - [Containers](https://openidea.sh/en/guide/remote/containers.md): Reopen a local project in its dev container, and run configurations in Docker or Docker Compose containers. ### Customize - [Settings](https://openidea.sh/en/guide/settings.md): Open and search the Settings window, choose between global and project values, and export, import or carry settings to new projects. - [Keymaps](https://openidea.sh/en/guide/keymap.md): Choose a keymap, change, add and remove shortcuts, create your own keymap, and edit bindings in settings.toml. - [Themes and fonts](https://openidea.sh/en/guide/themes.md): Choose a UI theme and editor color scheme, import IntelliJ themes and color schemes, and set the editor, UI and terminal fonts. - [Display language](https://openidea.sh/en/guide/locale.md): Change the language of OpenIDEA's menus and dialogs, and the date format it uses. ### Reference - [Command line](https://openidea.sh/en/reference/cli.md): Install the openidea shell command and use it to open projects, files at a line, and diffs from a terminal. - [Keyboard shortcuts](https://openidea.sh/en/reference/shortcuts.md): The most-used default shortcuts of OpenIDEA's IntelliJ IDEA keymaps, for macOS and for Windows and Linux. - [Settings reference](https://openidea.sh/en/reference/settings.md): Where OpenIDEA stores settings, how the global and project files combine, the Settings pages, and the most-used keys with their defaults. - [Data directories and logs](https://openidea.sh/en/reference/data-directories.md): Where OpenIDEA keeps its settings, user data, caches, downloaded tools and logs, and how to move the rebuildable data to another drive. - [Troubleshooting](https://openidea.sh/en/reference/troubleshooting.md): Find the logs, and fix common problems: Restricted Mode, missing code insight, Java memory use, stale caches, shortcuts, startup and download issues. ## Languages ### Overview - [Language support](https://openidea.sh/en/languages/index.md): Which languages OpenIDEA supports, which language servers and debuggers it uses, and how they get installed. ### Languages - [Java and Kotlin](https://openidea.sh/en/languages/java.md): How OpenIDEA provides code insight, builds, runs, tests and debugs Java and Kotlin projects with JDT LS, Kotlin LSP, Maven and Gradle. - [Python](https://openidea.sh/en/languages/python.md): Python code intelligence with basedpyright and Ruff, interpreter and virtualenv detection, pytest and Django runs, and debugging with debugpy. - [Go](https://openidea.sh/en/languages/go.md): Go code intelligence with gopls, GOROOT and build tag settings, go run and go test configurations, and debugging with Delve. - [JavaScript and TypeScript](https://openidea.sh/en/languages/javascript.md): Language servers, Node.js detection, npm scripts, tests, debugging and framework support for JavaScript, TypeScript, Vue, Svelte, Astro and Angular. - [PHP](https://openidea.sh/en/languages/php.md): Intelephense, PHP interpreters and language level, Composer, PHPUnit and Pest, PHPStan, Xdebug debugging and Laravel support. - [Ruby](https://openidea.sh/en/languages/ruby.md): Ruby LSP and Solargraph, interpreter detection with version managers, Rake, RSpec and Minitest runs, rdbg debugging and Rails. - [C and C++](https://openidea.sh/en/languages/cpp.md): Code intelligence with clangd, CMake and Makefile run configurations, single-file runs and native debugging with lldb-dap, CodeLLDB or GDB. - [C# and .NET](https://openidea.sh/en/languages/csharp.md): C# with csharp-ls, F# with FsAutoComplete, the .NET tool window for builds, NuGet packages and tests, and debugging with netcoredbg. - [Rust](https://openidea.sh/en/languages/rust.md): Rust code intelligence with rust-analyzer, toolchain and linter settings, cargo run and test configurations, and debugging with CodeLLDB. - [SQL](https://openidea.sh/en/languages/sql.md): SQL files, the sqls language server, and running SQL against a data source with schema-aware completion. ### Game engines - [Unity](https://openidea.sh/en/languages/unity.md): Use OpenIDEA as Unity's external script editor, browse a Unity project, and keep .meta files in step with your assets. - [Godot](https://openidea.sh/en/languages/godot.md): Edit GDScript with the Godot editor's language server, run and debug scenes, and open scripts from Godot in OpenIDEA. ### Extend - [Add a language](https://openidea.sh/en/languages/adding.md): The language definition format: file detection, comments, highlighting, language servers, debugger and formatter. ## Plugins ### Get started - [Overview](https://openidea.sh/en/plugins/index.md): What OpenIDEA plugins can do, the two kinds of plugin, and the current state of the plugin API. - [Quickstart](https://openidea.sh/en/plugins/quickstart.md): Install the plugin tool, scaffold a Rust plugin, build it, link it into OpenIDEA and run its commands. - [Example plugins](https://openidea.sh/en/plugins/examples.md): A guided tour of the plugins in plugins/official: what each one shows and which parts of the API it uses. ### Concepts - [Architecture and sandbox](https://openidea.sh/en/plugins/architecture.md): How plugin code runs: WebAssembly components, WIT worlds, host calls, the sandbox, resource limits and the one-thread-per-plugin model. - [Manifest](https://openidea.sh/en/plugins/manifest.md): Every field of plugin.toml: identity, API requirement, code, activation, capabilities and contributions. - [Permissions and capabilities](https://openidea.sh/en/plugins/capabilities.md): The capability model: what a plugin declares, what the user approves, and what each capability unlocks. - [Lifecycle and events](https://openidea.sh/en/plugins/lifecycle.md): When plugin code is loaded and unloaded, how events reach it, and how it keeps data, settings and state across reloads and updates. - [API versions and compatibility](https://openidea.sh/en/plugins/versioning.md): engines.openidea, the plugin API versions from 1.0 to 1.5, and the rules that keep released plugins loading in newer IDEs. ### Extension points - [Commands and actions](https://openidea.sh/en/plugins/guides/commands.md): Declare commands, give them shortcuts, place them in menus and the status bar, and react to workbench events and commits. - [Language features](https://openidea.sh/en/plugins/guides/language-features.md): Add completion, hover, navigation, inlay hints, semantic colours, formatting and more to any language, or contribute a whole new language. - [Diagnostics and inspections](https://openidea.sh/en/plugins/guides/diagnostics.md): Report problems in the editor and the Problems tool window, check unsaved text as the user types, and offer quick fixes. - [Views and decorations](https://openidea.sh/en/plugins/guides/views.md): Tool windows, custom editors, web views, Services nodes, editor tabs and terminals opened by code, and editor and project tree decorations. - [File actions](https://openidea.sh/en/plugins/guides/file-actions.md): Quick fixes that create, rename or delete files, reading and writing project files, and files outside the project. - [Run targets](https://openidea.sh/en/plugins/guides/run-targets.md): Contribute run configurations, parse test output into the test tree, start runs from code, wrap runs in containers with run targets, and run approved programs. - [Indexing](https://openidea.sh/en/plugins/guides/indexing.md): Publish cross-file associations that the IDE uses for navigation, gutter markers, Find Usages and Rename, and share a project's HTTP endpoints. - [Databases](https://openidea.sh/en/plugins/guides/database.md): Create and manage plugin-owned data sources in the Database tool window, store their passwords securely and connect them. - [MCP tools](https://openidea.sh/en/plugins/guides/mcp.md): Add tools to the IDE's built-in MCP server, implemented by plugin code under the plugin's own permissions. - [Themes](https://openidea.sh/en/plugins/guides/themes.md): Write a colour theme plugin: the theme and editor scheme files, how themes are applied, importing IntelliJ themes, porting VS Code themes, and the full token reference. - [Icon themes](https://openidea.sh/en/plugins/guides/icon-themes.md): Write a file icon theme plugin that maps file names, extensions and folders to SVG icons, with optional patterns, variants and a settings page. ### Develop - [Testing and debugging](https://openidea.sh/en/plugins/testing.md): Unit-test plugin logic against the SDK's mock host, validate packages with openidea-plugin check, read plugin logs and fix common problems. ### Publish - [Packaging and signing](https://openidea.sh/en/plugins/publishing/packaging.md): Create a publisher key, pack a plugin into a signed .oiplugin package, and what the package contains. - [Publish to the marketplace](https://openidea.sh/en/plugins/publishing/marketplace.md): How the default marketplace is built, official versus community plugins, and how to list your plugin through the community registry. - [Self-hosted marketplace](https://openidea.sh/en/plugins/publishing/self-hosted.md): Run your own plugin marketplace: a static index.json next to the packages, built and maintained with openidea-plugin. - [Policy and security](https://openidea.sh/en/plugins/publishing/policy.md): The plugin trust model: sandbox and consent, publisher signatures, revocation, key rotation, the official key, and what review plugins get. ### Reference - [API reference](https://openidea.sh/en/plugins/api/index.md): Every interface of the openidea:plugin WIT package, with a one-line summary and a link to its source. ## Contribute ### Get started - [Development setup](https://openidea.sh/en/contribute/setup.md): Install the toolchain, build OpenIDEA from source, run it from a worktree and avoid the usual first-build pitfalls. - [Contribution workflow](https://openidea.sh/en/contribute/workflow.md): How issues are triaged, what a pull request needs, how verification is checked, and how changes get merged. - [Security](https://openidea.sh/en/contribute/security.md): How to report a vulnerability, and the security model contributors must preserve: project trust, the plugin sandbox and local servers. ### Architecture - [Architecture overview](https://openidea.sh/en/contribute/architecture/overview.md): The processes and layers of OpenIDEA: the Tauri shell, the webview frontend, the UI-less Rust host, feature crates, external servers, plugins and the remote server. - [Rust or UI?](https://openidea.sh/en/contribute/architecture/boundaries.md): Which work belongs in the Rust backend and which in the frontend, how to decide for a new feature, and examples from the codebase. - [IPC between UI and Rust](https://openidea.sh/en/contribute/architecture/ipc.md): The communication contract: typed commands returning IdeResult, generated bindings, text coordinates, streaming channels, cancellable requests and the backend event bus. - [Crates](https://openidea.sh/en/contribute/architecture/crates.md): Every Rust crate in the workspace, what it owns, and the dependency rules between them. - [Frontend architecture](https://openidea.sh/en/contribute/architecture/frontend.md): How the React workbench is put together: features with activate(), the action registry, keymaps and the dispatcher, context keys and when clauses, contributions and services. - [Code intelligence](https://openidea.sh/en/contribute/architecture/code-intelligence.md): Where completion, navigation and other language features come from: language servers, the IDE's own index, tree-sitter syntax and plugins, and how their results are combined. - [Plugin host](https://openidea.sh/en/contribute/architecture/plugin-host.md): Internals of the plugin system: the extension kernel, the wasmtime component runtime with one actor per plugin, the sandbox and limits, and how plugin contributions reach the UI. - [Remote development](https://openidea.sh/en/contribute/architecture/remote.md): How a desktop window works on a project on another machine: openidea-server, its JSON-RPC protocol over SSH, WSL or docker exec, and command routing in the frontend. ### Guidelines - [UI guidelines](https://openidea.sh/en/contribute/guidelines/ui.md): Rules for frontend UI code: design tokens, CSS Modules, icons, the UI primitives, accessibility and WebKit compatibility. - [Localization](https://openidea.sh/en/contribute/guidelines/i18n.md): How user-visible text is translated: the source-text catalog, keyed message catalogs, the required English and Chinese entries, and the tests that enforce them. - [Code style](https://openidea.sh/en/contribute/guidelines/code-style.md): Formatting, linting and dead-code checks for Rust and TypeScript, plus the conventions for comments, errors and generated files. ### Testing - [Unit and E2E tests](https://openidea.sh/en/contribute/testing/unit-e2e.md): Running and writing Rust tests with cargo nextest, frontend tests with Vitest, and UI flows with Playwright. - [Smoke tests](https://openidea.sh/en/contribute/testing/smoke.md): Language smoke tests with real language servers, and run and debug smoke tests through a real openidea-server, on the fixtures projects. - [Performance tests](https://openidea.sh/en/contribute/testing/perf.md): Measuring UI interaction latency, frames and leaks with pnpm perf, backend benchmarks with pnpm perf:rust, the budgets in perf/budgets.json, and the external IDE comparison in perf/compare. ## Changelog ### Changelog - [Changelog](https://openidea.sh/en/changelog.md): What changed in each OpenIDEA release. > The links below point to documentation indexes. Follow each `/_llms/` index recursively until you reach documentation pages. ## Indexes - [Chinese (98 pages)](https://openidea.sh/_llms/zh.txt): Documentation for Chinese. This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.