Skip to content

CodeEditorLand/Mountain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,729 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Mountain

⛰️

+

🏞️

+


Mountain ⛰️

The RAM tax is not optional. VS Code with a medium project: 500 MB to 1.5 GB of RAM. Three open windows means three Chromium renderer processes, each carrying a full heap. Every OS interaction crosses a serialized JSON IPC pipe.

"Where Electron takes 200 ms to open a dialog, Mountain takes 2."

License: CC0-1.0 RustRust Version TauriTauri Version gRPCTonic gRPC Version

Mountain replaces Electron's main process entirely with a Rust binary using Tauri. The OS's own WebView renders the UI: WKWebView on macOS, WebView2 on Windows, WebKitGTK on Linux. No bundled Chromium. No Node.js in the host process. Window management, file system access, process lifecycle, and auth tokens all happen in Rust with zero IPC overhead. Cold start in under 200 ms. RAM footprint 60-80% smaller per window.

📖 Rust API Documentation


What It Does 🔐

  • No Electron overhead. Tauri's WebView replaces three Chromium renderer processes. No 300 MB base memory footprint.
  • Native file I/O. Async Rust (tokio) handles filesystem operations. File trees load instantly even on large monorepos.
  • Your VS Code extensions work. Mountain manages the Cocoon sidecar over gRPC. Extensions run unchanged with sub-millisecond IPC.
  • Secrets stay in the OS keychain. Authentication tokens stored via keyring, not in plaintext config files.
  • Composable business logic. Operations expressed as declarative ActionEffects. Testable, composable, no spaghetti callbacks.
  • Instant command dispatch. A central Track dispatcher routes every UI action to the right provider. The UI never waits.

Architecture 🏗️

Principle Description Key Components
Implementation of Contracts Implements abstract service traits from Common Environment/* providers
Separation of Concerns Each domain isolated in its own provider module Environment/*, Command/*
Declarative Logic Operations as ActionEffects executed by the runtime RunTime/*, Track/EffectCreation.rs
Centralized State Single thread-safe ApplicationState ApplicationState/*
Typed IPC gRPC for all Cocoon communication Vine/*
UI-Backend Decoupling Tauri commands and events, backend is UI-agnostic Binary.rs, Command/*

Deep Dive


In the Ecosystem ⛰️ + 🏞️

graph LR
    classDef Mountain fill:#f9f,stroke:#333,stroke-width:2px
    classDef Cocoon fill:#ccf,stroke:#333,stroke-width:2px
    classDef Wind fill:#9cf,stroke:#333,stroke-width:2px
    classDef Common fill:#cfc,stroke:#333,stroke-width:1px
    classDef IPC fill:#ff9,stroke:#333,stroke-width:1px,stroke-dasharray: 5 5

    subgraph "Mountain (Rust/Tauri Backend)"
        TauriRuntime[Tauri App]:::Mountain
        ApplicationRunTime[ApplicationRunTime]:::Mountain
        ApplicationState[ApplicationState]:::Mountain
        TrackDispatcher[Track Dispatcher]:::Mountain
        VinegRPC[Vine gRPC Server]:::IPC
        EnvironmentProviders[Environment Providers]:::Mountain
    end

    subgraph "Clients"
        WindUI[Wind/Sky UI]:::Wind
        CocoonSideCar[Cocoon Extension Host]:::Cocoon
    end

    TauriRuntime -- Manages --> ApplicationState
    TauriRuntime -- Manages --> ApplicationRunTime
    ApplicationRunTime -- Executes --> EnvironmentProviders
    TrackDispatcher -- Routes --> ApplicationRunTime
    TauriRuntime -- Hosts --> WindUI
    WindUI -- Tauri Command --> TrackDispatcher
    TrackDispatcher -- Tauri Events --> WindUI
    VinegRPC -- gRPC --> CocoonSideCar
    VinegRPC -- Forwards --> TrackDispatcher
Loading

Project Structure 🗺️

Mountain/
├── Source/
│   ├── Binary.rs                    # Tauri entry point
│   ├── ApplicationState/            # Thread-safe state store
│   ├── Command/                     # Tauri command handlers
│   ├── Environment/                 # Common trait implementations
│   ├── ExtensionManagement/         # Extension scanning and parsing
│   ├── FileSystem/                  # Native TreeView provider
│   ├── ProcessManagement/           # Cocoon sidecar lifecycle
│   ├── RunTime/                     # Effect execution engine
│   ├── Track/                       # Central request dispatcher
│   ├── Update/                      # Self-updating logic
│   ├── Vine/                        # gRPC server/client (tonic)
│   └── Workspace/                   # .code-workspace handling
├── Proto/
│   └── Vine.proto                   # gRPC contract definition
└── build.rs                         # Proto compilation

Development 🛠️

Mountain is a Rust crate within 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 🙏🏻

Mountain 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

Mountain ⛰️ + Land 🏞️

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors

Languages