{"data":{"slug":"nesquena-hermes-webui","name":"hermes-webui","tagline":"Hermes WebUI: The best way to use Hermes Agent from the web or from your phone!","github_url":"https://github.com/nesquena/hermes-webui","owner":"nesquena","repo":"hermes-webui","owner_avatar_url":"https://avatars.githubusercontent.com/u/6511?v=4","primary_language":"Python","stars":17456,"forks":2409,"topics":["agent","ai-agents","hermes","hermes-agent","nous-research"],"archived":false,"github_pushed_at":"2026-08-19T03:46:10+00:00","maintenance_label":"Very active","stars_delta_30d":1192,"url":"https://www.graphcanon.com/tools/nesquena-hermes-webui","markdown_url":"https://www.graphcanon.com/tools/nesquena-hermes-webui.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/nesquena-hermes-webui","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=nesquena-hermes-webui","description":"Hermes WebUI: The best way to use Hermes Agent from the web or from your phone!","homepage_url":"https://get-hermes.ai/setup","license":"MIT","open_issues":669,"watchers":58,"ai_summary":"A web interface for interacting with the Hermes agent, enabling users to manage AI tasks and chat via a browser or mobile device.","readme_excerpt":"## Quick start\n\nRun the repo bootstrap:\n\n```bash\ngit clone https://github.com/nesquena/hermes-webui.git hermes-webui\ncd hermes-webui\npython3 bootstrap.py\n```\n\nOr keep using the shell launcher:\n\n```bash\n./start.sh\n```\n\nFor self-hosted VM or homelab installs, `ctl.sh` wraps the common daemon lifecycle commands without requiring `fuser` or `pkill`:\n\n```bash\n./ctl.sh start              # background daemon, PID at ~/.hermes/webui.pid\n./ctl.sh status             # PID, uptime, bound host/port, log path, /health\n./ctl.sh logs --lines 100   # tail ~/.hermes/webui.log\n./ctl.sh restart\n./ctl.sh stop\n```\n\n`ctl.sh start` runs the bootstrap in foreground/no-browser mode behind the daemon wrapper, writes logs to `~/.hermes/webui.log`, and respects `.env` plus inline overrides such as `HERMES_WEBUI_HOST=0.0.0.0 ./ctl.sh start`.\n\n> **Stopping the server.** Each launch method has its own stop path because only `ctl.sh start` writes a PID file (`~/.hermes/webui.pid`):\n>\n> | Launch method | How to stop |\n> |---|---|\n> | `python3 bootstrap.py` | **Ctrl-C** in the terminal (runs in the foreground) |\n> | `./ctl.sh start` | `./ctl.sh stop` (sends SIGTERM, waits, then SIGKILL) |\n> | Detached `bootstrap.py` (no `--foreground`) or `./start.sh` | Find the PID via `lsof -i :8787` (or `ss -tlnp`) and `kill` it |\n>\n> `./ctl.sh stop` cannot stop a server launched by `bootstrap.py` or `start.sh` directly — it only manages processes it started itself.\n\n> **How chat runs by default.** WebUI runs the Hermes agent in-process, reading\n> your `HERMES_HOME` config directly. It does not connect to an external\n> Hermes/agent OpenAI-compatible API server to run chat. `HERMES_API_URL` is only\n> read by the Tasks/cron health probe and does not route chat.\n>\n> Two options if you run an external endpoint:\n>\n> 1. **Use its models as a chat provider** (supported today): add it in\n>    **Settings → Providers** as a custom OpenAI-compatible provider with\n>    `base_url = http://127.0.0.1:8642/v1` and your bearer token.\n> 2. **Route chat through a Hermes Gateway API server** (supported today via\n>    `HERMES_WEBUI_CHAT_BACKEND=gateway`): see [`docs/advanced-chat-setup.md`](docs/advanced-chat-setup.md).\n>    Full agent-loop delegation is not yet shipped; tracked in [#1925](https://github.com/nesquena/hermes-webui/issues/1925).\n\n---\n\n## Docker\n\n**Pre-built images** (amd64 + arm64) are published to GHCR on every release.\n\nFor a comprehensive setup guide covering all 3 compose files, common failure modes, and bind-mount migration, see [`docs/docker.md`](docs/docker.md). The README covers the 5-minute happy path.\n\n---\n\n### Manual `docker run` (no compose)\n\n```bash\ndocker pull ghcr.io/nesquena/hermes-webui:latest\ndocker run -d \\\n  -e WANTED_UID=$(id -u) -e WANTED_GID=$(id -g) \\\n  -v ~/.hermes:/home/hermeswebui/.hermes \\\n  -e HERMES_WEBUI_STATE_DIR=/home/hermeswebui/.hermes/webui \\\n  -v ~/workspace:/workspace \\\n  -p 127.0.0.1:8787:8787 \\\n  ghcr.io/nesquena/hermes-webui:latest\n```","github_created_at":"2026-03-30T21:50:12+00:00","created_at":"2026-07-07T17:38:56.067216+00:00","updated_at":"2026-08-19T06:01:12.498434+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"}],"tags":[{"slug":"agent","name":"agent"},{"slug":"ai-agents","name":"ai-agents"},{"slug":"hermes","name":"hermes"},{"slug":"hermes-agent","name":"hermes-agent"},{"slug":"nous-research","name":"nous-research"}],"trust":{"provenance":{"is_fork":false,"github_id":1196617276,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-08-19T06:01:11.720Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":30,"days_since_push":0,"last_release_at":"2026-08-19T03:46:45Z","stars_delta_30d":1192,"open_issues_delta_30d":353},"security_summary":{"status":"findings","scanner":"osv@v1","low_count":11,"high_count":0,"last_scan_at":"2026-07-11T11:13:29.724Z","medium_count":0,"scan_profile":"deps","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-08-19T06:01:12.174Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-08-19T06:01:12.174Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-08-19T06:01:12.174Z","managed_saas":false},"has_cli":{"value":true,"source":"pyproject.toml:[project.scripts]","observed_at":"2026-08-19T06:01:12.174Z"},"languages":{"value":["python","javascript"],"source":"github.language+package.json+pyproject.toml","observed_at":"2026-08-19T06:01:12.174Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-08-19T06:01:12.174Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-08-19T06:01:12.174Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":{"notes":["Self-hosting requires setup via shell commands or Docker configuration for more comprehensive deployment scenarios."],"min_ram_gb":1,"requires_docker":true},"constraints":{"min_ram_gb":1,"requires_docker":true},"when_to_use":["When you want a user-friendly GUI to manage and interact with Hermes agents, ideal for users who prefer a visual interface over command-line operations.","Suitable for environments where self-hosted solutions are preferred due to its straightforward VM or homelab installation process via shell scripts.","If customization of the chat backend is needed; it supports integration with custom OpenAI-compatible providers and has an option to route chat through a Hermes Gateway API server."],"when_not_to_use":["Avoid using this tool if you require out-of-the-box support for full agent-loop delegation as it's not currently available, tracked under issue #1925.","If your setup requires running the Hermes WebUI exclusively on an external Hermes/Agent OpenAI-compatible API since WebUI runs the Hermes Agent in-process by default."],"source":"enrich:decision_facts","observed_at":"2026-07-11T14:50:10.423Z"},"constraint_facets":{"min_ram_gb":1,"requires_docker":true},"decision_summary":[{"label":"Requirements","value":"Min 1 GB RAM; Requires Docker; Self-hosting requires setup via shell commands or Docker configuration for more comprehensive deployment scenarios."},{"label":"Adopt for","value":"Hermes WebUI is a web interface designed for interacting with the Hermes agent, providing features to manage AI tasks and chat through browsers or mobile devices. It comes packaged as an easy-to-set-up Python application"},{"label":"License detail","value":"MIT License. You are free to use, modify and distribute this software with appropriate attribution."}]}}