Skip to content

CodeEditorLand/Grove

Repository files navigation

Grove

🌳

+

🏞️


Grove 🌳

VS Code extensions run with full Node.js capabilities in a shared process. A malicious or buggy extension can access any file, make any network request, and read another extension's state. The extension sandbox is a policy document, not a technical boundary.

"An extension can only touch what you explicitly grant. The sandbox is enforced by the hardware, not a policy."

License: CC0-1.0 RustCrates.io RustRust Version WASMWASMtime Version

Grove runs extensions compiled to WebAssembly inside WASMtime with capability-based security. An extension can only touch resources explicitly granted to it: a specific directory, a network endpoint, a named IPC channel. No implicit ambient authority. The WASM sandbox is a technical boundary enforced by the runtime.

📖 Rust API Documentation


What It Does 🔐

  • Capability-based isolation. Extensions can only access resources explicitly granted to them.
  • WASM sandbox. WASMtime enforces the boundary at the runtime level, not by policy.
  • Zero trust marketplace. The path to running untrusted extensions safely, like mobile apps on iOS.
  • Rhai scripting. Lightweight automation tasks run in Grove without a full extension.

In the Ecosystem 🌳 + 🏞️

graph LR
classDef grove fill:#ccf,stroke:#333,stroke-width:2px;
classDef mountain fill:#f9f,stroke:#333,stroke-width:2px;
classDef wasm fill:#cfc,stroke:#333,stroke-width:1px;
classDef transport fill:#ff9,stroke:#333,stroke-width:1px,stroke-dasharray: 5 5;

subgraph "Grove 🌳 (Rust/WASM Extension Host)"
direction TB
ExtensionHost["Extension Host Controller"]:::grove
ActivationMgr["Activation Manager"]:::grove
APIBridge["VS Code API Bridge"]:::grove
WASMRuntime["WASM Runtime (WASMtime)"]:::wasm
TransportLayer["Transport Layer"]:::transport

ExtensionHost --> ActivationMgr
ActivationMgr --> APIBridge
APIBridge --> WASMRuntime
WASMRuntime --> TransportLayer
end

subgraph "Mountain ⛰️ (Rust/Tauri Backend)"
VineGRPC["Vine gRPC Server"]:::mountain
end

TransportLayer -- gRPC/IPC --> VineGRPC
Loading

Development 🛠️

Grove is a component of the Land workspace. Follow the Land Repository instructions to build and run.


License ⚖️

CC0 1.0 Universal. Public domain. No restrictions. LICENSE


See Also

Funding & Acknowledgements 🙏🏻

Grove is a core element of the Land ecosystem. This project is funded through NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.

The project is operated by PlayForm, based in Sofia, Bulgaria.

PlayForm acts as the open-source steward for Code Editor Land under the NGI0 Commons Fund grant.

Land PlayForm NLnet NGI0 Commons Fund
Land PlayForm NLnet NGI0 Commons Fund

Project Maintainers: Source Open (Source/Open@Editor.Land) | GitHub Repository | Report an Issue | Security Policy

About

Grove 🌳 + Land 🏞️

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors

Languages