docs: initial Hermes Mobile planning scaffold

This commit is contained in:
Hermes Agent
2026-07-09 03:45:48 +00:00
commit 2cd4730324
14 changed files with 2139 additions and 0 deletions
+250
View File
@@ -0,0 +1,250 @@
# Product Plan
## Working Name
Hermes Mobile
## One-line Pitch
A private Android-first app for talking to Hermes Agent with voice, files, live tool calls, approvals, cron controls, and completion notifications.
## Target User
Primary: Zeb / homelab power user who already runs Hermes Agent on a Linux machine and wants a better phone interface than Telegram.
Secondary later:
- Developers running Hermes locally/remotely
- Homelab admins
- People who want an agent command center rather than a chatbot
## Non-goals
- Not a generic OpenAI chat frontend.
- Not a multi-provider model playground.
- Not a public SaaS.
- Not a replacement for Hermes Agent internals.
- Not a Matrix/Discord/Telegram clone.
## Design Principles
1. Agent-first, not chat-first
- The UI should show what Hermes is doing, not just the final response.
- Tool calls are first-class objects.
2. Phone-native ergonomics
- Thumb-reachable controls.
- Large tap targets.
- Voice and upload actions always nearby.
- Background task status survives app close/reopen.
3. Private by default
- Self-hosted companion server.
- Local uploads.
- Optional LAN/Tailscale-only mode.
- No third-party notification requirement unless chosen.
4. Modular integrations
- Hermes CLI bridge now.
- Hermes API bridge where useful.
- Direct Python/event bridge later.
- Notification providers swappable.
5. Install should feel boring
- One command.
- Clear service status.
- Easy update/uninstall.
## Core Screens
### 1. Home / Ask
Purpose: send a prompt fast.
Features:
- Text box with multiline support
- Hold-to-record voice note
- Attach button
- Model/session selector compact chip
- “New task” vs “continue session” toggle
- Streaming answer
- Activity timeline under/alongside answer
- Completion toast/push
### 2. Activity
Purpose: see active and recent agent runs.
Features:
- Running tasks
- Tool-call cards
- Logs/output previews
- Generated files
- Error states
- Stop/cancel if supported
### 3. Sessions
Purpose: browse/resume history.
Features:
- Recent conversations
- Search
- Rename/pin/archive
- Session metadata: platform, started, last active, tool count, attachments
### 4. Cron
Purpose: manage scheduled Hermes tasks from phone.
Features:
- Job list grouped by active/paused/completed
- Run now
- Pause/resume/remove
- Edit prompt/schedule later
- Last output viewer
- Delivery target setting: in-app inbox, push, Matrix/Telegram/etc.
### 5. Files
Purpose: manage uploaded/generated artifacts.
Features:
- Upload inbox
- Generated media/files from responses
- Download/share
- Link file into a new prompt
- Retention controls later
### 6. Approvals
Purpose: approve dangerous actions safely.
Features:
- Pending approvals queue
- Command/action preview
- Risk label
- Approve once / deny
- Expiry countdown
- Audit log
### 7. Settings
Purpose: connect to companion server and configure app.
Features:
- Server URL
- Pairing code / passkey login
- Notification test
- Theme
- Hermes health
- Storage/retention
- STT/TTS preferences
## Feature Details
### Text Prompting
Modes:
- Quick ask: starts new task/session.
- Continue: appends to selected session.
- Background task: app can be closed, push when finished.
### Voice Notes
MVP flow:
1. Browser MediaRecorder captures audio.
2. Upload audio file to companion.
3. Companion either:
- passes audio path to Hermes gateway/STT path, or
- transcribes with configured local Whisper/faster-whisper, then sends text prompt.
4. UI shows transcript for confirmation if desired.
Later:
- Voice-to-voice replies using Hermes TTS.
- Streaming partial transcript.
### File Uploads
Supported MVP:
- png/jpg/webp/gif
- zip/tar/gz
- pdf
- txt/log/md/json/csv
- arbitrary binary as attachment
Prompt format to Hermes:
- Store file locally in companion upload store.
- Send prompt with absolute paths and metadata.
- Example: `User uploaded files: /var/lib/hermes-mobile/uploads/.../archive.zip`
### Tool Calls
Event model:
- `tool_call.started`
- `tool_call.delta`
- `tool_call.finished`
- `tool_call.failed`
Tool cards show:
- Icon/name
- Arguments summary
- Status
- Duration
- Expandable result
- Copy/open file actions where relevant
### Notifications
MVP notification events:
- task finished
- task failed
- approval required
- cron job completed/failed
Providers:
- Web Push for installed PWA
- ntfy fallback
- Gotify fallback
- Home Assistant persistent notification optional
### Cron Triggers
The app should not reimplement Hermes cron. It should wrap Hermes cronjob functions/CLI:
- list jobs
- run job
- pause/resume/remove
- create/edit later
### “Prompting itself” / Hermes test harness
Because Hermes Mobile runs next to Hermes Agent, the companion can test connectivity by sending a harmless prompt through:
- Hermes CLI: `hermes chat -q "ping"`
- API server: `/v1/chat/completions`
- Direct Python bridge later
The Settings health page should include a `Test Hermes` button.
## MVP Acceptance Criteria
- Install companion server on same Linux machine as Hermes.
- Open mobile PWA on Android, pair to companion.
- Send text prompt to Hermes and receive answer.
- Upload a PNG or ZIP and include it in prompt context.
- Record a voice note and turn it into a prompt.
- See at least coarse tool activity while Hermes runs.
- Receive push/ntfy notification when task completes.
- View cron jobs and trigger one manually.
## Risks
1. Hermes API server may not expose enough event detail.
- Mitigation: start with CLI/direct Python bridge and add event callbacks.
2. PWA push notification quirks.
- Mitigation: support ntfy/Gotify fallback.
3. Mobile browser audio quirks.
- Mitigation: test Android Chrome first; Capacitor later if needed.
4. Tool-call streaming requires Hermes integration changes.
- Mitigation: companion adapter interface; use available callbacks in AIAgent where possible.