A native tray application for managing the Endara Relay. Lives in your menu bar, keeps the relay running, and gives you a clean UI to monitor endpoints, browse tools, and view logs.
Endara Desktop is a lightweight system tray application that wraps the Endara Relay — an MCP (Model Context Protocol) relay server that aggregates multiple MCP tool servers behind a single endpoint.
Instead of running the relay manually from a terminal, Endara Desktop gives you a single install that manages everything. It bundles the relay binary as a Tauri sidecar, automatically starts it on launch, monitors its health, restarts it if it crashes, and kills it cleanly on quit.
The app provides a visual interface for everything the relay exposes: endpoint health at a glance, a searchable tool browser, real-time log output, and configuration inspection — all from a compact tray-app UI inspired by Tailscale.
Download the latest release from GitHub Releases.
| Platform | Format | File |
|---|---|---|
| 🍎 macOS | DMG installer | Endara_x.x.x_aarch64.dmg |
| 🪟 Windows | Setup installer | Endara_x.x.x_x64-setup.exe |
| 🪟 Windows | MSI installer | Endara_x.x.x_x64_en-US.msi |
| 🐧 Linux | Debian package | endara_x.x.x_amd64.deb |
| 🐧 Linux | AppImage | Endara_x.x.x_amd64.AppImage |
Or build from source if you prefer.
| Shortcut | Action |
|---|---|
⌘K |
Open global search |
⌘, |
Open settings |
Esc |
Go back / close panel |
Endara Desktop is a Tauri 2 application with two layers:
┌─────────────────────────────────┐
│ SvelteKit Frontend │
│ (Svelte 5 + Tailwind CSS 4) │
│ │
│ Sidebar ←→ Detail Panel │
│ (endpoints) (tools/logs/cfg) │
└────────────┬────────────────────┘
│ Tauri IPC
┌────────────▼────────────────────┐
│ Tauri Backend (Rust) │
│ │
│ Commands: start / stop / │
│ restart / status │
│ │
│ Sidecar ──→ endara-relay │
│ (bundled binary) │
└─────────────────────────────────┘
Backend (Rust): Manages the relay as a sidecar process — spawning, monitoring stdout/stderr, handling crashes with auto-restart, and clean shutdown on exit. Exposes four Tauri commands: start_relay, stop_relay, restart_relay, and relay_status.
Frontend (SvelteKit): Talks to the relay's management API to fetch endpoint status, tools, logs, and configuration. The UI is composed of 12 Svelte components organized around a sidebar + detail panel layout.
cargo install tauri-cli --version "^2"# Clone the repository
git clone https://github.com/endara-ai/endara-desktop.git
cd endara-desktop
# Install frontend dependencies
npm install
# Start the dev server with hot-reload
cargo tauri dev
Tauri expects the relay binary at src-tauri/binaries/endara-relay-{target-triple} (e.g., endara-relay-aarch64-apple-darwin). A helper script is provided:
# Copy a locally-built relay binary into the correct sidecar location
./scripts/copy-sidecar.sh /path/to/endara-relay
cargo tauri build
This produces platform-specific installers in src-tauri/target/release/bundle/:
.dmg in bundle/dmg/-setup.exe in bundle/nsis/, .msi in bundle/msi/.deb in bundle/deb/, .AppImage in bundle/appimage/packages/desktop/
├── src/
│ ├── routes/ # SvelteKit routes
│ │ ├── +layout.svelte # Root layout
│ │ └── +page.svelte # Main page
│ ├── lib/
│ │ ├── components/ # 12 Svelte UI components
│ │ │ ├── Sidebar.svelte # Left panel — endpoint list + status
│ │ │ ├── DetailPanel.svelte # Right panel — tabbed endpoint details
│ │ │ ├── ToolsTab.svelte # Tool browser with search
│ │ │ ├── LogsTab.svelte # Real-time log viewer
│ │ │ ├── ConfigTab.svelte # Configuration viewer
│ │ │ ├── SearchBar.svelte # Global search (⌘K)
│ │ │ ├── Settings.svelte # App settings panel
│ │ │ ├── EndpointRow.svelte # Individual endpoint in sidebar
│ │ │ ├── HealthDot.svelte # Health status indicator
│ │ │ ├── TransportBadge.svelte # Transport type badge (STDIO/SSE/HTTP)
│ │ │ ├── ConfirmModal.svelte # Confirmation dialogs
│ │ │ └── MiniPlayer.svelte # Compact endpoint status view
│ │ ├── api.ts # API client for relay management
│ │ ├── stores.ts # Svelte stores for app state
│ │ ├── types.ts # TypeScript type definitions
│ │ └── mock.ts # Mock data for development
│ ├── app.css # Global styles (Tailwind)
│ └── app.html # HTML shell
├── src-tauri/
│ ├── src/
│ │ ├── lib.rs # Tauri backend — sidecar lifecycle + commands
│ │ └── main.rs # Entry point
│ ├── tauri.conf.json # Tauri config (bundling, updater, sidecar)
│ ├── capabilities/default.json # Permissions (shell, updater)
│ ├── binaries/ # Relay sidecar binary (not committed)
│ └── icons/ # App icons for all platforms
├── scripts/
│ └── copy-sidecar.sh # Helper to copy relay binary for bundling
├── package.json
└── LICENSE # Apache-2.0
Releases are automated via GitHub Actions. The desktop release depends on Endara Relay — the relay must be released first so the desktop can download its binaries.
v0.1.0)git tag v0.1.0 && git push origin v0.1.0src-tauri/binaries/endara-relay-{target_triple}You can pin to a specific relay version by triggering the workflow manually with the relay_version input (defaults to latest).
On every push and PR, the CI workflow runs:
cargo check on the Tauri backend)Contributions are welcome! Here's how to get started:
git checkout -b feat/my-feature)cargo tauri devgit commit -m 'feat: add my feature')git push origin feat/my-feature)Please make sure npm run check passes before submitting.
Licensed under the Apache License, Version 2.0.
Copyright 2025 Endara
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.