The project's README from github.com/EKKOLearnAI/ekko-studio. As one markdown file: README.md.
Ekko Studio 中文
A local-first AI workspace for multi-agent chat, coding, and visual workflows.
Available as a desktop app and self-hosted web console, with support for
Hermes Agent, Ekko Agent, Claude Code, Codex, Pi, Grok, and OpenCode.
Bring conversations, group collaboration, voice, files, and devices together in one place.
Download Ekko Studio Desktop
·
Documentation
·
npm install -g hermes-web-ui && hermes-web-ui start
Ekko Studio was previously named Hermes Studio / Hermes Web UI. The GitHub
repository remains EKKOLearnAI/hermes-studio, and the npm package and server CLI
remain hermes-web-ui; use these names in clone and installation commands.
Captured in Ekko Studio v0.7.18 on 2026-09-10. Chat and workflow screens use demo data.
| Visual workflows | Agent Manager |
|---|---|
![]() |
![]() |
| Connect agent steps and add a human approval gate. | Manage agent installations, settings, and updates in one place. |
Browse installed skills, read their instructions, and enable them as needed.

| Area | What Ekko Studio does |
|---|---|
| Multi-agent runtime | Runs Hermes, Ekko, Claude Code, Codex, Pi, Grok, and OpenCode with streaming responses, tool traces, generated-file previews, persistent sessions, and standalone desktop chat windows. |
| Studio workspace | Provides shared chats, group chat, global-agent runs, workflows, files, voice, media, devices, themes, logs, usage, and App connectivity across agent runtimes. |
| Agent control planes | Keeps Hermes profiles, providers, models, memory, skills, plugins, jobs, Kanban, channels, and runtime management in their owning agent module. |
| Automation | Builds executable visual workflows and connects the supported runtimes through schedules, approval gates, group-chat rooms, platform channels, and MCP servers. |
| Workspace tools | Provides a file browser, web terminal, Desktop Agent Browser, voice input/output, coding-agent runners, device discovery, Journey graph, and performance views. |
| Distribution | Ships as a desktop app for Windows/macOS/Linux, an npm CLI package, and a Docker image. |
Ekko Studio provides a shared workspace for its supported agent runtimes, grouped into three agent families:
| Agent family | Runtime | Owned behavior |
|---|---|---|
| Hermes | Hermes | Profiles, providers, models, skills, plugins, memory, jobs, Kanban, channels, MCP, terminal, and Hermes runtime integration. |
| Ekko | Ekko | Ekko execution, approvals, clarifications, memory, MCP, and provider runtime behavior. |
| Coding | Claude Code, Codex, Pi, Grok, OpenCode | Coding-agent installation, configuration, proxies, sessions, and process execution. |
Studio owns capabilities shared by those families: single chat, group chat,
global-agent orchestration, workflows, webhooks, sessions, files and uploads,
TTS/STT, media, pets, themes, devices, networking, logs, usage, authentication,
and App connectivity. Studio-owned HTTP APIs use /api/studio/*; Hermes-owned
control-plane APIs use /api/hermes/*. Already-released mobile App paths are
handled by one centralized compatibility layer instead of duplicate legacy
controllers.
/chat-run; Studio dispatches each run to Hermes, Ekko, Claude Code, Codex, Pi, Grok, or OpenCode through runtime adaptersUnified configuration for 10 platforms in one page:
| Platform | Features |
|---|---|
| Telegram | Bot token, mention control, reactions, free-response chats |
| Discord | Bot token, mention, auto-thread, reactions, channel allow/ignore lists |
| Slack | Bot token, mention control, bot message handling |
| Enable/disable, mention control, mention patterns | |
| Matrix | Access token, homeserver, auto-thread, DM mention threads |
| Feishu (Lark) | App ID / Secret, mention control |
| DingTalk | Client ID / Secret, mention control |
| QQBot | App ID / Secret, mention control |
| QR code login (scan in browser, auto-save credentials) | |
| WeCom | Bot ID / Secret |
~/.hermes/.env~/.hermes/config.yaml~/.hermes/auth.json)/v1/models)/v4).tar.gz)ekko-studio-* servers, profile injection, and api / browser / devices / use toolsetsAUTH_TOKEN env var)admin / 123456; users are prompted after login to change the default username and passwordCLI maintenance commands:
# Delete persisted login IP lock records
hermes-web-ui clear-login-locks
# Delete login locks and restart the running Studio server
hermes-web-ui clear-login-locks --restart
# Create or reset the default super administrator login to admin / 123456
hermes-web-ui reset-default-login
clear-login-locks removes ${HERMES_WEB_UI_HOME:-~/.hermes-web-ui}/.login-lock.json. If the server is running, restart it to clear in-memory lock state. reset-default-login updates the Studio account database; if an admin user already exists, its password is reset to 123456 and the account is enabled as a super administrator.
docs/voice-dialogue.md.latest assets if the Cloudflare update feed is unavailableDownload the latest Ekko Studio desktop installer from GitHub Releases.
Desktop builds are published for macOS, Windows, and Linux, with separate
architecture assets where applicable. The desktop app bundles the Studio
runtime and stores Hermes Agent data in ~/.hermes on Windows, macOS, and Linux.
The desktop wrapper stores its own Studio state separately in
~/.hermes-web-ui unless HERMES_WEB_UI_HOME is set.
After the packaged desktop app starts, it installs managed command shims so the desktop app, bundled Hermes Agent CLI, and bundled server CLI do not conflict:
| Command | Description |
|---|---|
ekko-studio |
Open the Ekko Studio desktop app |
ekko-studio cli ... |
Run the bundled Hermes Agent CLI |
ekko-studio web ... |
Run the bundled hermes-web-ui command |
ekko-studio -h |
Show wrapper help |
ekko-studio-mcp [api|browser|devices|use] |
Run one managed Studio MCP toolset |
The desktop command is ekko-studio; the previous managed hermes-studio
command is removed when the new shim is installed. No compatibility alias is created.
Use ekko-studio cli -h for Hermes Agent CLI help and
ekko-studio web -h for server CLI help. ekko-studio-mcp defaults to the
api toolset; choose browser, devices, or use to keep the exposed MCP
surface focused on the current task.
Desktop auto-updates read the latest feed from
https://download.ekkolearnai.com/latest first. If that endpoint is
unavailable, the updater falls back to
https://github.com/EKKOLearnAI/hermes-studio/releases/latest/download.
npm install -g hermes-web-ui
hermes-web-ui start
Single-container deployment with integrated Hermes Agent:
# Use pre-built image (Recommended)
WEBUI_IMAGE=ekkoye8888/hermes-web-ui docker compose up -d
# Or build from source
docker compose up -d --build
docker compose logs -f hermes-webui
./hermes_data./hermes_data/hermes-web-ui/.tokendocker-compose.ymlFor detailed notes and troubleshooting, see docs/docker.md.
When Studio starts backend chat features, it prefers a source checkout that
contains run_agent.py such as ~/.hermes/hermes-agent. If no source checkout
is found, it falls back to the Python environment used by the installed
hermes command, then the system Python. This supports both source installs
and package installs such as pip install hermes-agent.
These variables configure Ekko Studio, its local Hermes runtime integration, and development/preview helpers. Provider API keys and Hermes Agent settings are normally managed through Hermes profiles; environment variables here are process-level overrides.
| Variable | Default | Description |
|---|---|---|
PORT |
8648 |
Studio server listen port. |
BIND_HOST |
0.0.0.0 |
Studio server bind host. Set :: explicitly for IPv6. |
HERMES_LAN_ADVERTISE_URL |
unset | Reachable Studio origin used in App LAN QR codes. Set this to the Docker host's LAN URL when Studio is opened through localhost, for example http://192.168.1.20:6060. |
HERMES_APP_ENTITLEMENT_REQUIRED |
true |
Require a valid cloud-signed App entitlement before accepting a LAN App relay connection. Set false only for temporary compatibility diagnostics. |
HERMES_APP_ENTITLEMENT_PUBLIC_KEY |
built in | Optional PEM public-key override for RS256 App entitlements. The expected issuer is hermes-studio-server and audience is ekko-studio. |
HERMES_WEB_UI_HOME |
~/.hermes-web-ui |
Studio data home for auth token, credentials, logs, DB, and default uploads. HERMES_WEBUI_STATE_DIR is also supported as a compatibility alias. |
HERMES_WEBUI_STATE_DIR |
unset | Compatibility alias for HERMES_WEB_UI_HOME. |
HERMES_WEB_UI_DISABLE_MCP_AUTOINJECT |
unset | Disable startup injection of the managed ekko-studio-* MCP servers into Hermes profile configs. |
HERMES_WEB_UI_ALLOW_TRANSIENT_MCP_AUTOINJECT |
unset | Allow managed MCP injection when HERMES_WEB_UI_HOME is under a temporary directory, such as Version Preview runtimes. |
UPLOAD_DIR |
$HERMES_WEB_UI_HOME/upload |
Upload root override. Files are stored below profile-scoped subdirectories. |
| `CORS |