TL;DR: Hermes WebUI is a self-hosted web interface for Hermes Agent (Nous Research) that brings autonomous AI with persistent memory, self-improving skills, and 24/7 scheduled jobs to your browser. Unlike Claude Code (coding-focused, no self-hosting) or OpenClaw (marketplace skills, less stable), Hermes learns your environment once and gets more capable over time. 140,000 GitHub stars in 3 months. Setup: one command (./start.sh). Zero build tools, zero cloud dependencies.
What is Hermes Agent?
Before diving into the WebUI, understand what Hermes Agent is.
The Problem with Most AI Tools
Most AI tools reset every session:
- No memory of previous conversations
- No learning from past tasks
- Manual repetition of context every time
- Stateless - they never improve
You explain yourself repeatedly. Every new chat starts from zero.
How Hermes is Different
Hermes Agent by Nous Research is a self-hosted autonomous AI agent that:
- Remembers everything - Persistent memory across sessions via USER.md and MEMORY.md
- Learns from experience - Automatically writes reusable skills after completing tasks
- Runs 24/7 - Scheduled cron jobs that fire while you're offline
- Lives on your server - Self-hosted, no cloud lock-in, zero telemetry
- Supports 10+ platforms - Terminal, web, Telegram, Discord, Slack, Teams, Signal, email
Released February 2026. 140,000 GitHub stars in under 3 months, making it one of the fastest-growing open-source AI projects.
What is Hermes WebUI?
Hermes WebUI is the official web interface for Hermes Agent.
Core Design Philosophy
No build step. No framework. No bundler.
- Backend: Pure Python standard library + FastAPI
- Frontend: Vanilla JavaScript + CSS
- Dependencies: Zero npm packages, zero webpack, zero compilation
Key Features at a Glance
| Feature | Description |
|---|---|
| Full CLI Parity | Everything you can do in terminal, you can do in browser |
| Persistent Memory | Cross-session context via USER.md, MEMORY.md, agent notes |
| Self-Improving Skills | Agent writes and saves reusable procedures automatically |
| Scheduled Jobs | Cron tasks with completion alerts and history |
| Workspace Browser | Full file tree with preview, edit, create, delete |
| 10+ Messaging Platforms | Telegram, Discord, Slack, Teams, Signal, Matrix, IRC, email |
| Voice Input | Web Speech API for hands-free interaction |
| Multiple Profiles | Switch between agent configurations without restart |
| Session Projects | Organize conversations with tags and colors |
| Zero Cloud | Self-hosted, no external dependencies |
Source: Hermes Agent Official
Why Hermes WebUI Exists
The Self-Hosted AI Stack
Hermes WebUI completes the self-hosted AI stack:
┌─────────────────────────────────────┐
│ Your Infrastructure │
│ │
│ ┌─────────────────────────────┐ │
│ │ Hermes WebUI (Browser) │ │
│ └────────────┬────────────────┘ │
│ │ │
│ ┌────────────▼────────────────┐ │
│ │ Hermes Agent (Python) │ │
│ │ - Memory │ │
│ │ - Skills │ │
│ │ - Cron │ │
│ └────────────┬────────────────┘ │
│ │ │
│ ┌────────────▼────────────────┐ │
│ │ LLM Provider │ │
│ │ - OpenAI / Anthropic │ │
│ │ - Ollama / LMStudio │ │
│ │ - OpenRouter / DeepSeek │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
No external services required. All state lives on your machine.
vs. Cloud-Dependent Tools
| Tool | Self-Hosted | Memory | Skills | Cron |
|---|---|---|---|---|
| Hermes WebUI | ✅ Yes | ✅ Persistent | ✅ Self-improving | ✅ 24/7 |
| Claude Code | ❌ No | 🟡 Partial† | ❌ No | 🟡 Cloud-managed |
| ChatGPT | ❌ No | 🟡 Memory feature | ❌ No | ❌ No |
| Cursor | ❌ No | ❌ No | ❌ No | ❌ No |
† Claude Code has CLAUDE.md / MEMORY.md project context and rolling auto-memory, but not full automatic cross-session recall
Hermes vs. The Competition
vs. Claude Code
Claude Code (Anthropic):
- Focus: IDE-integrated coding assistant
- Strength: Superior code generation, deep IDE integration
- Limitation: Claude-only, no self-hosting, limited memory, no scheduled jobs
- Best for: Professional developers working in VS Code/JetBrains
Hermes Agent:
- Focus: General-purpose autonomous agent with learning
- Strength: Persistent memory, self-improving skills, runs 24/7
- Limitation: Coding quality slightly behind specialized tools
- Best for: Users wanting an AI that learns their environment and improves over time
When to use which:
- Need best coding quality? → Claude Code
- Need AI that remembers and learns? → Hermes
- Need scheduled jobs? → Hermes
- Need self-hosted? → Hermes
Sources: Utilo Comparison, MindStudio Analysis
vs. OpenClaw
OpenClaw:
- Skills: Marketplace with 3,200+ community skills
- Messaging: Strong WhatsApp integration
- Community: 347,000+ GitHub stars
- Challenges: Release regressions, ClawHub security incidents
- Architecture: Node.js-based
Hermes Agent:
- Skills: Automatically writes its own from experience (self-improving)
- Messaging: 10+ platforms including Teams, Signal, Matrix
- Stability: Better across updates, no marketplace dependencies
- Architecture: Python-native (better ML ecosystem integration)
When to use which:
- Need WhatsApp integration? → OpenClaw
- Want largest skill library? → OpenClaw
- Need stability and self-improvement? → Hermes
- Need Python/ML ecosystem? → Hermes
Source: Medium PM Comparison
The Layer Model
They're not direct competitors - they live at different layers:
┌──────────────────────────────────┐
│ Claude Code │ Coding layer
│ (IDE, GitHub Actions) │
└──────────────────────────────────┘
↕ Can orchestrate ↕
┌──────────────────────────────────┐
│ Hermes Agent │ Intelligence layer
│ (Memory, Skills, Learning) │
└──────────────────────────────────┘
↕ Can orchestrate ↕
┌──────────────────────────────────┐
│ OpenClaw │ Automation layer
│ (Life automation, Messaging) │
└──────────────────────────────────┘
Pro workflow: Use Hermes as your main agent, which spawns Claude Code for heavy coding and returns results to Hermes memory.
Sources: Brilworks Comparison, AI.cc Guide
Key Features Deep Dive
1. Persistent Memory
The defining feature: Hermes never forgets.
How it works:
- USER.md - Your profile, preferences, conventions
- MEMORY.md - Long-term knowledge and patterns
- Agent notes - Session-specific context
- Skills library - Learned procedures
Example workflow:
You: "Set up a new Next.js project with TypeScript, Tailwind, and our auth patterns"
[First time]
Hermes: *asks questions, sets up project, documents process*
Hermes: *writes skill "create-nextjs-project" for reuse*
[Six months later, new project]
You: "Set up another Next.js project"
Hermes: *immediately applies saved skill, uses remembered auth patterns*
No re-explanation needed. Hermes learned once and remembers forever.
2. Self-Improving Skills
Skills are code. Hermes writes executable Python functions from experience.
The Learning Loop:
- You ask Hermes to do something complex
- Hermes completes the task
- Hermes automatically writes a skill to handle similar tasks
- Skill saved to library
- Next time, Hermes uses the skill directly
Example skill (auto-generated):
# File: ~/.hermes/skills/database_backup.py
def backup_database(db_name: str, output_dir: str = "/backups"):
"""
Create timestamped backup of specified database.
Learned from: Session 2024-03-15 backup workflow
"""
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"{db_name}_{timestamp}.sql"
run_command(f"pg_dump {db_name} > {output_dir}/{filename}")
run_command(f"gzip {output_dir}/{filename}")
return f"Backup created: {filename}.gz"
No marketplace browsing. No plugin installation. Hermes learns from doing.
3. Scheduled Jobs (Cron)
Hermes runs 24/7 even when you're offline.
Use cases:
| Schedule | Task | Notification |
|---|---|---|
| Every 6 hours | Check CI/CD status, report failures | Telegram |
| Daily 9am | Summarize overnight GitHub activity | |
| Weekly Monday | Generate team status report | Slack |
| Monthly 1st | Analyze AWS costs, suggest optimizations | Discord |
From the WebUI:
- View all cron jobs
- Create new schedules
- Edit timing and actions
- Pause/resume jobs
- View run history
- Get completion alerts
Delivery channels: Telegram, Discord, Slack, Teams, Signal, email, or write to file.
4. Workspace File Browser
Full file tree management from the browser:
Features:
- Expand/collapse directory tree
- Breadcrumb navigation
- Preview text, code, Markdown, images
- Syntax highlighting (Prism.js)
- Edit files inline
- Create/delete/rename files and folders
- Git branch detection with dirty file badge
- Binary file downloads
- Drag-resizable right panel
Chat integration:
You: "Check the API routes"
Hermes: "Found 12 API routes in workspace://api/"
[Click link → opens file in preview panel]
5. Voice Input
Web Speech API integration:
- Tap microphone button in composer
- Speak your message
- Live transcription appears as you talk
- Auto-stops after 2s silence
- Appends to existing text (doesn't replace)
Supported browsers: Chrome, Edge, Safari
6. Multiple Profiles
Profiles = separate agent configurations:
- Different API keys per profile
- Separate skill libraries
- Independent memory
- Different model preferences
- Separate cron jobs
Use cases:
| Profile | Purpose | Model |
|---|---|---|
| work | Work tasks, company workspace | Claude Opus |
| personal | Personal automation, learning | GPT-4 |
| local | Experiments, testing | Ollama Llama 3 |
| research | Paper reading, summarization | Gemini Pro |
Switch instantly from dropdown in composer - no server restart.
7. Session Projects & Tags
Organize conversations:
- Projects - Named groups with colors (e.g., "Product Launch", "Bug Fixes")
- Tags - Add #tag to titles for filtering (#urgent, #finance, #automation)
- Pin - Star important sessions to top
- Archive - Hide without deleting
Search works across titles and message content.
Architecture
No Build Tools, No Framework
Backend (Python):
server.py # HTTP routing + auth
api/
auth.py # Password + passkeys (WebAuthn)
config.py # Auto-discovery, model detection
routes.py # All GET/POST handlers
streaming.py # SSE engine, agent execution
workspace.py # File operations
models.py # Session CRUD + SQLite bridge
profiles.py # Profile management
Frontend (Vanilla JS):
index.html # HTML template
style.css # All CSS (themes, mobile, animations)
ui.js # DOM helpers, markdown rendering
workspace.js # File browser, git badge
sessions.js # Session list, search, groups
messages.js # Chat, SSE streaming
panels.js # Cron, skills, memory, settings
commands.js # Slash command autocomplete
boot.js # Init, theme loading, mobile nav
Zero dependencies:
- No React, Vue, Svelte
- No webpack, Vite, esbuild
- No Tailwind, Bootstrap
- No npm install
Updates: git pull and restart. No rebuild.
State Directory Structure
~/.hermes/
├── hermes-agent/ # Agent source
│ ├── config.yaml # API keys, providers
│ ├── skills/ # Auto-generated skills
│ ├── MEMORY.md # Long-term memory
│ └── USER.md # User profile
└── webui/ # WebUI state
├── sessions/ # Chat sessions (JSON)
├── workspaces/ # Workspace definitions
├── settings.json # UI preferences
├── projects.json # Session projects
└── attachments/ # Uploaded files
Portable: Copy ~/.hermes to another machine and everything works.
Setup Guide
Prerequisites
- OS: Linux, macOS, or WSL2 (Windows not supported natively yet†)
- Python: 3.11+
- Git: For cloning repo
- LLM Provider: API key for OpenAI, Anthropic, or local model server
† Community-maintained native Windows setup exists - see docs
5-Minute Install
1. Clone and bootstrap:
git clone https://github.com/nesquena/hermes-webui.git
cd hermes-webui
python3 bootstrap.py
The bootstrap will:
- Detect Hermes Agent (install if missing)
- Create Python venv with dependencies
- Start server and wait for
/health - Open browser to WebUI
- Launch first-run onboarding wizard
2. Complete onboarding:
The wizard guides you through:
- Provider setup (OpenAI, Anthropic, Ollama, etc.)
- Base URL for local model servers
- Default model selection
- Workspace configuration
3. Start chatting:
You: "What can you do?"
Hermes: *explains capabilities, checks for saved skills*
Done. No build step, no additional configuration.
Alternative: Shell Launcher
./start.sh # Start with auto-detection
./start.sh 9000 # Custom port
# Daemon mode (background)
./ctl.sh start # Start as daemon
./ctl.sh status # Check status
./ctl.sh logs # View logs
./ctl.sh restart # Restart
./ctl.sh stop # Stop
Docker Setup
Single container (simplest):
git clone https://github.com/nesquena/hermes-webui
cd hermes-webui
cp .env.docker.example .env
# Set password (required for network access)
echo "HERMES_WEBUI_PASSWORD=your-strong-password" >> .env
docker compose up -d
Open http://localhost:8787
Images: Pre-built for amd64 + arm64 at ghcr.io/nesquena/hermes-webui:latest
Multi-container (agent + WebUI separated):
docker compose -f docker-compose.two-container.yml up -d
Full Docker guide with troubleshooting: See project docs/docker.md
Configuration
Environment Variables
Core settings:
| Variable | Default | Description |
|---|---|---|
HERMES_WEBUI_HOST | 127.0.0.1 | Bind address (use 0.0.0.0 for network) |
HERMES_WEBUI_PORT | 8787 | Port |
HERMES_WEBUI_PASSWORD | (unset) | Enable auth (required for remote) |
HERMES_WEBUI_AGENT_DIR | Auto-detected | Path to hermes-agent |
HERMES_WEBUI_STATE_DIR | ~/.hermes/webui | Where sessions/state are stored |
HERMES_WEBUI_DEFAULT_WORKSPACE | ~/workspace | Default workspace |
HERMES_HOME | ~/.hermes | Base Hermes directory |
Example (network access with auth):
export HERMES_WEBUI_HOST=0.0.0.0
export HERMES_WEBUI_PASSWORD=strong-password-here
./start.sh
Remote Access
SSH Tunnel (recommended):
# On server
./start.sh
# On local machine
ssh -N -L 8787:127.0.0.1:8787 user@server
# Open http://localhost:8787
Tailscale (for mobile):
- Join server and phone to Tailscale network
- Set
HERMES_WEBUI_HOST=0.0.0.0+HERMES_WEBUI_PASSWORD - Browse to
http://<server-tailscale-ip>:8787from phone
Full guide with ARM64-Android field report: docs/remote-access.md
Advanced Features
1. CLI Session Bridge
Your terminal sessions appear in the WebUI.
- CLI sessions from
hermes-agentSQLite store show with gold "cli" badge - Click to import with full history
- Reply normally from WebUI
- Continues seamlessly
No manual export/import. Automatic bridge.
2. Token Usage & Cost Tracking
Per-conversation metrics:
- Input tokens
- Output tokens
- Estimated cost (model-aware)
- Context usage bar in composer
Enable: Settings → Preferences → "Show token usage" or /usage command
3. Themes & Skins
Two axes:
- Theme: System, Dark, Light
- Skin: 11 options
- Default
- Ares
- Mono
- Slate
- Poseidon
- Sisyphus
- Charizard
- Sienna
- Catppuccin
- Nous
- Geist Contrast
Switch: Settings → Appearance (instant live preview) or /theme <name>
Persists across reloads.
4. Authentication
Password auth (optional):
- Off by default for localhost
- Required for network access
- Set via
HERMES_WEBUI_PASSWORDenv or Settings - HMAC-signed HTTP-only cookie (24h TTL)
Passkeys (optional):
- Register from Settings → System after signing in
- WebAuthn support (Face ID, Touch ID, security keys)
- Can remove password and go passkey-only
5. Slash Commands
Type / in composer for autocomplete:
| Command | Effect |
|---|---|
/help | Show help |
/clear | Clear current session |
/compress [topic] | Compress session to focus on topic |
/model <name> | Switch model |
/workspace <name> | Switch workspace |
/new | New session |
/usage | Toggle token display |
/theme <theme-or-skin> | Change theme/skin |
Arrow keys navigate, Tab/Enter select, Esc closes.
6. Mobile Responsive
Full mobile support:
- Hamburger sidebar (slide-in overlay <640px)
- Files slide-over from right
- Touch targets minimum 44px
- Full-height chat without bottom nav stealing space
- Desktop layout completely unchanged
Works on phones: iOS Safari, Chrome Android, Firefox Mobile
Use Cases
For Developers
1. Project Memory
First interaction:
You: "This project uses Prisma with PostgreSQL. Auth is Clerk.
Payments via Stripe. Always use TypeScript strict mode."
Hermes: *saves to MEMORY.md*
Two weeks later:
You: "Add a new subscription tier"
Hermes: *automatically applies Prisma, Clerk, Stripe patterns*
*no re-explanation needed*
2. CI/CD Monitoring
# Scheduled job: every 30 min
name: CI Status Check
schedule: "*/30 * * * *"
action: |
Check GitHub Actions status for main branch.
If any failures in last 30min, analyze logs and report.
notify: Telegram
3. Code Review Automation
# Scheduled job: hourly
name: PR Review
schedule: "0 * * * *"
action: |
List open PRs requiring review.
For each: summarize changes, check tests, suggest improvements.
notify: Slack #engineering
For Teams
4. Daily Standup Reports
# Scheduled job: daily 9am
name: Standup Summary
schedule: "0 9 * * 1-5"
action: |
Summarize:
- GitHub commits since yesterday
- JIRA tickets moved to Done
- Slack discussions needing follow-up
notify: Email [email protected]
5. On-Call Rotation
# Scheduled job: every 6 hours
name: On-Call Check
schedule: "0 */6 * * *"
action: |
Check PagerDuty incidents in last 6h.
Summarize severity, response time, status.
Flag any incidents >2h unresolved.
notify: Discord #oncall
For Personal Automation
6. News Digest
# Scheduled job: daily 7am
name: Morning News
schedule: "0 7 * * *"
action: |
Summarize top HN posts, filter for AI/ML topics.
Check /r/MachineLearning for research papers.
Send 5-bullet digest.
notify: Telegram
7. Finance Tracking
# Scheduled job: monthly 1st
name: Finance Report
schedule: "0 0 1 * *"
action: |
Connect to bank CSV exports.
Categorize transactions.
Generate spending breakdown by category.
Compare to budget, flag overages.
notify: Email
Community & Ecosystem
GitHub Activity
- Repository: nesquena/hermes-webui
- Stars: 10,200+ (WebUI), 140,000+ (Agent)
- Contributors: 176 on WebUI, growing
- License: MIT (fully open source)
Recent Milestones
v0.51.x releases (May-June 2026):
- Autonomous Curator for skill library maintenance
- 57% faster TUI cold start
- Native Microsoft Teams integration
- Passkeys/WebAuthn support
- Session lineage tracking
- Four new inference providers
Community contributions:
- 517 releases since launch
- 190+ contributors shipped code
- Docker images for amd64 + arm64
- Native Windows setup guide (community-maintained)
Getting Help
- Documentation: Full docs in repo under
docs/ - Issues: GitHub Issues for bugs/features
- Discussions: GitHub Discussions for questions
- Discord: Nous Research server (link in repo)
Limitations & Trade-offs
What Hermes is NOT:
- Not a coding copilot - Claude Code, Cursor, Codex are better for pure coding
- Not a chatbot wrapper - More complex than ChatGPT UI, steeper learning curve
- Not cloud-managed - You maintain the server, updates, backups
- Not plug-and-play - Requires VPS/homelab and basic Linux knowledge
When NOT to use Hermes:
- You want simplest possible setup → Use ChatGPT Plus
- You only need coding help → Use Claude Code or Cursor
- You can't self-host → Use cloud tools
- You need WhatsApp integration → Use OpenClaw
When TO use Hermes:
- You need AI that remembers your environment
- You want scheduled background jobs
- You require self-hosted/privacy
- You prefer Python ecosystem
- You want AI that improves over time
Getting Started Checklist
Before you install:
- Have a server/VPS or local machine for hosting
- Choose LLM provider (OpenAI, Anthropic, local, etc.)
- Decide on access method (localhost, SSH tunnel, Tailscale)
- Read architecture overview to understand system design
Installation:
- Clone repo:
git clone https://github.com/nesquena/hermes-webui - Run bootstrap:
python3 bootstrap.py - Complete onboarding wizard
- Configure provider API keys
First tasks:
- Create your first session
- Add user profile info to USER.md (via Memory panel)
- Set up a simple cron job (via Tasks panel)
- Let Hermes complete a complex task and watch it write a skill
- Test session memory by referring back to earlier context
Optional:
- Set up remote access (SSH tunnel or Tailscale)
- Install Telegram/Discord bot for mobile access
- Configure additional profiles for different use cases
- Explore themes and customize appearance
Roadmap & Future
Current Focus
From project ROADMAP.md:
- Enhanced skill learning - Better automatic skill extraction
- Multi-agent orchestration - Spawn specialized sub-agents
- Improved memory retrieval - Semantic search in MEMORY.md
- Better mobile experience - PWA support, native app wrappers
- Marketplace integration - Optional community skills (while keeping self-improvement)
Long-term Vision
Hermes aims to be:
- The self-hosted AI that gets smarter the longer you use it
- A platform where skills compound over time
- An agent that understands your entire workflow
- The open-source alternative to proprietary AI assistants
NOT aiming for:
- Marketplace dependence (core value is self-improvement)
- Cloud lock-in
- Closed-source features
- Subscription models
Source: Hermes Atlas State Report
Comparison Table: Full Feature Matrix
| Feature | Hermes | Claude Code | OpenClaw | Cursor | ChatGPT |
|---|---|---|---|---|---|
| Persistent Memory (Auto) | ✅ Yes | 🟡 Partial | 🟡 Partial | ❌ No | 🟡 Memory feature |
| Self-Improving Skills | ✅ Auto-writes | ❌ No | 🟡 Marketplace | ❌ No | ❌ No |
| Scheduled Jobs (24/7) | ✅ Yes | 🟡 Cloud-managed | ✅ Yes | ❌ No | ❌ No |
| Messaging Platforms | ✅ 10+ | 🟡 2 preview | ✅ 15+ | ❌ No | ❌ No |
| Self-Hosted | ✅ Yes | ❌ No | ✅ Yes | ❌ No | ❌ No |
| Open Source | ✅ MIT | ❌ Closed | ✅ MIT | ❌ Closed | ❌ Closed |
| Web UI | ✅ Full-featured | ❌ No | 🟡 Dashboard only | ✅ Yes | ✅ Yes |
| Provider-Agnostic | ✅ Yes | ❌ Claude only | ✅ Yes | ✅ Yes | ❌ OpenAI only |
| Python/ML Ecosystem | ✅ Native | ❌ No | ❌ Node.js | 🟡 Via extensions | ❌ API only |
| IDE Integration | 🟡 Via orchestration | ✅ Deep | ❌ No | ✅ Deep | ❌ No |
| Best for Coding | 🟡 Good | ✅ Excellent | 🟡 Fair | ✅ Excellent | 🟡 Good |
| Learning Curve | Medium | Low | Medium | Low | Very Low |
| Cost (self-host) | $5+/mo VPS | N/A | $5+/mo VPS | N/A | N/A |
| Cost (cloud) | $0 platform | $20-100/mo | $0 platform | $20+/mo | $20/mo |
Sources: MindStudio, Grandlinux Comparison
Technical Architecture Details
Backend Design
No web framework needed - Uses Python's http.server with custom routing:
# Simple if/elif dispatch, no decorators
def handle_request(method, path, body):
if path == '/api/chat/send':
return send_message(body)
elif path == '/api/sessions':
return list_sessions()
elif path.startswith('/api/workspace/'):
return workspace_operation(path, body)
# ...
Why no Flask/FastAPI for routes:
- Zero dependencies
- Faster startup
- Simpler debugging
- Full control over SSE
SSE Streaming:
# Server-Sent Events for live chat
def stream_response(session_id):
yield f"data: {json.dumps({'type': 'start'})}\n\n"
for token in agent.generate():
yield f"data: {json.dumps({'type': 'token', 'content': token})}\n\n"
yield f"data: {json.dumps({'type': 'done'})}\n\n"
Frontend Design
No framework - Direct DOM manipulation:
// No React, just clean vanilla JS
function renderMessage(msg) {
const div = document.createElement('div');
div.className = msg.role === 'user' ? 'message-user' : 'message-assistant';
div.innerHTML = renderMarkdown(msg.content);
chatContainer.appendChild(div);
scrollToBottom();
}
// SSE handling
const eventSource = new EventSource('/api/chat/stream');
eventSource.onmessage = (e) => {
const data = JSON.parse(e.data);
if (data.type === 'token') {
appendToken(data.content);
}
};
CSS Variables for theming:
/* Theme system via CSS custom properties */
:root {
--bg-primary: #0a0a0a;
--text-primary: #e4e4e7;
--accent: #3b82f6;
}
[data-skin="ares"] {
--accent: #ef4444;
--bg-secondary: #1c0f0f;
}
Why no Tailwind/Bootstrap:
- ~500 lines of CSS covers entire UI
- No build step
- Full control over every pixel
- Instant theme switching
State Management
Server-side state (JSON files):
~/.hermes/webui/
├── sessions/
│ ├── sess_abc123.json
│ └── sess_def456.json
├── settings.json
├── projects.json
└── attachments/
No database - Filesystem is the database:
- Sessions as JSON files
- Settings as single JSON
- Simple backup (copy directory)
- Easy debugging (cat file)
Session format:
{
"id": "sess_abc123",
"title": "Project Setup",
"created": "2026-06-01T10:30:00Z",
"profile": "work",
"workspace": "~/projects/myapp",
"messages": [
{"role": "user", "content": "Set up Next.js project"},
{"role": "assistant", "content": "I'll help...", "tool_calls": [...]}
]
}
FAQ Extended
Can I use local models only (no API costs)?
Yes. Hermes supports:
- Ollama -
ollama serve+ set base URL in onboarding - LMStudio - Point to LMStudio API endpoint
- llama.cpp server - Any OpenAI-compatible endpoint
- vLLM - For production local deployment
No OpenAI/Anthropic account required.
Does Hermes phone home?
No. Zero telemetry, zero tracking, zero external calls except to your chosen LLM provider.
All data stays on your machine. Open source - audit the code.
Can I expose this to the internet safely?
Yes, with:
- Strong password via
HERMES_WEBUI_PASSWORD - HTTPS/TLS (configure via env or reverse proxy)
- Firewall limiting access to specific IPs
- VPN (Tailscale, WireGuard)
Do NOT expose without auth - anyone can read your conversations and execute code.
How much does it cost to run?
Infrastructure:
- VPS: $5-20/month (DigitalOcean, Hetzner, Linode)
- Homelab: $0 (if you have hardware)
API costs (pay-per-use):
- OpenAI GPT-4 Turbo: ~$10-50/month for normal usage
- Anthropic Claude: ~$15-60/month
- Local models (Ollama): $0
Total: $5-80/month depending on usage and provider choice.
Can companies use this?
Yes. MIT license allows commercial use.
Enterprise considerations:
- Deploy on company infrastructure
- Use company LLM accounts
- All data stays in company network
- Customize for internal workflows
- No vendor lock-in
Support: Community support via GitHub. No official enterprise support yet.
How stable is it?
Current state (v0.51.x):
- Core features: Stable
- Active development: 2-5 releases/week
- Breaking changes: Rare, but happens
- Upgrade path:
git pull+ restart (usually)
Production readiness: Many users run in production. Test updates in staging first.
Related Posts
- NVIDIA Computex 2026: Nemotron 3 Ultra Complete Recap
- Agentic AI: The Future of Autonomous Agents 2026-2030
- Claude Code vs Cursor: Complete Comparison 2026
- What is MCP Model Context Protocol Guide
- Goal Mode AI Agents Complete Guide 2026
Conclusion
Hermes WebUI brings autonomous AI agents to your browser without sacrificing self-hosting, privacy, or learning capabilities.
It's the right choice when:
✅ You need AI that remembers your environment ✅ You want scheduled background jobs ✅ You require self-hosted deployment ✅ You prefer open source over closed tools ✅ You value AI that improves over time
It's NOT the right choice when:
❌ You only need coding help (use Claude Code) ❌ You want simplest setup (use ChatGPT) ❌ You can't self-host ❌ You need WhatsApp specifically (use OpenClaw)
The vision: An AI that learns once and remembers forever. That gets more capable with every task. That runs on your infrastructure, on your terms.
Get started: github.com/nesquena/hermes-webui
Related Posts
- Odysseus: The Self-Hosted AI Workspace Taking GitHub by Storm
- The Agentic Era: How AI Agents Will Transform Everything (2026-2030)
- Hermes Agent OpenRouter #1 Ranking - Nous Research Guide
- What is MCP? Model Context Protocol Complete Guide
Sources & References
Official:
Analysis & Comparisons:
- Hermes vs Claude Code vs OpenClaw - Utilo
- MindStudio Agent Comparison
- Medium PM Comparison
- Brilworks Comparison
Guides:
Community:
This comprehensive guide covers Hermes WebUI as of June 2026. Features, setup, and ecosystem details may change. Visit hermes-agent.org for official updates.