Docs

Doc / build-macos



Build OmniEdge for macOS

OmniEdge v2.x is built with Rust and Tauri. This guide covers building both the CLI and Desktop applications on macOS.

Supported Versions

  • macOS 11 Big Sur or later
  • Apple Silicon (M1/M2/M3/M4) and Intel Macs

Prerequisites

Install Xcode Command Line Tools

xcode-select --install

Install Rust Toolchain

# Install Rust (1.70+ required)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Verify
rustc --version  # Should be 1.70+
cargo --version

Install Node.js (for Desktop)

# Using Homebrew
brew install node

# Or using nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.zshrc
nvm install 20
nvm use 20

# Verify
node --version  # Should be 18+
npm --version

Build CLI

Clone and Build

git clone https://github.com/omniedgeio/omniedge.git
cd omniedge

# Build CLI in release mode
cargo build --release -p omni-cli

# Binary location
ls -la target/release/omniedge

Install CLI

# Install to /usr/local/bin
sudo cp target/release/omniedge /usr/local/bin/

# Verify
omniedge --version

Build for Both Architectures (Universal Binary)

# Add both targets
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin

# Build for each
cargo build --release -p omni-cli --target x86_64-apple-darwin
cargo build --release -p omni-cli --target aarch64-apple-darwin

# Create universal binary
lipo -create \
    target/x86_64-apple-darwin/release/omniedge \
    target/aarch64-apple-darwin/release/omniedge \
    -output omniedge-universal

# Verify
file omniedge-universal
# Should show: Mach-O universal binary with 2 architectures

Build Desktop Application

Build Desktop

cd apps/desktop

# Install npm dependencies
npm install

# Build Tauri app (creates .dmg)
npm run tauri build

Build Output

Installers are created in apps/desktop/src-tauri/target/release/bundle/:

FormatLocation
DMGbundle/dmg/OmniEdge_*.dmg
App Bundlebundle/macos/OmniEdge.app

Build for Both Architectures

cd apps/desktop

# Build for Intel
npm run tauri build -- --target x86_64-apple-darwin

# Build for Apple Silicon
npm run tauri build -- --target aarch64-apple-darwin

Development Mode

CLI Development

# Run CLI in debug mode
cargo run -p omni-cli -- --help

# Run with arguments
cargo run -p omni-cli -- status

Desktop Development

cd apps/desktop

# Start development server with hot reload
npm run tauri dev

Testing

# Run all tests
cargo test

# Run specific crate tests
cargo test -p omni-cli
cargo test -p omni-tun

Code Signing (For Distribution)

Developer ID Signing

For distributing outside the App Store:

  1. Obtain a "Developer ID Application" certificate from Apple Developer
  2. Configure Tauri for signing:

Edit apps/desktop/src-tauri/tauri.conf.json:

{
  "bundle": {
    "macOS": {
      "signingIdentity": "Developer ID Application: Your Name (TEAM_ID)",
      "entitlements": "./Entitlements.plist"
    }
  }
}

Notarization

Apple requires notarization for apps distributed outside the App Store:

# After building, notarize the app
xcrun notarytool submit apps/desktop/src-tauri/target/release/bundle/dmg/OmniEdge_*.dmg \
    --apple-id "your@email.com" \
    --password "app-specific-password" \
    --team-id "TEAM_ID" \
    --wait

Entitlements

Create apps/desktop/src-tauri/Entitlements.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.network.server</key>
    <true/>
</dict>
</plist>

Troubleshooting

Gatekeeper Blocks App

When running an unsigned development build:

  1. Right-click the app and select "Open"
  2. Or: System Settings → Privacy & Security → "Open Anyway"

TUN Interface Permissions

OmniEdge uses the native utun interface. It requires admin privileges:

sudo omniedge start

Rosetta on Apple Silicon

If building or running Intel binaries on Apple Silicon:

# Install Rosetta (if not installed)
softwareupdate --install-rosetta

If you have more questions, feel free to discuss.

On This Page

OmniEdge

© 2026 OmniEdge Inc. All rights reserved

Built by a global remote team.

TwitterGithubDiscord