Expand description
§Mountain: Native Backend for Code Editor Land
Mountain replaces Electron with Rust and Tauri. It manages windows, file systems, processes, and extensions at native speed. Where Electron takes milliseconds, Mountain responds in microseconds.
§What Mountain Does
- Hosts the editor UI via Tauri webview (no Chromium process overhead)
- Runs VS Code extensions by managing the Cocoon sidecar over gRPC
- Handles file I/O through native async Rust (tokio), not Node.js
fs - Manages terminals via native PTY (
portable-pty), not shell wrappers - Stores secrets in the OS keychain (
keyringcrate), not plaintext
§Architecture
Mountain uses a declarative effect system defined in Common. Business
logic is expressed as ActionEffects executed by the ApplicationRunTime.
All state lives in a single thread-safe ApplicationState managed by Tauri.
Wind/Sky (UI) ──Tauri commands──> Mountain ──gRPC──> Cocoon (extensions)
│
├── Environment providers (file, process, terminal)
├── ApplicationRunTime (effect executor)
└── ApplicationState (shared state)§Module Layout
§Core Infrastructure
ApplicationState: Centralized, thread-safe state for the entire appEnvironment: Capability providers (file system, processes, extensions)RunTime: Effect execution engine that runsActionEffectpipelines
§Communication
IPC: Inter-process communication primitivesAir: Client for the background daemon (updates, crypto signing)Vine: gRPC server/client for Cocoon extension host communicationRPC: Remote procedure call service implementations
§Services
ProcessManagement: Sidecar process lifecycle (launch, monitor, restart)FileSystem: Native TreeView provider for the File ExplorerExtensionManagement: Extension discovery, scanning, and activation
§Commands
Command: Native command handlers (file, edit, view, terminal)Track: Central command dispatcher routing UI requests to providersWorkspace:.code-workspacefile parsing and multi-root support
§Related Crates
| Crate | Role |
|---|---|
Common | Abstract traits and DTOs that Mountain implements |
Echo | Work-stealing task scheduler used by Mountain’s runtime |
Air | Background daemon that Mountain communicates with |
§Getting Started
Mountain builds as part of the Land monorepo:
cargo build -p MountainFull setup: https://github.com/CodeEditorLand/Land
Modules§
- Air
- Air (Air Integration Module)
- Application
State - Centralised, thread-safe state for the Mountain application. Held inside
MountainEnvironmentand accessed viaArc<...>clones from every provider. Sub-modules: - Binary
- Binary Module
- Cache
- Mountain caching primitives.
- Command
- Command Module
- Environment
- Environment Module
- Error
- Centralized error handling system
Local error stack. Currently dead code - every Mountain consumer uses
CommonLibrary::Error::CommonErrorinstead. Files remain in place to preserve the original taxonomy; remove or migrate when the strategy is settled. - Extension
Management - Extension lifecycle: scan bundled + user-installed extension trees, parse
their
package.jsonmanifests, install VSIX archives. Mountain owns the discovery surface; activation runs in Cocoon over gRPC. - File
System - Native file-explorer surface for the workspace sidebar. Mountain owns the
tree-view provider; URIs flow through
CommonLibrary::FileSystemtraits. - IPC
- IPC Module
- Land
FixTier - LandFixTier
- Process
Management - Process Management Module
- RPC
- Mountain RPC services. The active surface is
CocoonService- the tonic server impl that Cocoon dials into. The other modules here (EchoAction,Commands,Workspace,Configuration, plus theWindows/Terminals/Debug/SCM/Processes/Telemetrycfg-feature shells) are scaffolding for the multi-extension-host roadmap; most carry zero external callers today. - RunTime
- RunTime Module
- Track
- Track Module
- Vine
- Vine gRPC Module
- Workspace
- Workspace lifecycle:
.code-workspaceparsing, multi-root folder resolution, workspace-scoped configuration. ImplementsCommonLibrary::Workspace::WorkspaceProvideroverApplicationState.
Macros§
- Trace
Step - Logs a checkpoint message at TRACE level (for “every step” tracing).
- dev_log
- Log a tagged dev message. Only prints if the tag is enabled via Trace.
- impl_
provider - Macro to generate
Requires<T>trait implementations for MountainEnvironment. - otel_
span - Convenience macro: emit an OTLP span for an IPC handler.
Usage:
otel_span!("file:readFile", StartNano, &[("path", &SomePath)]);
Functions§
- main
- Main entry point for both mobile and desktop builds.