Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Agent54/xe-launcher

Repository files navigation

Xe Launcher

A plugin-based desktop launcher built with Tauri. Part of the Xenon project. Compile exactly the tools you need with 0.9s incremental builds.

What is this?

A minimal desktop shell that hosts functionality through plugins. Instead of building monolithic apps, create focused plugins that compile into a custom launcher. Think of it as a bootloader for desktop tools.

Key features:

  • ⚡ 0.9s incremental builds
  • 🔌 Plugin-based architecture (compile only what you need)
  • 🤖 Built-in MCP server for AI agent integration
  • 📦 Native tool support via sidecars
  • 🎯 ~5MB base size, grows only with active plugins

About

Xe Launcher is part of the Xenon project ecosystem, developed by the Agent54 organization. It provides a modern, plugin-based approach to desktop tools and automation.

Repository: https://github.com/agent54/xe-launcher

Quick Start

# Prerequisites: Bun + Rust
bun install

# For fresh checkouts only: sync plugin binaries
bun manage-sidecars sync

# Run with specific plugins (fast builds)
bun dev:settings      # Just settings plugin
bun dev:none          # No plugins (minimal)
bun dev:tauri         # All plugins

# Create a new plugin (prompts for JS/TS)
bun create-plugin my-tool

Project Structure

├── apps/desktop/          # Tauri shell
├── plugins/               # Plugin modules
│   ├── registry.json      # Plugin manifest (source of truth)
│   └── tauri-plugin-*/    # Individual plugins
└── docs/                  # Documentation

Core Concepts

  • Plugins are Cargo features - Conditional compilation, not dynamic loading
  • Registry drives everything - One JSON file controls the entire system
  • Three-tier control - Registry → Build → Runtime

Documentation

Available Plugins

Core Plugins

Plugin Description Default Enabled Sidecar
settings Manage application settings -
system-info Display system information -

Tool Plugins

Plugin Description Default Enabled Sidecar
🍞 bun JavaScript runtime integration with Bun support
☁️ cloudflare Manage Workers, KV, D1, R2, and DNS from the XE Launcher
curl Make HTTP requests using curl
🦕 deno Run Deno scripts with comprehensive permission management and developer tools
iwa-tools Generate keys, create, bundle, and verify Isolated Web Apps (IWAs)
mouse-trap Monitor mouse enter/leave events in screen regions for creating invisible triggers and hot corners
🦙 ollama Local LLM integration with Ollama - chat, generate text, and manage models
podman Container management with Podman
🔌 usb-info View connected USB devices with vendor ID, product ID, and connection status
workerd Cloudflare Workers runtime integration for local edge computing development

Experimental Plugins

Plugin Description Default Enabled Sidecar
chrome-manager Manage Chrome browser instances and Isolated Web Apps - -

Development

# Plugin management
bun plugin:list               # Show all plugins
bun plugin:enable my-tool     # Enable in registry
bun manage-sidecars sync      # Sync native binaries

# Building
bun run build:tauri           # Production build

Releases

Creating a Release

We use a release script to automate version bumping and tagging:

# Bump version and create tag
./release.sh 0.2.11

# This will:
# 1. Update version in all config files
# 2. Commit the changes
# 3. Create a git tag
# 4. Push to GitHub (triggers release workflow)

The GitHub Actions workflow automatically:

  • Builds for all platforms (macOS, Windows, Linux)
  • Creates a draft release with artifacts
  • Generates update manifests for auto-updates

Publishing a Release

After the workflow completes (~10-15 minutes):

# Publish the draft release
gh release edit v0.2.11 --draft=false --latest

Auto-Updates

The app checks for updates automatically. Users can:

  1. Check for updates in Settings → Updates
  2. Download and install with one click
  3. App restarts automatically (or prompts to restart)

Update endpoint: https://github.com/Agent54/xe-launcher/releases/latest/download/latest.json

Why This Approach?

Traditional plugin systems require choosing between dynamic loading (security risks, performance overhead) or static compilation (inflexible). We chose a third way: conditional compilation with runtime control.

Result: The security and performance of static compilation with the flexibility of dynamic systems.


Built with Tauri + SvelteKit + Bun

About

v2 using svelte and with enhanced plugin management and mcp

Resources

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •