Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

claude-webui

A private, self-hosted web UI for Claude — and 30+ other models — that runs on your own machine.
Mobile-friendly · No build step, no framework · Bring your own keys · 5-minute setup

License Stars Issues Python 3.11+ No build step PRs welcome

claude-webui — three-panel layout: sidebar, chat, workspace

For beginner-to-intermediate users. If you can open a terminal and paste a few commands, you can run this. A friendly chat UI for Claude (and many other models) that lives on your machine — your keys, your data, no cloud account required.

About this project. claude-webui is a Claude-focused fork of the excellent open-source Hermes Web UI (the browser UI for Nous Research's Hermes Agent). This fork makes Claude the default chat engine so it runs standalone with nothing but an Anthropic key or a Claude login — and adds a reskinned UI, an expanded multi-model picker, and mobile polish. Full credit to the upstream authors — see Credits & origin.


✨ Features

  • 🤖 Multi-model — Claude, OpenAI, OpenRouter (hundreds of models), Google Gemini, DeepSeek, and local models (Ollama / LM Studio). Switch per conversation.
  • 📱 Mobile-first — built for real use from your phone, not just desktop. Add it to your home screen (PWA), works offline-aware.
  • 🔒 Fully private — runs on your machine, your keys, no cloud account. Optional password + passkey login.
  • Zero build step — pure Python + vanilla JS. No framework, no bundler, no npm install. Clone and run.
  • 🧠 Persistent sessions — conversations saved locally, searchable, with projects, tags, pinning, and cost/token tracking.
  • 🛠️ Agentic — file browser, git status + worktrees, an embedded terminal, and inline tool-call cards.
  • 🌐 Remote-ready — reach it securely from your phone over Tailscale — no port-forwarding.
  • 🗓️ Scheduled tasks — built-in cron to run prompts on a schedule.
  • 🔊 Voice — speech-to-text dictation and a hands-free voice mode; optional server-side TTS.
  • 🧩 Bring-your-own skills — point it at your own Claude Code skills & commands in one step.
  • 🎨 Themeable — a dark, warm "claude-hub" look out of the box, plus light mode and several skins. 12 languages.

claude-webui in action — a coding answer with a rendered code block and the workspace panel

In action — agentic chat with inline code, tool-call cards, and a live workspace file browser

Agentic chat with live tool calls   Workspace file browser   Sessions, search, and projects   Persistent memory across sessions

On a phone, over Tailscale — agentic chat · workspace files · sessions & search · persistent memory


🚀 Quick start

Requirements: Python 3.11+ · Git · Linux, macOS, or Windows (via WSL2).

git clone https://github.com/JDiz00/claude-webui.git
cd claude-webui
bash start.sh

start.sh creates a virtual environment, installs the handful of dependencies, and starts the server. Then open http://localhost:8787.

Connect Claude — pick one:

  • Use your Claude subscription (no API key): run claude once in a terminal to log in. That's it.
  • Use an API key: copy the env template and add a key:
    cp .env.example .env
    # then set ANTHROPIC_API_KEY=... and AGENT_AUTH_MODE=api_key  (or OPENROUTER_API_KEY=..., etc.)

Tip

Local models (Ollama, LM Studio) need no key — just have them running and pick them in the model dropdown.

Note

This fork runs standalone on Claude by default. The original Hermes Agent integration is optional; opt in with bash start.sh --install-agent only if you want it.


🧠 Models & providers

Add keys in Settings → Providers (or in .env) and the model picker fills in automatically:

Provider Key Notes
Anthropic (Claude) ANTHROPIC_API_KEY or claude login Default engine
OpenRouter OPENROUTER_API_KEY One key → hundreds of models
OpenAI OPENAI_API_KEY GPT models
Google Gemini GEMINI_API_KEY
Ollama / LM Studio (none) Local, runs offline
fal.ai FAL_KEY Optional — image generation

…plus more (DeepSeek, xAI, Mistral, NVIDIA, Bedrock, and any OpenAI-compatible endpoint via Custom Provider).


🧩 Skills & commands (bring your own)

This fork does not bundle third-party skills — so nothing here republishes anyone else's work. Instead it makes your own Claude Code skills first-class:

  • The Settings → Skills panel automatically lists every skill in your ~/.claude/skills.
  • To also feed your skills and slash-commands to the agent, run the one-step importer:
    scripts/import-skills.sh                 # from ~/.claude/skills and ~/.claude/commands
    scripts/import-skills.sh /path/to/skills # or a custom location

Imported skills are symlinked locally and git-ignored, so they're never committed. See agent_plugin/skills/README.md for details.


📱 Remote access from your phone (via Tailscale)

Tailscale puts your computer and phone on a private network so you can reach the UI from anywhere — no port-forwarding, no public exposure.

  1. Install Tailscale on your computer and your phone, signed into the same account.
  2. Start the server bound to your tailnet, with a password set:
    HERMES_WEBUI_HOST=0.0.0.0 HERMES_WEBUI_PASSWORD='something-strong' bash start.sh
  3. Find your computer's Tailscale IP (tailscale ip -4, e.g. 100.x.y.z).
  4. On your phone's browser, open http://100.x.y.z:8787 and log in. Add it to your home screen for an app-like experience.

Warning

Anytime you bind to 0.0.0.0 (anything other than localhost), set HERMES_WEBUI_PASSWORD first. Without it, the chat, terminal, and file browser are open to anyone who can reach the host. See docs/remote-access.md for SSH-tunnel and other options.


🔒 Security

  • Binds to 127.0.0.1 (localhost only) by default — nothing is exposed until you choose to expose it.
  • Optional password (HERMES_WEBUI_PASSWORD) and passkeys / WebAuthn (Touch ID, security keys). Off by default for zero-friction localhost; turn it on before any remote access.
  • PBKDF2 password hashing, HMAC-signed HttpOnly cookies, CSRF protection, and outbound secret redaction.
  • Optional HTTPS via HERMES_WEBUI_TLS_CERT / HERMES_WEBUI_TLS_KEY.

⚙️ Configuration

Everything is optional and has a sensible default. Copy .env.example to .env and set what you need. The most common knobs:

Variable Default What it does
HERMES_WEBUI_HOST 127.0.0.1 Bind address (0.0.0.0 to expose on your network)
HERMES_WEBUI_PORT 8787 Port
HERMES_WEBUI_PASSWORD (unset) Enables the login gate — set before remote access
ANTHROPIC_API_KEY (unset) Claude API key (or use the claude login)
OPENROUTER_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY (unset) Other providers
MEMORY_VAULT_PATH (off) Optional — point at your own Obsidian vault to enable the Memory panel

Full list and details: .env.example and ARCHITECTURE.md.


🪟 Windows

Runs on Windows via WSL2 (a built-in Linux layer). Native Windows is not supported by the launcher — the bootstrap will point you to WSL2. One feature, the embedded terminal panel, is Linux/macOS only; everything else works.


🐳 Docker

Prefer containers? Build and run locally:

cp .env.docker.example .env
docker compose up -d
# open http://localhost:8787

Set HERMES_WEBUI_PASSWORD in .env before exposing the port. Full guide, multi-container setups, and common pitfalls: docs/docker.md.


🏗️ How it works

No build step, no framework, no bundler — a Python standard-library HTTP server (server.py + api/) serving a vanilla-JS frontend (static/). Chat runs through the Claude Agent SDK. State (sessions, settings) lives outside the repo at ~/.hermes/webui/ by default. Full design notes and the endpoint catalog are in ARCHITECTURE.md; more guides in docs/.


🤝 Contributing

Issues and PRs welcome. See CONTRIBUTING.md for the workflow and local verification, and TESTING.md for the test suite.


🙏 Credits & origin

claude-webui stands entirely on the shoulders of Hermes Web UI by the Hermes Web UI Contributors — the original, MIT-licensed project this is forked from. It is the browser UI for Hermes Agent by Nous Research. Enormous thanks to the 190+ upstream contributors; the full upstream credit roll is preserved in CONTRIBUTORS.md.

This fork's contributions: making Claude the standalone default engine, the reskinned "claude-hub" UI, the expanded multi-model picker, and mobile/Tailscale polish.


📄 License

MIT — © 2025 Hermes Web UI Contributors, © 2026 JDiz00 (claude-webui fork). You're free to use, modify, and redistribute it; just keep the license notice.

About

A private, self-hosted web UI for Claude and 30+ other models — mobile-friendly, no build step. A Claude-focused fork of Hermes Web UI.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages