Import the client, server, skills, tests, and build scripts as the starting point for the rebuild, then trim the surfaces this project does not ship: Electron desktop packaging, the marketing website, and the ESP32 firmware tree. CI keeps the web build, e2e, lockfile, release, and Docker workflows. Rename the package and CLI entry points to hermes-ui, drop the prepare hook so npm ci no longer triggers a build, and drop the removed tsconfig and nodemon references. Rewrite AGENTS.md, ARCHITECTURE.md, DEVELOPMENT.md, and the READMEs so the documented package map and hard rules match this repository. reference_code/ is ignored: it is a read-only snapshot, not an input to the build.
93 lines
2.8 KiB
Markdown
93 lines
2.8 KiB
Markdown
# hermes-ui
|
|
|
|
Self-hosted web dashboard for [Hermes Agent](https://github.com/NousResearch) — chat, session
|
|
history, skills, MCP servers, model management, IM channels, file management, and usage analytics
|
|
in one browser UI.
|
|
|
|
> This project is under active rebuild. Feature work is being staged phase by phase; see
|
|
> `docs/phases/README.md` for the current plan.
|
|
|
|
## Prerequisites
|
|
|
|
hermes-ui runs as a plain Node.js server. It does **not** bundle a runtime.
|
|
|
|
- Node.js `>=23`
|
|
- Python with `hermes-agent` installed
|
|
|
|
Install `hermes-agent`, then either put `hermes` on your `PATH` or point `HERMES_BIN` at the
|
|
executable:
|
|
|
|
```bash
|
|
export HERMES_BIN=/path/to/hermes
|
|
```
|
|
|
|
If the CLI cannot be found, the UI shows an install hint instead of failing silently.
|
|
|
|
## Getting Started
|
|
|
|
```bash
|
|
npm ci --ignore-scripts
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
Then open http://localhost:8648 and log in with the default credentials printed on first start.
|
|
|
|
For development with hot reload:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The client runs on http://localhost:8649 and the Koa server on port 8647.
|
|
|
|
## Layout
|
|
|
|
```
|
|
packages/client Vue 3 client: views, components, Pinia stores, i18n, API helpers
|
|
packages/server Koa API, Socket.IO chat runtime, SQLite stores, Hermes integration
|
|
packages/skills Built-in skills injected into the Hermes skills directory
|
|
tests Vitest unit/integration tests and Playwright browser tests
|
|
scripts Build and repository harness scripts
|
|
docs Architecture, harness docs, and the phased build plan
|
|
```
|
|
|
|
## Docker
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
The image is based on `nousresearch/hermes-agent`, so Python and the Hermes CLI are already
|
|
present in the container.
|
|
|
|
## Configuration
|
|
|
|
| Variable | Purpose |
|
|
| --- | --- |
|
|
| `HERMES_BIN` | Path to the `hermes` executable. Falls back to `hermes` on `PATH`. |
|
|
| `HERMES_HOME` | Hermes profile directory. Used to isolate profiles. |
|
|
| `HERMES_WEB_UI_HOME` | Web UI state directory. Defaults to `~/.hermes-web-ui`. |
|
|
| `HERMES_WEBUI_STATE_DIR` | Alternate override for the Web UI state directory. |
|
|
| `PORT` | Server port. |
|
|
|
|
The `HERMES_WEB_UI_*` prefixes and the `~/.hermes-web-ui` data directory are kept from the
|
|
0.6.x line on purpose, so existing deployments and data directories keep working.
|
|
|
|
## Commands
|
|
|
|
| Command | Description |
|
|
| --- | --- |
|
|
| `npm run dev` | Run client and server with hot reload. |
|
|
| `npm run build` | Type-check and build client and server bundles. |
|
|
| `npm start` | Serve the production build. |
|
|
| `npm run test` | Run Vitest tests. |
|
|
| `npm run test:coverage` | Run Vitest with coverage. |
|
|
| `npm run test:e2e` | Run Playwright browser tests. |
|
|
| `npm run harness:check` | Validate repository docs, workflows, and package scripts. |
|
|
| `npm run openapi:generate` | Regenerate `docs/openapi.json`. |
|
|
|
|
## License
|
|
|
|
BSL-1.1. See `LICENSE`.
|