DEV Community

Mohamed Ibrahim
Mohamed Ibrahim

Posted on

OXP – Write one WASM extension, run natively in VS Code, JetBrains, and Neovim

Hi Folks,

I’m the solo developer behind OXP (Open Extension Protocol).

I built this out of pure frustration.

Like many of you, I was tired of the fragmentation in the IDE tooling space. Building an extension meant maintaining separate codebases in TypeScript, Java/Kotlin, and Lua. Worse, in editors like VS Code, we are forced to rely on iframes and webviews for UI, which feel sluggish and disconnected from the native editor experience.

OXP is my attempt to fix this. It’s an open-source protocol and host layer that lets you write an extension once (using React and WebAssembly) and run it natively across major code editors.

How it works under the hood:

WASM Sandboxing: Extensions are bundled as a single .oxp file and run securely via WASI Preview 2. This isolates the extension and forces explicit permission requests for network or file access.

Zero-Latency IPC Bridge: Instead of running a webview, OXP translates your extension's actions directly into native IDE commands. It hooks directly into the native VS Code API, and for JetBrains, it uses JCEF to render as a native OS window.

MCP Routing: I also built in a system-level router for the Model Context Protocol (MCP). If you use AI tools like Cursor or Copilot, you can configure your database or local context once via OXP, and it instantly wires that context across all detected IDEs on your machine.

The Current State:

My goal is to make this a community-driven standard. If you are interested in tooling, WASM, or just want to tell me why my IPC bridge implementation is flawed, I would deeply appreciate your feedback.

I’ve optimized the repo so you can spin up a "Hello World" cross-editor extension locally in about two minutes.

I’ll be here all day to answer questions, explain the architecture, or take your brutal feedback. Thanks for looking!

Repo: https://oxp.sh/docs
Docs: https://github.com/oxprotocol/OXP

Top comments (0)