How goncharik/hermes-mobile works
Hermes Mobile is a native iPhone/iPad companion for a self-hosted Hermes Agent; agent execution remains on the server. The principal workflow is to connect and authenticate, browse or create a session, then send prompts and follow streamed responses while handling approvals. Separate branches cover profile and session administration, archived sessions, scheduled jobs, settings, and push notifications. The graph reflects documented capabilities and indexed references; unsampled feature internals and some wiring are intentionally not asserted.
Main entry points: SessionListFeature.swift Session management · SessionListView.swift Session list UI · ChatScreen.swift Chat interface · ChatFeature.swift Chat workflow
Components 23
Mobile experience
- App shell
HermesMobile/Sources/AppView.swift - Session list UI
HermesMobile/Sources/Features/SessionListView.swift - Session row
HermesMobile/Sources/Features/SessionRowView.swift - Settings
HermesKit/Sources/HermesKit/Features/SettingsFeature.swift - Chat interface
HermesKit/Sources/HermesKit/Features/ChatScreen.swift - Transcript renderer
HermesMobile/Sources/Features/Chat/Transcript/CollectionTranscriptView.swift
Sessions and profiles
- Session management
HermesKit/Sources/HermesKit/Features/SessionListFeature.swift - Archived sessions
HermesKit/Sources/HermesKit/Features/ArchivedSessionsFeature.swift - Profile management
HermesKit/Sources/HermesKit/Features/AddProfileFeature.swift - Scheduled jobs
HermesKit/Sources/HermesKit/Models/CronJob.swift
Live conversation
- Chat workflow
HermesKit/Sources/HermesKit/Features/ChatFeature.swift - Transcript rows
HermesKit/Sources/HermesKit/Models/ChatRow.swift
Connection and services
- Connection flow
HermesKit/Sources/HermesKit/Features/ConnectionFeature.swift - Reauthentication
HermesKit/Sources/HermesKit/Features/ReauthFeature.swift - OAuth login
HermesKit/Sources/HermesKit/Clients/OAuthLoginClient.swift - Callback listener
HermesKit/Sources/HermesKit/Clients/LoopbackCallbackListener.swift - REST API client
HermesKit/Sources/HermesKit/Clients/HermesRESTClient.swift - WebSocket gateway
HermesKit/Sources/HermesKit/Clients/HermesGatewayClient.swift - User preferences
HermesKit/Sources/HermesKit/Clients/PreferencesClient.swift - Push notifications
HermesKit/Sources/HermesKit/Clients/PushClient.swift
Other components
- Mobile user
- Hermes Agent
- Apple Push service
Connections 26
- Mobile user → App shell: uses
- App shell → Connection flow: connects through
- Connection flow → REST API client: authenticates with
HermesKit/Sources/HermesKit/Features/ConnectionFeature.swift - Connection flow → OAuth login: offers OAuth
HermesKit/Sources/HermesKit/Features/ConnectionFeature.swift - OAuth login → Callback listener: starts listener
HermesKit/Sources/HermesKit/Clients/OAuthLoginClient.swift - OAuth login → REST API client: exchanges code
HermesKit/Sources/HermesKit/Clients/OAuthLoginClient.swift - Mobile user → Session list UI: browses
- Session list UI → Session management: sends actions
HermesMobile/Sources/Features/SessionListView.swift - Session management → REST API client: loads sessions
HermesKit/Sources/HermesKit/Features/SessionListFeature.swift - Session management → User preferences: reads preferences
HermesKit/Sources/HermesKit/Features/SessionListFeature.swift - Session management → Archived sessions: opens archive
HermesKit/Sources/HermesKit/Features/SessionListFeature.swift - Session management → Profile management: manages profiles
HermesKit/Sources/HermesKit/Features/SessionListFeature.swift - Session management → Push notifications: configures push
HermesKit/Sources/HermesKit/Features/SessionListFeature.swift - Session list UI → Session row: renders rows
HermesMobile/Sources/Features/SessionListView.swift - Mobile user → Chat interface: composes prompts
- Chat interface → Chat workflow: dispatches actions
- Chat workflow → WebSocket gateway: sends RPC
HermesKit/Sources/HermesKit/Features/ChatFeature.swift - WebSocket gateway → Hermes Agent: streams events
HermesKit/Sources/HermesKit/Clients/HermesGatewayClient.swift - Chat workflow → Transcript rows: builds transcript
HermesKit/Sources/HermesKit/Models/ChatRow.swift - Chat interface → Transcript renderer: renders transcript
HermesMobile/Sources/Features/Chat/Transcript/CollectionTranscriptView.swift - Transcript renderer → Transcript rows: displays rows
HermesMobile/Sources/Features/Chat/Transcript/CollectionTranscriptView.swift - Mobile user → Settings: configures app
- Settings → User preferences: stores options
HermesKit/Sources/HermesKit/Features/SettingsFeature.swift - Push notifications → Apple Push service: delivers notifications
- Apple Push service → Mobile user: alerts user
- Hermes Agent → Apple Push service: triggers alerts