Skip to main content

Crate Mountain

Crate Mountain 

Source
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 (keyring crate), 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 app
  • Environment: Capability providers (file system, processes, extensions)
  • RunTime: Effect execution engine that runs ActionEffect pipelines

§Communication

  • IPC: Inter-process communication primitives
  • Air: Client for the background daemon (updates, crypto signing)
  • Vine: gRPC server/client for Cocoon extension host communication
  • RPC: Remote procedure call service implementations

§Services

§Commands

  • Command: Native command handlers (file, edit, view, terminal)
  • Track: Central command dispatcher routing UI requests to providers
  • Workspace: .code-workspace file parsing and multi-root support
CrateRole
CommonAbstract traits and DTOs that Mountain implements
EchoWork-stealing task scheduler used by Mountain’s runtime
AirBackground daemon that Mountain communicates with

§Getting Started

Mountain builds as part of the Land monorepo:

cargo build -p Mountain

Full setup: https://github.com/CodeEditorLand/Land

Modules§

Air
Air (Air Integration Module)
ApplicationState
Centralised, thread-safe state for the Mountain application. Held inside MountainEnvironment and accessed via Arc<...> 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::CommonError instead. Files remain in place to preserve the original taxonomy; remove or migrate when the strategy is settled.
ExtensionManagement
Extension lifecycle: scan bundled + user-installed extension trees, parse their package.json manifests, install VSIX archives. Mountain owns the discovery surface; activation runs in Cocoon over gRPC.
FileSystem
Native file-explorer surface for the workspace sidebar. Mountain owns the tree-view provider; URIs flow through CommonLibrary::FileSystem traits.
IPC
IPC Module
LandFixTier
LandFixTier
ProcessManagement
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 the Windows/Terminals/Debug/SCM/Processes/Telemetry cfg-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-workspace parsing, multi-root folder resolution, workspace-scoped configuration. Implements CommonLibrary::Workspace::WorkspaceProvider over ApplicationState.

Macros§

TraceStep
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.