Unified Hermes Desktop Plugin: Dashboard + Model Pools
Combines project dashboard (Plans, Kanban, Agents) with intelligent model pool management (free fallback, paid rotation, fixed models per function).
| Tab | Description |
|---|---|
| Planos | Read-only view of .hermes/plans/*.md files |
| Kanban | Read-only view of native Hermes Kanban boards |
| Agentes | Safe test mode for Technical Orchestrator agent |
| Model Pools | NEW — Manage model pools with fallback/rotation |
Three pool types with distinct behaviors:
| Pool | Type | Behavior | Use Case |
|---|---|---|---|
| Gratis | Free | Cascata fallback — auto switches on rate limit/failure, persists until manual change | Cost-free resilience |
| Coding Barato | Paid | Rotação com confirmação — rotates on failure, asks before switching paid models | Budget coding tasks |
| Planejamento | Custom | Modelo fixo — single trusted model for planning/orchestration | Reliable planning |
Pool Configuration Options:
fallbackEnabled— Auto cascade to next model on failurerotationEnabled— Rotate through models on failureconfirmPaidRotation— Require user confirmation before switching paid modelspersistFallback— Keep fallback model until manually changed
- Sidebar: "Dashboard" navigation item →
/dashboardroute - Palette (Ctrl+K):
Abrir Dashboard— Open dashboardModel Pools: Trocar Pool/Modelo— Quick switchModel Pools: Atualizar Lista Grátis— Fetch fresh free models from OpenRouter
- Keybind:
Ctrl+Shift+D— Open Dashboard
# Navigate to Hermes desktop-plugins directory
cd %APPDATA%\Local\hermes\desktop-plugins\ # Windows
# or
cd ~/.hermes/desktop-plugins/ # Linux/Mac
# Clone the repo
git clone https://github.com/IsmaelThrash/hermes-dash-pools.git
# In Hermes: Ctrl+K → "Reload desktop plugins"- Download/clone this repo
- Copy the
dashboard/folder to your Hermes desktop-plugins directory:- Windows:
%APPDATA%\Local\hermes\desktop-plugins\hermes-dash-pools\ - Linux/Mac:
~/.hermes/desktop-plugins/hermes-dash-pools/
- Windows:
- In Hermes:
Ctrl+K→Reload desktop plugins
State is saved automatically to Hermes plugin storage:
- Namespace:
hermes.plugin.hermes-dash-pools - Keys:
state,manual-override,pending-rotation
- Free model list cached for 24h (configurable in
model-pools/openrouter.ts) - Auto-refresh every 6 hours
- Manual refresh via Palette command
- CORS-safe via backend proxy endpoint
/model-pools/openrouter-models
- Open Dashboard → Model Pools tab
- In any pool card, use the input field at bottom: "ID do modelo (ex: anthropic/claude-3.5-sonnet)"
- Press Enter to add
- Models are validated against OpenRouter catalog on next refresh
- Click "+ Novo Pool" in Model Pools tab
- Enter name (e.g., "Escrita Criativa")
- Select type: Gratis / Pago / Personalizado
- Click "Criar Pool"
- Add models to your new pool
hermes-dash-pools/
├── dashboard/
│ ├── manifest.json # { "api": "plugin_api.py" }
│ ├── plugin.js # Main plugin (React + nanostores)
│ ├── plugin_api.py # FastAPI backend (plans, kanban, agents, model-pools)
│ └── model-pools/ # Core logic modules
│ ├── pools.ts # State, actions, default pools
│ ├── storage.ts # Plugin storage wrapper
│ ├── hooks.ts # Model request hooks (native + fallback)
│ └── openrouter.ts # OpenRouter API integration
├── .github/workflows/ # CI (lint, typecheck)
└── README.md
- nanostores atoms for reactive state (
$poolsState,$activePool,$activeModel) - Plugin-scoped storage via
ctx.storage(persists across reloads) - Periodic auto-save every 30 seconds
The plugin attempts to register native SDK hooks (host.registerModelHooks) for precise request/response interception. Falls back to event-based detection (host.onEvent('*')) on current SDK versions.
When native hooks are available (future Hermes release):
- Pre-request: Can override model based on active pool/agent function
- Post-response: Exact detection of 429 rate limit, timeouts, empty responses
- Hermes Desktop (latest)
- Python 3.11+ (for
plugin_api.pybackend) - Node.js 22+ (for TypeScript modules, optional)
# Edit files in ~/.hermes/desktop-plugins/hermes-dash-pools/
# In Hermes: Ctrl+K → "Reload desktop plugins"
# Changes hot-reload automaticallypip install fastapi uvicorn pydanticThis plugin replaces two previous plugins:
dashboard/→ Merged intodashboard/(tabs: Planos, Kanban, Agentes, Model Pools)force-default-model/→ Logic migrated to Model Pools (default pool = "Gratis" withqwen/qwen3.7-flash)
No action needed — just install this plugin and disable/remove the old ones.
- Fork the repo
- Create feature branch
- Make changes
- Test in local Hermes
- Submit PR
MIT — Free to use, modify, distribute.
- Issues: GitHub Issues
- Hermes Discord: #plugins channel