|
1 | 1 | # Xe Launcher |
2 | 2 |
|
3 | | -Xe Launcher is a desktop application designed to simplify the experience of running Isolated Web Apps (IWAs) locally. It aims to unlock user agency through controlled frames and local-first applications, making IWAs more accessible to developers and users. |
| 3 | +Xe Launcher is a desktop application designed to simplify the experience of running Isolated Web Apps (IWAs) and cloud-native development environments locally. It provides integrated support for Chrome management, container orchestration via Podman, and Cloudflare Workers development through workerd, making modern web development more accessible. |
4 | 4 |
|
5 | | -## Current Features |
| 5 | +## Features |
6 | 6 |
|
| 7 | +### Core Features |
7 | 8 | - ✅ Auto-start with system boot |
8 | 9 | - ✅ Automatic updates via CrabNebula CDN |
9 | | -- ✅ Basic Chrome launching capabilities |
10 | | -- ✅ Dedicated Chrome profile management for IWAs |
11 | | -- ✅ Bun sidecar bundled |
12 | | -- ✅ Git support (for cloning repos) |
13 | | -- WIP - Support for `.swbn` and `.wbn` file associations |
14 | | -- WIP - Cross-platform support (macOS, Windows, Linux) - currently only macOS |
15 | | - |
16 | | -## Planned Features |
17 | | - |
18 | | -- Installation of IWAs from files and URLs (dev mode) |
19 | | -- IWA management and tracking |
20 | | -- Shortcut management |
21 | | -- IWA verification and security features |
22 | | -- Chrome extension integration |
23 | | -- Community-curated IWA list |
24 | | -- Boot-time IWA launching |
25 | | -- Source-based IWA building |
26 | | -- IWA update management |
| 10 | +- ✅ System tray integration |
| 11 | +- ✅ Cross-platform support (macOS, Windows, Linux) - currently optimized for macOS |
| 12 | + |
| 13 | +### Chrome Management Plugin |
| 14 | +- ✅ Launch Chrome with custom profiles for IWA development |
| 15 | +- ✅ Dedicated Chrome profile management |
| 16 | +- ✅ Remote debugging support (port 9222) |
| 17 | +- ✅ IWA development mode flags enabled |
| 18 | +- ✅ Process lifecycle management |
| 19 | + |
| 20 | +### Podman Integration Plugin |
| 21 | +- ✅ Container management UI |
| 22 | +- ✅ Podman machine status monitoring |
| 23 | +- ✅ Container creation, start, stop, and removal |
| 24 | +- ✅ Real-time container logs streaming |
| 25 | +- ✅ Container state management |
| 26 | +- ✅ Built-in Podman binaries (no separate installation required) |
| 27 | + |
| 28 | +### Workerd Plugin (Cloudflare Workers Runtime) |
| 29 | +- ✅ Local Cloudflare Workers development |
| 30 | +- ✅ Worker project creation and management |
| 31 | +- ✅ Start/stop worker instances |
| 32 | +- ✅ Real-time worker status monitoring |
| 33 | +- ✅ Port management (8080-8199 range) |
| 34 | +- ✅ Worker logs viewing |
| 35 | +- ✅ Automatic workerd installation |
| 36 | +- ✅ Delete worker projects with confirmation |
| 37 | + |
| 38 | +### Development Tools |
| 39 | +- ✅ Bundled Bun runtime for JavaScript/TypeScript |
| 40 | +- ✅ Git integration for repository cloning |
| 41 | +- ✅ Project dependency management (bun install) |
| 42 | +- ✅ Development server management (bun dev) |
| 43 | +- ✅ Integrated terminal output |
| 44 | + |
| 45 | +## Architecture |
| 46 | + |
| 47 | +The application is built with: |
| 48 | +- **Frontend**: React + TypeScript + Vite |
| 49 | +- **Backend**: Rust with Tauri v2 |
| 50 | +- **Plugins**: Modular architecture with separate plugins for Chrome, Podman, and workerd |
| 51 | + |
| 52 | +### Plugin Structure |
| 53 | +Each plugin follows a consistent pattern: |
| 54 | +- Rust backend with command definitions |
| 55 | +- JavaScript/TypeScript API bindings |
| 56 | +- Permissions system for security |
| 57 | +- React components for UI integration |
27 | 58 |
|
28 | 59 | ## Development Setup |
29 | 60 |
|
30 | | -1. Install dependencies: |
| 61 | +### Prerequisites |
| 62 | +- [Bun](https://bun.sh/) (for package management and runtime) |
| 63 | +- [Rust toolchain](https://rustup.rs/) (for Tauri) |
| 64 | +- Node.js 18+ (for development tools) |
| 65 | + |
| 66 | +### Installation |
| 67 | + |
| 68 | +1. Clone the repository: |
| 69 | +```bash |
| 70 | +git clone https://github.com/agent54/xe-launcher.git |
| 71 | +cd xe-launcher |
| 72 | +``` |
| 73 | + |
| 74 | +2. Install dependencies: |
31 | 75 | ```bash |
32 | 76 | bun install |
33 | 77 | ``` |
34 | 78 |
|
35 | | -2. Start the development environment: |
| 79 | +3. Start the development environment: |
36 | 80 | ```bash |
37 | 81 | bun tauri dev |
38 | 82 | ``` |
39 | 83 |
|
40 | | -## Latest Release |
| 84 | +### Building for Production |
| 85 | + |
| 86 | +```bash |
| 87 | +bun tauri build |
| 88 | +``` |
| 89 | + |
| 90 | +The built application will be in `src-tauri/target/release/bundle/`. |
| 91 | + |
| 92 | +## Plugin Development |
| 93 | + |
| 94 | +### Creating a New Plugin |
| 95 | + |
| 96 | +1. Generate plugin scaffold: |
| 97 | +```bash |
| 98 | +cd tauri-plugin-yourplugin |
| 99 | +cargo init |
| 100 | +``` |
| 101 | + |
| 102 | +2. Add the plugin to the main app: |
| 103 | + - Add to `src-tauri/Cargo.toml` dependencies |
| 104 | + - Add to `package.json` dependencies |
| 105 | + - Initialize in `src-tauri/src/lib.rs` |
| 106 | + - Add permissions to `src-tauri/capabilities/default.json` |
| 107 | + |
| 108 | +3. Create JavaScript bindings in `guest-js/index.js` |
41 | 109 |
|
42 | | -You can download the latest release from our [GitHub Releases](https://github.com/agent54/xe-launcher/releases/latest) page. |
| 110 | +4. Build and test the plugin |
43 | 111 |
|
44 | | -## Project Status |
| 112 | +## Usage |
45 | 113 |
|
46 | | -This project is currently in active development. While core features like auto-start and updates are working, many planned features for IWA management are still in development. The current focus is on establishing a stable foundation for the launcher before implementing the full IWA installation and management capabilities. |
| 114 | +### Chrome Management |
| 115 | +- Launch Chrome with IWA development flags |
| 116 | +- Manage Chrome processes |
| 117 | +- Access remote debugging tools |
47 | 118 |
|
48 | | -## Requirements |
| 119 | +### Container Development (Podman) |
| 120 | +1. Ensure Podman machine is initialized (handled automatically on macOS) |
| 121 | +2. Create and manage containers through the UI |
| 122 | +3. View real-time logs |
| 123 | +4. Start/stop containers as needed |
49 | 124 |
|
50 | | -- Bun (for development) |
51 | | -- Rust toolchain (for Tauri) |
52 | | -- Chrome/Chromium (for running IWAs) |
| 125 | +### Cloudflare Workers Development |
| 126 | +1. Create a new worker project |
| 127 | +2. Edit the worker script in `workers/{project-name}/worker.js` |
| 128 | +3. Start the worker to test locally |
| 129 | +4. Access at `http://localhost:{assigned-port}` |
| 130 | +5. View logs and manage worker lifecycle |
| 131 | + |
| 132 | +## Configuration |
| 133 | + |
| 134 | +The app stores configuration and data in platform-specific locations: |
| 135 | +- **macOS**: `~/Library/Application Support/com.agent54.xe-launcher/` |
| 136 | +- **Windows**: `%APPDATA%\com.agent54.xe-launcher\` |
| 137 | +- **Linux**: `~/.config/com.agent54.xe-launcher/` |
| 138 | + |
| 139 | +## Security |
| 140 | + |
| 141 | +- All plugins use Tauri's permission system |
| 142 | +- File system access is scoped and restricted |
| 143 | +- External process execution requires explicit permissions |
| 144 | +- Network access is controlled per plugin |
| 145 | + |
| 146 | +## Troubleshooting |
| 147 | + |
| 148 | +### Common Issues |
| 149 | + |
| 150 | +1. **Workerd not found**: Click "Download Workerd" in the UI |
| 151 | +2. **Podman machine not running**: The app will attempt to start it automatically |
| 152 | +3. **Port conflicts**: Workers use ports 8080-8199; ensure these are available |
| 153 | +4. **Chrome launch fails**: Ensure Chrome is installed in the default location |
| 154 | + |
| 155 | +### Debug Mode |
| 156 | + |
| 157 | +Run with debug output: |
| 158 | +```bash |
| 159 | +RUST_LOG=debug bun tauri dev |
| 160 | +``` |
| 161 | + |
| 162 | +## Latest Release |
| 163 | + |
| 164 | +Download the latest release from our [GitHub Releases](https://github.com/agent54/xe-launcher/releases/latest) page. |
53 | 165 |
|
54 | 166 | ## Contributing |
55 | 167 |
|
56 | | -Contributions are welcome! Check the TODO list in the repository for areas where help is needed. |
| 168 | +We welcome contributions! Please check: |
| 169 | +- [TODO.md](TODO.md) for planned features |
| 170 | +- [Issues](https://github.com/agent54/xe-launcher/issues) for bug reports and feature requests |
| 171 | +- [Pull Requests](https://github.com/agent54/xe-launcher/pulls) for ongoing work |
| 172 | + |
| 173 | +### Development Guidelines |
| 174 | +1. Follow the existing code style |
| 175 | +2. Add tests for new features |
| 176 | +3. Update documentation |
| 177 | +4. Test on multiple platforms when possible |
57 | 178 |
|
58 | | -To get involved checkout https://userandagents.com and join our [Discord](https://discord.gg/mtEwuEZQ5x). |
| 179 | +## Community |
| 180 | + |
| 181 | +Join the User & Agents community: |
| 182 | +- Website: https://userandagents.com |
| 183 | +- Discord: https://discord.gg/mtEwuEZQ5x |
59 | 184 |
|
60 | 185 | ## License |
61 | 186 |
|
62 | | -MIT |
| 187 | +MIT License - see [LICENSE](LICENSE) file for details |
| 188 | + |
| 189 | +## Acknowledgments |
63 | 190 |
|
| 191 | +- Built with [Tauri](https://tauri.app/) |
| 192 | +- Chrome integration via custom plugin |
| 193 | +- Container support via [Podman](https://podman.io/) |
| 194 | +- Workers runtime via [workerd](https://github.com/cloudflare/workerd) |
| 195 | +- JavaScript runtime via [Bun](https://bun.sh/) |
0 commit comments