The definitive GUI for Hermes Agent
Three ways to control your AI agent — desktop app, mobile app, and web dashboard
Hermes Wingman replaces the entire Hermes CLI with a beautiful, full-featured GUI — no terminal needed. It comes in three flavors that work together or independently:
| Edition | Stack | Use Case |
|---|---|---|
| Desktop App | Flutter + Rust backend | Power users, full control, system tray |
| Mobile App | Flutter (Android/iOS) | Remote control from anywhere on your LAN |
| Web Dashboard | Ruby on Rails 8 + Hotwire + Tailwind | Browser-based access, multi-user, cloud deployment |
Hermes Wingman handles everything hermes setup does — and more:
- Install & configure Hermes Agent
- Add API providers (OpenAI, Anthropic, xAI, Google, etc.)
- Login via OAuth (Nous, xAI)
- Switch models and probe provider connections
- Manage skills, memory, cron jobs, and gateway platforms
- Edit config.yaml with a live YAML editor
- Browse and edit workspace files
- Schedule autonomous AI missions
- Save and apply model presets
┌──────────────────────────────────────────────────────────────┐
│ Your Network │
│ │
│ ┌─────────────────────┐ HTTP API ┌────────────────┐ │
│ │ Flutter Desktop │ ◄─────────────► │ Rust Backend │ │
│ │ (Linux/macOS/Win) │ port 9120 │ (Axum server) │ │
│ └─────────────────────┘ └────────┬───────┘ │
│ │ │
│ ┌─────────────────────┐ │ │
│ │ Flutter Mobile │ ◄──── HTTP over LAN ────┘ │
│ │ (Android/iOS) │ │
│ └─────────────────────┘ │
│ │ │
│ ┌─────────────────────┐ HTTP API │ │
│ │ Rails Web App │ ◄───────────────► │ │
│ │ (port 3000) │ proxies to :9120 │ │
│ └─────────────────────┘ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Hermes Agent CLI │ │
│ │ (OAuth, fallback)│ │
│ └──────────────────┘ │
└──────────────────────────────────────────────────────────────┘
- Rust Backend runs on a desktop/server and exposes a REST API on port 9120. It auto-binds to
0.0.0.0so any device on your LAN can connect. - Flutter Desktop App talks to the backend via localhost. Full system tray integration with minimize-to-tray.
- Flutter Mobile App auto-discovers the backend on your LAN (no manual IP entry). Scans the subnet for port 9120.
- Rails Web Dashboard proxies through the Rust backend, giving you browser-based access from any device.
- The backend makes direct API calls to providers (OpenAI, Anthropic, llama-swap) for fast streaming responses, or shells out to the Hermes CLI for OAuth-based providers (Nous, xAI).
# 1. Download the latest release for your platform
# 2. Run it — the app auto-starts the Rust backend
# 3. Open Hermes Wingman → Setup → Follow the 3-step wizardThe setup wizard handles everything:
- Install Hermes Agent (if not already installed)
- Add a provider — pick OpenAI, Anthropic, xAI, or login via OAuth
- Pick your default model — and you're done. No CLI needed.
cd hermes_wingman_web
# Install dependencies
bundle install
# Start the server
bin/rails server -b 0.0.0.0 -p 3000
# Open http://localhost:3000 in your browserThe web app connects to the Rust backend at http://127.0.0.1:9120. Set HERMES_BACKEND_URL env var to change this.
- Install the APK from the Releases page
- Open the app — it auto-scans your LAN for the desktop backend
- If auto-discovery fails, go to Config → Backend Connection and enter your desktop's IP
- Hermes Agent installed (the setup wizard handles this)
- For local models: llama-swap running on port 8080
- For the web app: Ruby 4.0+, Rails 8.1+, SQLite3
| Feature | Where | How |
|---|---|---|
| Add API provider | Setup or Config → Providers → Add | Enter name, API key, base URL, model |
| OAuth login | Setup → pick Nous/xAI | Runs hermes login nous in the backend |
| Switch model | Models tab | Click any model to switch immediately |
| Probe providers | Models tab → Probe button | Tests each provider's connection |
| Edit config.yaml | Config tab | Full syntax-highlighted YAML editor |
| Manage skills | Skills tab | Toggle skills on/off, search by name |
| Manage memory | Memory tab | View, search, delete memory entries |
| Browse files | Files tab | Read/edit files in ~/.hermes workspace |
| Cron jobs | Cron tab | Schedule recurring AI tasks |
| Gateway | Gateway tab | Connect Discord, Telegram, Signal, etc. |
| Missions | Missions tab | Define and run autonomous agent missions |
| Profiles | Profiles tab | Save/load model + config presets |
| Setup wizard | Setup tab | Step-by-step Hermes setup (replaces hermes setup) |
| Variable | Purpose |
|---|---|
BIND_ADDR |
Backend bind address (default: 127.0.0.1:9120, set to 0.0.0.0:9120 for LAN) |
HERMES_BACKEND_URL |
Rails webapp backend URL (default: http://127.0.0.1:9120) |
HERMES_TIMEOUT |
Backend request timeout in seconds (default: 10) |
Hermes Wingman ships with 29 hand-crafted themes — including 20 Greek god pantheon themes:
Retro: Synthwave '84, Synthwave Light, Outrun, Vaporwave, Cyberpunk Brand: Hermes (FLAGSHIP — deep teal + celestial gold) Pantheon: Zeus, Hera, Poseidon, Hades, Ares, Apollo, Artemis, Athena, Aphrodite, Dionysus, Demeter, Hephaestus, Hestia, Nyx, Eos, Hypnos, Iris, Tyche, Thanatos, Nemesis, Hecate Standard: Light, Dark
Every theme syncs across all three platforms — desktop, mobile, and web. Switch anytime from the sidebar palette icon.
| Feature | Desktop | Mobile | Web |
|---|---|---|---|
| Chat with streaming | ✅ | ✅ | ✅ |
| Model switching | ✅ | ✅ | ✅ |
| Provider management | ✅ | ✅ | ✅ |
| Config editor | ✅ | ✅ | ✅ |
| Skills browser | ✅ | ✅ | ✅ |
| Memory viewer | ✅ | ✅ | ✅ |
| File explorer | ✅ | ✅ | ✅ |
| Cron manager | ✅ | ✅ | ✅ |
| Gateway dashboard | ✅ | ✅ | ✅ |
| Session manager | ✅ | ✅ | ✅ |
| Live logs | ✅ | ✅ | ✅ |
| Mission conductor | ✅ | ✅ | ✅ |
| Profiles | ✅ | ✅ | ✅ |
| Webhooks | — | — | ✅ |
| Usage analytics | — | — | ✅ |
| Setup wizard | ✅ | ✅ | — |
| System tray | ✅ | — | — |
| LAN auto-discovery | — | ✅ | — |
| 29 themes | ✅ | ✅ | ✅ |
| Glass morphism UI | ✅ | ✅ | ✅ |
| Animated starfield | ✅ | — | ✅ |
git clone https://github.com/synthalorian/hermes-wingman.git
cd hermes-wingman
# Rust backend
cd backend && cargo build --release && cd ..
# Flutter desktop
flutter build linux --release
# Flutter mobile
flutter build apk --debug
# Rails web app
cd ../hermes_wingman_web
bundle install
bin/rails tailwindcss:build
bin/rails server -b 0.0.0.0 -p 3000The Android build requires JDK 21+. Set JAVA_HOME if needed:
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
flutter build apk --releaseiOS builds require macOS with Xcode 16+, an Apple Developer account, and CocoaPods:
cd ios && pod install && cd ..
flutter build ios --releasehermes_wingman/ # Flutter + Rust monorepo
├── lib/ # Flutter Dart source
│ ├── main.dart # App entry, splash screen, shell
│ ├── theme/ # Theme system, glass cards, animations
│ ├── screens/ # 15 screens (dashboard, chat, models, etc.)
│ ├── services/ # BackendService, HermesClient, ChatManager
│ ├── models/ # Hermes data models
│ └── widgets/ # WingmanIcon, reusable components
├── backend/ # Rust Axum server
│ └── src/main.rs # 2,350+ line backend with 40+ API endpoints
├── android/ # Android platform files
├── ios/ # iOS platform files
├── linux/ # Linux platform files
├── macos/ # macOS platform files
├── windows/ # Windows platform files
└── assets/ # Icons, images
hermes_wingman_web/ # Ruby on Rails 8 web dashboard
├── app/
│ ├── controllers/ # 24 controllers (RESTful + Turbo)
│ ├── views/ # 22 view directories + layouts
│ ├── services/ # HermesApiService (proxies to Rust backend)
│ ├── models/ # Profile, Mission, Webhook, etc.
│ └── assets/tailwind/ # 30-theme CSS system with glass effects
├── config/routes.rb # All routes defined
└── db/migrate/ # SQLite schema
The Rails web app mirrors the Flutter app's functionality in the browser:
Tech stack: Ruby on Rails 8.1 + Hotwire/Turbo + Tailwind CSS v4 + SQLite Port: 3000 (configurable) Themes: Same 30-theme CSS custom property system as the Flutter app Backend: Proxies all requests to the Rust backend at port 9120
All 24 controllers map to features in the Flutter desktop app:
DashboardController, ChatController, ModelsController, SessionsController,
SkillsController, MemoryController, FilesController, ConfigController,
LogsController, CronController, GatewayController, SetupController,
ToolsController, InspectorController, MissionsController,
OrchestrationController, ProfilesController, WebhooksController,
UsageController, ThemeController, ProvidersController, ApiController,
HermesController
See CONTRIBUTING.md for the full guide.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing) - Keep
dart analyzeclean (zero errors) - Keep
flutter buildandcargo buildpassing - Open a Pull Request
# Clone
git clone https://github.com/synthalorian/hermes-wingman.git
cd hermes-wingman
# Start the Rust backend
BIND_ADDR=0.0.0.0:9120 backend/target/release/hermes-wingman-backend &
# Run Flutter in debug mode
flutter run
# Or run the Rails web app
cd ../hermes_wingman_web && bin/rails serverIf Hermes Wingman helps you work faster, smoother, or cooler — consider buying me a coffee!
MIT License — see LICENSE for details.
Made by synthalorian with synthclaw — a digital entity from the neon grid of 1984.
This is the wave. 🎹🦞🌆