Documentation

Evern Documentation

Evern is a mobile SSH and Mosh client for Android and iOS, built on a shared Rust core. It parses AI agent output into structured, readable content and supports voice input for terminal interaction.

Getting Started

Evern is open source under the Apache 2.0 license. To build from source, you need the Rust toolchain, platform-specific SDKs, and the UniFFI binding generator.

Prerequisites

  • Rust: Install via rustup (latest stable)
  • Android: Android Studio (2024.2+) with NDK r27+, CMake 3.22+
  • iOS: Xcode 16+ with iOS 17+ SDK (macOS only)
  • Build tools: cargo-ndk, cargo-lipo, uniffi-bindgen-cli

Clone and Build

build from source
# Install Rust targets
rustup target add aarch64-linux-android \
armv7-linux-androideabi x86_64-linux-android
rustup target add aarch64-apple-ios \
x86_64-apple-ios aarch64-apple-ios-sim
 
# Install build tools
cargo install cargo-ndk cargo-lipo uniffi-bindgen-cli
 
# Clone the repository
git clone https://github.com/scottdaly/evern.git
cd evern/core
 
# Build for Android (outputs .so to jniLibs)
cargo ndk -t arm64-v8a -t armeabi-v7a \
-t x86_64 \
-o ../android/app/src/main/jniLibs \
build --release
 
# Build for iOS (universal framework)
cargo lipo --release
 
# Generate UniFFI bindings
uniffi-bindgen generate \
evern-core/src/evern_core.udl \
--language kotlin \
--out-dir ../android/app/src/main/kotlin/
uniffi-bindgen generate \
evern-core/src/evern_core.udl \
--language swift \
--out-dir ../ios/Evern/Bridge/
 
# Run Rust core tests
cargo test -p evern-core

After building the Rust core, open the Android project in Android Studio (android/) or the iOS project in Xcode (ios/Evern.xcodeproj) to build and run on an emulator or device. See Architecture > Building from Source for platform-specific setup details and common build errors.

Contributing

Evern is licensed under Apache 2.0. Contributions are welcome — especially Layer 2 parsers for additional AI agents, terminal palette definitions, and platform-specific fixes. See the GitHub repository for open issues and contribution guidelines.

The project uses GitHub Actions for CI. The rust-core.yml workflow builds the Rust core for all targets, runs tests, generates UniFFI bindings, and runs Kotlin/Swift runtime smoke tests. Pull requests require all checks to pass before merging.