A native iOS client for Hermes Agent. Free, no ads, no tracking.
Conduit connects directly to your self-hosted Hermes dashboard. Same sessions, same profiles, same capabilities as the desktop client. No relay service, no extra processes, no middleman.
Start a conversation on desktop, pick it up on your phone. The session list is the same because it is the same database.
- Streaming chat with full Markdown (code blocks, math, Mermaid, task lists)
- Tool call inspection and reasoning traces
- Voice mode with push-to-talk, on-device speech recognition, server-side Whisper
- Image, PDF, and text attachments
- Model switching and reasoning effort controls
- Slash commands and workspace file browsing
- Session branching, pinning, and archiving
- Capabilities tab to toggle skills, tools, and MCP servers
- Scheduled jobs viewer and connector monitoring
- Multi-profile support with per-profile settings
- Push notifications for approvals, completed turns, failures, and background tasks
- Inline approvals so you can approve or reject tool calls without typing
- Face ID lock and credential storage
- iOS 17 or later
- iPhone or iPad
- A running Hermes Agent instance with the native dashboard enabled (default port 9119)
- Make sure your Hermes dashboard is running. If you are not sure, ask your agent:
is the dashboard running? - Find your dashboard address. It is usually
http://your-server-ip:9119. - Open Conduit and enter that address on the login screen.
- Log in with your dashboard credentials.
Note: Conduit connects to the native Hermes dashboard, not the WebUI. The default port is 9119.
If your server is not on your local network, use Tailscale or a reverse proxy to reach it from your phone. Plain HTTP over Tailscale (MagicDNS .ts.net domains and 100.64.0.0/10 tailnet IPs) is supported — the traffic is already WireGuard-encrypted.
If the dashboard is behind Cloudflare Access, enable the optional service token on the login screen or in Settings > Connection > Gateway. Conduit stores the client secret in Keychain (scoped to the gateway origin), and injects both Access headers into native authentication requests, WebSocket handshakes, and all in-page WebKit fetches via a document-start user script. Credentials are bound to the gateway URL and cleared when switching to a different host.
Push notifications require a small relay service because iOS does not allow apps to maintain persistent background connections. The relay source is in the hermes-conduit-notifier plugin and the push relay server.
To set up push notifications, install the notifier plugin on your Hermes instance:
hermes plugins install kaishi00/hermes-conduit-notifier --enable
hermes gateway restart
Then follow the in-app pairing flow under Settings > Notifications.
The app uses a shared relay by default (push.milim.dev) so notifications work out of the box with no extra setup. If you prefer to run your own relay, enter its URL under Settings > Notifications > Push relay.
git clone https://github.com/kaishi00/hermes-conduit.git
cd hermes-conduit
brew install xcodegen
xcodegen generate
open Conduit.xcodeproj
Select your team in Signing & Capabilities, then build and run on your device.
Requirements:
- Xcode 16 or later
- iOS 17 SDK
- xcodegen
Conduit is pure SwiftUI targeting iOS 17+. The project uses xcodegen for Xcode project generation from project.yml.
The app connects to the Hermes dashboard WebSocket endpoint (/api/ws) after authenticating through the dashboard login page. All RPC calls route through the dashboard, same as the desktop client. The gateway is never contacted directly.
Key files:
Conduit/Services/HermesClient.swift- WebSocket client and RPC layerConduit/Services/AppState.swift- Main state management and session lifecycleConduit/Services/DashboardTicketBridge.swift- Authentication bridgeConduit/Views/ChatView.swift- Chat interface with streamingConduit/Voice/- Voice mode pipeline
Conduit does not collect, transmit, or store your data on any third-party server. All communication goes directly between the app and your own Hermes instance. The only external connection is the optional push relay, which you control and can self-host.
No analytics. No telemetry. No ad frameworks.
MIT
Hermes Conduit is an independent project and is not affiliated with or endorsed by Nous Research.