ekko-studio

EKKOLearnAI活跃维护

本地优先的多智能体工作台,支持多智能体对话、编码和可视化工作流,桌面端和网页端都能用。

Ekko Studio is a local-first AI workspace for multi-agent chat, coding, and visual workflows, available on desktop and the web.

v0.8.20发布于 2026-11-09 04:26 UTC11,739star +24 / 7 天1,458fork同步于 2026-11-10 17:28 UTC

怎么上手

由 README 提炼,执行前请确认
npm install -g ekko-studio && ekko-studio-web start
硬件要求按 README 说明

README 未说明显存或 GPU 要求;编码智能体在运行 Studio 后端的机器上执行,需在该机器安装对应 CLI。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

本地优先的多智能体 AI 工作台,把聊天、编码和可视化工作流集中到桌面端与自托管网页端

本地优先的多智能体工作台,支持多智能体对话、编码和可视化工作流,桌面端和网页端都能用。

核心能力

  • 统一接入 Hermes、Ekko 及 14 种编码智能体
  • 用 Vue Flow 画布编排带审批门和循环的工作流
  • 内置 SQLite 会话库并支持多会话与群聊
  • 提供文件浏览器、终端、语音与用量分析
  • 桌面端覆盖 Windows/macOS/Linux 并提供 Docker 镜像

容易踩的坑

npm 安装方式只发现已有的 Hermes 安装,不内置 Hermes 运行时;编码智能体需自行在宿主机器安装 CLI,ZCode、Cursor、Antigravity 需手动安装;DSH 原生插件安装要求机器 PATH 中有 pnpm。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.8.20
  1. v0.8.20Ekko Studio v0.8.20最新正式版2026-11-09 · 2026-11-09 04:26 UTC

    Studio v0.8.20

    1. 为 Person 待处理投递计数增加按来源会话查询的索引,减少大数据量时的全表扫描;兼容无效的旧 JSON 数据,不改写历史记录 (#3723)
    2. Ekko 的 OpenAI Chat 请求将系统指令按原有顺序合并到开头的一条 system 消息,改善严格聊天模板兼容性,并保留普通消息、工具、图片和推理内容 (#3728)
    3. DSH 升级先在独立目录安装确定版本,检查运行时组合、依赖和 ACP 初始化,通过后才切换;失败时保留当前安装与版本锁定,已有可用 CLI 可作为恢复目标 (#3730)
    4. Agent 管理新增 DSH 精确版本安装与锁定、显式切换 latest、重新检查并恢复上一版本,以及适配器和已验证版本信息;自动更新尊重锁定版本 (#3730)
    5. DSH ACP 适配器更新到修订版 5,兼容已验证的 0.2.1-rc.5 与 0.2.2-rc.1 结构,保留原生初始化、预设选择与恢复、权限策略和回合保存;缺失关键能力时明确拒绝启用 (#3730)
    6. 修复群聊全局 Agent 的模型与推理强度设置在新增、编辑或重启后丢失的问题;此前已经丢失的选择需重新设置 (#3730)
    7. Antigravity 原生配置和技能链接遇到 EPERM、ENOTSUP 或 EINVAL 时改用独立运行副本,保留原生设置;副本是本次运行的快照,不会自动同步后续凭据变更 (#3730)

    涉及 PR:#3723、#3728、#3730;发版准备:#3731。

  2. v0.8.19Ekko Studio v0.8.192026-11-07 · 2026-11-07 04:20 UTC
    查看更新说明

    Studio v0.8.19

    1. 修复已授权的 Codex、Nous、xAI、Qwen 等 provider 从模型列表消失的问题,保留 Copilot 启用与凭据要求 (#3720)。

    完整变更:https://github.com/EKKOLearnAI/ekko-studio/compare/v0.8.18...v0.8.19

  3. v0.8.18Ekko Studio v0.8.182026-11-07 · 2026-11-07 02:44 UTC
    查看更新说明

    Studio v0.8.18

    1. Person 对话新增置顶与取消置顶,置顶对话优先排列,各组内按最近活动排序;状态保存到数据库,刷新后保留 (#3704)
    2. 修复实时语音在回复完成、工具事件、断线重连或刷新重建消息时重复朗读的问题,保留本轮朗读进度与句子边界,加载旧历史不再误播;后续回合仍可正常朗读相同文本 (#3708)
    3. 宽屏侧栏与主内容区使用统一外轮廓圆角,消除交界处的内部弧形缺口;覆盖普通及 Agent 配置侧栏,保留区域圆角、显式零圆角、壁纸裁切与 RTL 镜像 (#3709)
    4. 完善 Hermes 0.23 浏览器兼容:通过上游包管理器准备固定版本 Chromium,使用相对路径清单并在打包搬移后复查;兼容旧版浏览器路径,初始化延迟加载的 MCP SDK,并按当前运行时提供的浏览器工具生成指引 (#3712)
    5. 完善 GitHub Copilot 插件准备与凭据保存,模型列表仅认可目标 profile 运行时可读取的凭据;登录绑定发起时的 profile,避免切换后写错位置,启动迁移尊重禁止自动安装与用户禁用插件的选择 (#3712)
    6. 运行时构建默认 Python 更新到 3.14.7、Node.js 更新到 26.13.0,拒绝复用版本不匹配的旧解释器缓存,并支持 Node 版本覆盖;默认 Hermes 仍为 0.22.5,本版不自动切换到 0.23 (#3712)
    7. 补充实时语音、对话置顶、Copilot 与运行时构建的定向测试;E2E 固定使用受当前 Playwright 支持的 Ubuntu 24.04,Windows ARM64 运行时验证支持指定 Hermes 源版本 (#3704, #3708, #3712)

    完整变更:https://github.com/EKKOLearnAI/ekko-studio/compare/v0.8.17...v0.8.18

  4. hermes-0.23.0-runtime2026-11-06 · 2026-11-06 08:52 UTC
    查看更新说明

    使用兼容修复后的打包脚本重新构建的 Hermes Agent 0.23.0 runtime。

    • Hermes 源版本:v0.23.0,提交 2bd378ed1b8d6bf2192cb26e0a55ff3091e6bd19。
    • 打包脚本提交:7b2c706877f77975c83db0bbf4bfe5fd7640bf45(PR #3712)。
    • 内置 Python 3.14.7、Node.js 26.13.0;保留上游 Git checkout 与可搬移的 Python 环境。
    • macOS arm64/x64、Windows x64、Linux x64 使用 Hermes PM 固定版本 Chromium 及相对路径 payload manifest,打包时检查搬移后的浏览器路径。
    • Windows ARM64、Linux ARM64 按现有平台策略不附带 Hermes Chromium;Studio 内置 MCP 浏览器由应用提供。
    • 每个平台提供 tar.gz、SHA256 文件和 JSON manifest。

    构建与原生打包验收

  5. v0.8.17Ekko Studio v0.8.172026-11-05 · 2026-11-05 13:44 UTC
    查看更新说明

    更新内容

    1. 修复 Bot 派发后台任务后没有回复并误报“Agent returned no output”的问题;等待前正常生成、流式发送并保存回复,后台结果仍自动回传,任务与协作阶段保持进行中,达到步骤上限也能完成本轮收尾 (#3699)

    2. 等待后台任务时不再误触发完成铃声、完成通知或 App 完成推送,直接发送与恢复会话保持一致;保留防重复查询和结果回传去重,供应商返回空正文或违规工具调用时仍明确报错 (#3699)

    3. 个人 Bot 消息标题优先显示用户自定义名称,重命名后已有消息和新回复同步更新,重载后保留;未命名时使用本地化预设名称,头像与动画继续对应所选 Bot 外观 (#3700)

    涉及 PR:#3699、#3700;发版准备 PR:#3702。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Ekko Studio was previously named Hermes Studio / Hermes Web UI. The GitHub repository is EKKOLearnAI/ekko-studio. The primary npm package is ekko-studio, with the ekko-studio-web command. The legacy hermes-web-ui package and command remain supported and receive the same releases.

    Screenshots

    Captured from v0.8.13 source on 2026-11-03, running locally with isolated data. The workflow is an example created in the UI and has not been run; Agent statuses reflect this machine. See capture notes.

    Visual workflowsAgent Manager
    Idle example workflow connecting Claude, Codex, and a review node with an approval gateAgent Manager with all 16 built-in and coding-agent cards
    Connect agent steps and add a human approval gate; this example is not running.Manage Agent installations, settings, and updates in one place.

    Core Capabilities

    AreaWhat Ekko Studio does
    Multi-agent runtimeConnects the agents listed below with streaming responses, tool traces, generated-file previews, persistent sessions, and standalone desktop chat windows.
    Studio workspaceProvides shared chats, group chat, global-agent runs, workflows, files, voice, media, devices, themes, logs, usage, and App connectivity across agent runtimes.
    Agent control planesKeeps Hermes profiles, providers, models, memory, skills, plugins, jobs, Kanban, channels, and runtime management in their owning agent module.
    AutomationBuilds executable visual workflows and connects the supported runtimes through schedules, approval gates, group-chat rooms, platform channels, and MCP servers.
    Workspace toolsProvides a file browser, web terminal, Desktop Agent Browser, screenshot capture, voice input/output, coding-agent runners, device discovery, Journey graph, and performance views.
    DistributionShips as a desktop app for Windows/macOS/Linux, an npm CLI package, and a Docker image.

    Supported Agents

    Single chat, group chat, and workflows share the same Agent catalog. Coding agents run on the machine hosting the Studio backend; their CLI must be installed there.

    AgentsConfiguration and installation
    Ekko Agent, Hermes AgentEkko is built in. Desktop and Docker bundle a Hermes runtime; npm installations discover an existing Hermes installation.
    Claude Code, Codex, Pi, Grok, OpenCode, DeepSeek Harness (DSH)Studio-scoped or native global configuration; installation and supported updates through Agent Manager.
    Qwen Code, Kimi Code, CodeBuddy, GitHub Copilot CLI, ZCodeStudio-scoped or native global configuration. ZCode requires manual installation; the others support npm installation through Agent Manager.
    Cursor, Qoder, AntigravityCursor and Qoder use native global configuration. Antigravity supports scoped and global launches. Cursor and Antigravity require manual installation.

    Scoped mode uses isolated session configuration; supported runtimes can use the selected Studio provider/model. Global mode uses the CLI's existing configuration and sign-in. Available models, tools, and context controls depend on the runtime. See native coding agents, Antigravity CLI, and DSH setup for details.

    Features

    AI Chat

    • Start a conversation from responsive Agent cards; Ekko is the initial default, and Studio remembers the last agent, model, workspace, launch mode, and reasoning options
    • Real-time chat streaming over Socket.IO /chat-run; Studio dispatches each run to the selected runtime adapter
    • Multi-session management — create, rename, delete, switch between sessions
    • Self-built session database — local SQLite storage for Studio sessions; Hermes state.db remains a read-only source for Hermes history APIs
    • Session grouping by source (Telegram, Discord, Slack, etc.) with collapsible accordion
    • Active session indicator — live sessions pin to top with spinner icon
    • Sessions sorted by latest message time
    • Markdown rendering with syntax highlighting and code copy
    • Tool call detail expansion (arguments / result)
    • Profile-scoped file uploads, clipboard image/file paste, and workspace attachments
    • File download support — download uploaded files and agent-generated files by resolved path across local, Docker, SSH, and Singularity backends
    • Inline previews for generated HTML, PDF, DOCX, PPTX, XLSX, CSV, images, Markdown, and source files
    • Session search — Ctrl+K search across the Studio local session database; read-only Hermes history sessions are not included
    • Session categories, message references, compression progress, and durable background delegation results
    • Persistent task cards with live step progress, approval prompts, and clarification questions
    • Profile-aware model selector with runtime-specific provider/model availability
    • Per-turn token usage, cache hits, estimated cost, and generation speed; supported runtimes also expose context usage and compression controls

    Platform Channels

    Unified configuration for 10 platforms in one page:

    PlatformFeatures
    TelegramBot token, mention control, reactions, free-response chats
    DiscordBot token, mention, auto-thread, reactions, channel allow/ignore lists
    SlackBot token, mention control, bot message handling
    WhatsAppEnable/disable, mention control, mention patterns
    MatrixAccess token, homeserver, auto-thread, DM mention threads
    Feishu (Lark)App ID / Secret, mention control
    DingTalkClient ID / Secret, mention control
    QQBotApp ID / Secret, mention control
    WeChatQR code login (scan in browser, auto-save credentials)
    WeComBot ID / Secret
    • Credentials and channel behavior settings write to .env and config.yaml under the selected Hermes profile
    • Per-platform configured/unconfigured status detection
    • Gateway autostart is opt-in under Hermes settings; ordinary Studio chat does not require a platform Gateway

    Usage Analytics

    • Total token usage breakdown (input / output)
    • Session count with daily average
    • Estimated cost tracking & cache hit rate
    • Model usage distribution chart
    • 30-day daily trend (bar chart + data table)

    Scheduled Jobs

    • Create, edit, pause, resume, delete cron jobs
    • Trigger immediate execution
    • Cron expression quick presets

    Kanban

    • Profile-aware Kanban board for planning and tracking agent work
    • Task creation, updates, and status movement from the dashboard
    • Uses the Hermes Kanban CLI and its task storage, with Studio authentication and profile access controls

    Visual Workflows

    • Vue Flow canvas for the supported Agent catalog, with file/image attachments and runtime-specific launch settings
    • Directed edges, structured conditions, success/failure routes, loops, and approval gates
    • Import/export for portable workflow definitions and profile-aware workspaces
    • Run budgets, deadlines, stop/rerun controls, and persisted execution history
    • Frozen run snapshots, node conversations, edge decisions, and evidence playback on the canvas

    Model Management

    • Auto-discover models from credential pool (~/.hermes/auth.json)
    • Fetch available models from each provider endpoint (/v1/models)
    • Add, update, and delete providers (preset and custom OpenAI-compatible)
    • OAuth/device flows for OpenAI Codex, Nous Portal, xAI, Claude, and GitHub Copilot
    • Provider URL auto-detection for non-v1 API versions (e.g. /v4)
    • Provider-level model grouping, visible-model controls, aliases, refresh, and default switching
    • Separate STT and TTS provider catalogs under Models

    Multi-Profile

    • Create, rename, delete, and switch between Hermes profiles
    • Clone existing profile or import from archive (.tar.gz)
    • Export profile for backup or sharing
    • Profile-scoped configuration, cache, uploads, sessions, jobs, usage, memory, skills, plugins, providers, and model visibility
    • Account-bound profile access: super administrators can manage every profile; regular administrators only see and use profiles assigned to their account

    File Browser

    • Browse files on remote backends (local, Docker, SSH, Singularity)
    • Upload, download, rename, copy, move, and delete files
    • Store uploaded files under the selected/requested Hermes profile while keeping downloads path-based for agent-generated artifacts outside the upload directory
    • Create directories
    • Preview and edit supported files with syntax highlighting, then attach workspace files back to a chat

    Group Chat

    • Multi-agent chat rooms with real-time messaging via Socket.IO
    • @mention routing — mention an agent to trigger a contextual reply
    • Context compression — automatic conversation summarization when history exceeds token threshold
    • Typing status and reply progress indicators
    • Room creation, deletion, and invite code management
    • Agent management — add/remove agents from rooms with per-agent profiles
    • SQLite message persistence
    • Mobile responsive with collapsible sidebar

    Coding Agents

    • Detect, configure, launch, and monitor the 14 coding-agent integrations listed above; install and update supported CLIs from Agent Manager
    • Built-in coding-agent terminal, session history, workspace selection, images, and file diffs
    • Dedicated proxy routes and API modes for provider/model compatibility
    • Standalone desktop chat windows and persisted output/reasoning metadata
    • Shared ~/.agents/skills entries are read-only in Coding Agent pages; runtime-specific settings, private skills, and MCP controls vary by agent
    DeepSeek Harness (DSH)
    • Use DSH in single chats, group-chat rooms, and workflow nodes, with Studio-selected providers/models or native global configuration.
    • Select an Agent preset when creating a chat, adding a group member, or configuring a workflow node; resumed conversations retain their selected preset.
    • Reuse the native web profile’s plugins. Plugin configuration embeds the plugins’ own settings UI with light/dark theme support; Plugin list manages installed packages. Agent presets have a separate Studio management page.
    • Manage DSH settings, instructions, MCP, and private skills. Shared ~/.agents/skills entries are display-only in every Coding Agent page; editing and deletion are blocked.

    Install DSH on the machine running the Studio backend through Agent Manager. Native plugin installation requires pnpm on that machine’s PATH. See DSH setup, profiles, and compatibility for details.

    Desktop Agent Browser

    • Desktop-only multi-tab browser that agents can navigate through the managed MCP server
    • Isolated browser profiles, per-tab control leases, proxy settings, downloads, cookies, and permissions
    • Accessibility snapshots, screenshots, console logs, and page annotations for agent-assisted browsing
    • Bounded page queries and sequential action batches, with observations of changed text, selected values, and newly opened tabs

    Mobile App & Session Sharing

    • Connect the App over LAN, authenticated direct transport, or cloud relay, with relay fallback when a direct connection is unavailable
    • Follow single-chat, group-chat, and workflow progress through task cards and notifications; supported iOS builds also show Live Activities
    • Share a single conversation with an App account, configure its input/file/voice/terminal permissions, and revoke access
    • Use persistent terminal sessions from the App

    See App connectivity and session sharing for setup and permission boundaries.

    JEV Evaluation

    • Profile-scoped evaluation settings for memory recall, skill matching, and learning
    • Optional browser-action, group-chat, and workflow assessments with independent controls

    See JEV configuration and integration status.

    Skills & Memory

    • Browse and search installed skills
    • View skill details and attached files
    • Install and manage Skill Bundles with profile-aware usage statistics
    • User notes, persistent Ekko Agent memory, and profile-scoped memory management
    • Interactive Journey graph for skill/memory relationships, category filtering, detail inspection, and playback

    Theme Customization

    • Light/dark mode, interface style, base font size, text color, and active color
    • Per-account background images and live preview across the workspace

    Logs

    • View agent / server / error logs
    • Filter by log level, log file, and keyword
    • Structured log parsing with HTTP access log highlighting

    Admin & Runtime Management

    • Device and LAN peer views for local-network discovery and peer tooling
    • MCP manager for the managed ekko-studio-* servers, profile injection, and api / browser / devices / use / plan toolsets; task plans and clarification use the dedicated ekko-studio-interaction server
    • Runtime version and version-preview tooling for testing newer builds in isolation
    • Performance monitor views for super administrators

    Authentication

    • Token-based auth (auto-generated on first run or set via AUTH_TOKEN env var)
    • Username/password login with account management in Settings
    • Default bootstrap credentials are admin / 123456; users are prompted after login to change the default username and password
    • Super administrators can manage users and profile bindings; regular administrators can manage their own account details

    CLI maintenance commands:

    # Delete persisted login IP lock records
    ekko-studio-web clear-login-locks
    
    # Delete login locks and restart the running Studio server
    ekko-studio-web clear-login-locks --restart
    
    # Create or reset the default super administrator login to admin / 123456
    ekko-studio-web 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.

    Settings

    • Display (streaming, compact mode, reasoning, cost display)
    • Agent (max turns, timeout, tool enforcement)
    • Memory (enable/disable, char limits)
    • Session reset (idle timeout, scheduled reset)
    • Privacy (PII redaction)
    • Model settings (default model & provider)
    • Profile and provider configuration

    Voice / TTS / STT

    • Manage voice providers under Models → STT and Models → TTS; existing Settings → Voice links redirect there.
    • TTS adapters: Edge, OpenAI-compatible, MiMo, Doubao, ElevenLabs, Gemini, xAI, Mistral, MiniMax, and DeepInfra.
    • STT adapters: Browser, OpenAI-compatible, Doubao, Groq, Mistral, xAI, ElevenLabs, and DeepInfra.
    • Use editable turn-based voice input from the chat mic, or open the full-screen real-time voice stage for a continuous voice-focused experience.
    • Provider keys and MiMo voice-clone audio stay server-side; the browser receives only masked secret status.
    • Starting a new voice turn stops current assistant playback first, but does not implicitly cancel an active agent run.
    • For supported settings, security notes, and current non-goals, see docs/voice-dialogue.md.
    • The real-time stage does not claim simultaneous full-duplex listen/speak; telephony and always-on wake-word listening remain out of scope.

    Web Terminal

    • Integrated terminal powered by node-pty and @xterm/xterm
    • Multi-session support — create, switch between, and close terminal sessions
    • Real-time keyboard input and PTY output streaming via WebSocket
    • Window resize support

    Desktop App & Updates

    • Native Electron shell for Windows, macOS, and Linux
    • Bundles the Studio runtime and starts the local server automatically
    • Capture a screen region, annotate it, and attach it to single or group chat; configure an optional global screenshot shortcut
    • Hide Studio during capture on supported Windows/macOS setups; Linux capture uses X11 or the system Screenshot Portal according to the desktop environment
    • Uses Cloudflare download endpoints for desktop auto-update metadata and assets first
    • Falls back to GitHub Releases latest assets if the Cloudflare update feed is unavailable
    • Windows upgrades attempt to close an existing Ekko Studio process before replacing files

    Quick Start

    Desktop App (Recommended)

    Download 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:

    CommandDescription
    ekko-studioOpen 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 -hShow wrapper help
    ekko-studio-mcp [api|browser|devices|use|plan]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, use, or plan 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/ekko-studio/releases/latest/download.

    npm

    npm install -g ekko-studio
    ekko-studio-web start
    

    The legacy package hermes-web-ui continues to receive the same releases. Both packages expose ekko-studio-web and the existing commands. Install either package; their global command aliases overlap. To switch, uninstall the old package before installing the other. User data remains in ~/.hermes-web-ui.

    Open http://localhost:8648

    Requires Node.js 23 or newer. Ekko Agent is included; to use Hermes Agent, install its runtime on the same machine or use the bundled Desktop/Docker distribution.

    Docker Compose

    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
    

    Open http://localhost:6060

    • Persistent Hermes data is stored in ./hermes_data
    • Studio auth token is stored in ./hermes_data/hermes-web-ui/.token
    • On first run with auth enabled, the token is printed to container logs
    • All runtime settings are environment-variable driven in docker-compose.yml

    For detailed notes and troubleshooting, see docs/docker.md.

    Hermes Agent Runtime Discovery

    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.

    Studio Environment Variables

    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.

    VariableDefaultDescription
    PORT8648Studio server listen port.
    BIND_HOST0.0.0.0Studio server bind host. Set :: explicitly for IPv6.
    HERMES_LAN_ADVERTISE_URLunsetReachable 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_REQUIREDtrueRequire a valid cloud-signed App entitlement before accepting a LAN App relay connection. Set false only for temporary compatibility diagnostics.
    HERMES_APP_ENTITLEMENT_PUBLIC_KEYbuilt inOptional 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-uiStudio 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_DIRunsetCompatibility alias for HERMES_WEB_UI_HOME.
    HERMES_WEB_UI_DISABLE_MCP_AUTOINJECTunsetDisable startup injection of the managed ekko-studio-* MCP servers into Hermes profile configs.
    HERMES_WEB_UI_ALLOW_TRANSIENT_MCP_AUTOINJECTunsetAllow managed MCP injection when HERMES_WEB_UI_HOME is under a temporary directory, such as Version Preview runtimes.
    UPLOAD_DIR$HERMES_WEB_UI_HOME/uploadUpload root override. Files are stored below profile-scoped subdirectories.
    CORS_ORIGINSsame host onlyComma- or space-separated cross-origin allowlist for HTTP, Socket.IO, and WebSocket requests. Set * only when you intentionally need legacy wildcard CORS.
    AUTH_TOKENauto-generatedExplicit bearer token. If unset, Studio creates one under HERMES_WEB_UI_HOME.
    AUTH_JWT_SECRETAUTH_TOKENJWT signing secret override for username/password sessions.
    HERMES_WEB_UI_AUTH_JWT_EXPIRES_IN30dUsername/password session JWT lifetime. Accepts seconds or s/m/h/d suffixes, for example 12h or 7d.
    PROFILEdefaultStartup/default Hermes profile. Runtime requests use the profile selected by the frontend and authorized for the current account.
    LOG_LEVELinfoServer log level.
    BRIDGE_LOG_LEVEL$LOG_LEVEL or infoBridge log level.
    MAX_DOWNLOAD_SIZE200MBMaximum file download size.
    MAX_EDIT_SIZE10MBMaximum editable file size.
    WORKSPACE_BASEcurrent user's home directoryBase directory for workspace browsing.
    HERMES_HOME~/.hermesHermes data home on Windows, macOS, and Linux.
    HERMES_BINhermesCustom Hermes CLI binary path.
    HERMES_AGENT_ROOTauto-discoveredHermes Agent source checkout containing run_agent.py.
    HERMES_AGENT_BRIDGE_PYTHONauto-discoveredPython interpreter used to launch the agent bridge.
    HERMES_AGENT_BRIDGE_UVauto-discovereduv executable used to launch the agent bridge when available.
    UVauto-discoveredFallback uv executable path.
    PYTHONauto-discoveredFallback Python executable for the agent bridge.
    HERMES_AGENT_BRIDGE_ENDPOINTplatform defaultAgent bridge broker endpoint. Windows defaults to tcp://127.0.0.1:18765; macOS/Linux defaults to ipc:///tmp/hermes-agent-bridge.sock.
    HERMES_AGENT_BRIDGE_TIMEOUT_MS120000Timeout for Node requests to the bridge broker.
    HERMES_AGENT_BRIDGE_CONNECT_RETRY_MS5000Short retry window for connecting to the bridge socket.
    HERMES_AGENT_BRIDGE_STARTUP_TIMEOUT_MS120000Timeout while waiting for the Python bridge to become ready.
    HERMES_DSH_READY_TIMEOUT_MS180000DSH configuration helper startup/readiness budget in milliseconds, including its native authentication/frontend probes. Set a positive integer up to 2147483647; invalid values use the default. For slower plugin-heavy starts, use e.g. 360000. The two per-request probe timeouts stay at 5 seconds.
    EKKO_STUDIO_DSH_ACP_TIMEOUT_MS60000Per-request budget for DSH ACP initialization, session creation/restoration and configuration. For slow starts, use e.g. 240000. Prompt generation has no request timeout; session close keeps its separate 10-second budget. Compatibility alias: HERMES_DSH_ACP_TIMEOUT_MS.
    EKKO_STUDIO_ACP_TIMEOUT_MS60000Independent per-request budget for other native ACP agents' initialization, session creation/restoration and model/effort selection. Prompt generation has no request timeout. Compatibility alias: HERMES_ACP_TIMEOUT_MS.
    EKKO_STUDIO_AGENT_MODEL_DISCOVERY_TIMEOUT_MS20000Total deadline for each native model-discovery subprocess, across all request/response exchanges, independent of both ACP chat request budgets. For slow discovery, use e.g. 240000. An explicit internal timeoutMs override takes precedence over both environment names. Compatibility alias: HERMES_AGENT_MODEL_DISCOVERY_TIMEOUT_MS.
    HERMES_AGENT_BRIDGE_STOP_ON_SHUTDOWNenabledStop the bridge broker during Studio shutdown and restart. Set 0, false, no, or off to keep the bridge across restarts.
    HERMES_AGENT_BRIDGE_AUTO_RESTARTenabledAuto-restart the bridge broker after unexpected exit. Set 0, false, no, or off to disable.
    HERMES_AGENT_BRIDGE_RESTART_DELAY_MS1000Base delay for bridge auto-restart backoff.
    HERMES_AGENT_BRIDGE_PLATFORMcliPlatform identity passed to Hermes Agent.
    HERMES_AGENT_BRIDGE_WORKER_TRANSPORTplatform defaultProfile worker transport. Set tcp for loopback TCP or ipc/unix for Unix domain sockets; defaults to Windows TCP and macOS/Linux IPC.
    HERMES_AGENT_BRIDGE_WORKER_PORT_BASE18780Base port for TCP worker endpoints.
    HERMES_BRIDGE_PROVIDERprofile/defaultProvider override for bridge runs.
    HERMES_BRIDGE_TOOLSETSprofile/defaultToolset override for bridge runs.
    HERMES_BRIDGE_MAX_TURNSprofile/defaultMaximum turn override for bridge runs.
    HERMES_BRIDGE_SUPPRESS_PLATFORM_HINTcliControls bridge platform hint suppression passed to Hermes Agent.
    HERMES_OPENROUTER_APP_REFERERhttps://ekkostudio.xyzOpenRouter attribution referer sent by bridge runs.
    HERMES_OPENROUTER_APP_TITLEEkko StudioOpenRouter attribution title sent by bridge runs.
    HERMES_OPENROUTER_APP_CATEGORIEScli-agent,personal-agentOpenRouter attribution categories sent by bridge runs.
    HERMES_WEB_UI_MANAGED_GATEWAYenabledControls Studio-managed Hermes gateway process handling. Set 0, false, no, or off to use hermes gateway start instead.
    HERMES_WEB_UI_DISABLE_GATEWAY_AUTOSTARTunsetOverride the opt-in Hermes Gateway autostart policy. Set 1, true, yes, or on to disable startup checks and configuration-driven reconciliation even when enabled in settings.
    HERMES_WEB_UI_DISABLE_SKILL_INJECTIONunsetSkip startup bundled skill injection. Set 1, true, yes, or on when bundled skills are managed outside Studio. When injection is enabled, Studio updates only skills it previously installed or identical existing bundled copies; local edits and user-owned same-name skills are skipped.
    HERMES_WEB_UI_STOP_GATEWAYS_ON_SHUTDOWNenabledControls whether Studio shutdown also stops only the gateway processes started and tracked by this Studio process. Set 0 or false to detach them; externally discovered gateways are never adopted or stopped.
    HERMES_WEB_UI_SHUTDOWN_FORCE_EXIT_MS10000Short cleanup budget before Studio force-stops its owned process trees and exits.
    HERMES_DESKTOP_STOP_TIMEOUT_MS20000Desktop host's existing outer deadline before it force-stops the complete Web UI process tree; independent from the Web UI's 10-second cleanup budget.
    HERMES_GATEWAY_URL / GATEWAY_URLunsetExplicit Hermes gateway upstream URL for proxy routes.
    GATEWAY_HOST127.0.0.1Default Hermes gateway upstream host for proxy routes.
    GATEWAY_PORT8642Default Hermes gateway upstream port for proxy routes.
    HERMES_WEB_UI_PREVIEW_REPOpackage repositoryGitHub repository used by Version Preview.
    HERMES_WEB_UI_PREVIEW_AGENT_BRIDGE_TRANSPORTplatform defaultVersion Preview broker transport. Set tcp to use loopback TCP for Preview on macOS/Linux; when unset, Preview follows HERMES_AGENT_BRIDGE_WORKER_TRANSPORT=tcp.
    HERMES_WEB_UI_PREVIEW_AGENT_BRIDGE_ENDPOINTisolated preview endpointDirectly overrides the Version Preview broker endpoint.
    HERMES_WEB_UI_BACKEND_PORT8648Backend port used by the Vite dev proxy.
    HERMES_WEB_UI_FRONTEND_PORT8649Frontend Vite dev server port.

    For the three EKKO_STUDIO_*_TIMEOUT_MS settings above, Studio uses the first valid value: the new name, then its HERMES_* compatibility alias, then the listed default. Values are converted with Number and must be integer milliseconds in 1..2147483647; missing, empty, zero, negative, fractional, non-finite or overflowing values are skipped. This preserves legacy numeric parsing (including surrounding whitespace, scientific notation and hexadecimal). The old names remain supported; existing HERMES_DSH_READY_TIMEOUT_MS, state paths, authentication and Hermes Agent settings are unchanged. The new prefix identifies these budgets as Studio-owned Coding Agent settings.

    Set them in the Studio server process environment and restart the server. For npm, for example: EKKO_STUDIO_DSH_ACP_TIMEOUT_MS=240000 ekko-studio-web restart. For Desktop, fully quit the app and launch it with the variables in its environment; remote Desktop clients must configure the remote server. Adding them only to a Hermes profile's .env or to an agent subprocess does not configure Studio's parent-process timers. The supplied Docker Compose setup forwards both new and legacy names from the shell or Compose .env; recreate the container after changing them. With docker run, pass them explicitly using -e.

    CLI Commands

    hermes-web-ui remains an alias for the ekko-studio-web commands below.

    CommandDescription
    ekko-studio-web start [port]Start in background; accepts a positional port or --port <port>
    ekko-studio-web client [port]Start for a remote client with gateway autostart disabled and permissive CORS
    ekko-studio-web restart [port]Restart; stops the bridge by default
    ekko-studio-web stopStop the background process
    ekko-studio-web statusCheck if running
    ekko-studio-web clear-login-locks [--restart]Clear persisted login locks, optionally restart
    ekko-studio-web reset-default-loginCreate or reset the default administrator login
    ekko-studio-web update / upgradeUpdate to the latest version and restart
    ekko-studio-web version / -vShow the version
    ekko-studio-web -hShow help
    hermes-web-ui-mcp [api|browser|devices|use|plan]Run one managed Studio MCP toolset (same as ekko-studio-mcp)

    Add --no-open to start or client when no browser should open.

    restart, update, and upgrade stop the Agent Bridge broker by default so restarted or updated servers do not reuse stale Python bridge processes. Set HERMES_AGENT_BRIDGE_STOP_ON_SHUTDOWN=0 before restarting only when you explicitly want to keep the bridge broker and running bridge sessions alive.

    update / upgrade first attempt npm cache clean --force, then install the latest version of the running package (ekko-studio@latest or hermes-web-ui@latest) and restart that package. The Web UI version check uses the same package identity. Cache cleanup is best-effort; if it fails, the updater continues with the install.

    Auto Configuration

    On startup the BFF server automatically:

    • Initializes Studio data directories, local databases, and bundled skills
    • Starts the Hermes agent bridge when a Hermes runtime is available; Gateway autostart follows the opt-in Hermes setting
    • Opens a browser on successful startup unless --no-open is set

    Development

    git clone https://github.com/EKKOLearnAI/ekko-studio.git
    cd ekko-studio
    npm install
    npm run dev
    
    npm run harness:check
    npm run test
    npm run build   # outputs to dist/
    

    See DEVELOPMENT.md for contributor commands and ARCHITECTURE.md for the complete package and state model.

    Architecture

    Browser / Desktop / App
              │ HTTP + Socket.IO
              ▼
    Koa bootstrap (composition only)
              │
              ├─ Studio platform ── chat, groups, global agent, workflows,
              │                    sessions, files, voice, devices, webhooks
              ├─ Hermes family ─── profiles, models, skills, memory, jobs,
              │                    Kanban, channels, terminal, Hermes bridge
              ├─ Ekko family ───── Ekko runtime and agent-owned services
              └─ Coding family ─── coding-agent adapters, scoped config, native CLI execution
    

    The server is organized by business ownership under packages/server/src/modules/{studio,hermes,ekko,coding-agents}. Routes stay thin, controllers own HTTP concerns, services own reusable behavior, and only packages/server/src/bootstrap may compose concrete modules and adapters. Cross-agent code belongs to Studio; an agent module must not absorb a shared product surface merely because it uses that agent today.

    Studio state and Hermes Agent state remain separate. Studio defaults to ~/.hermes-web-ui; Hermes profile data remains under the Hermes home. For the full ownership tree, dependency rules, and API migration contract, see docs/harness/server-module-boundaries.md.

    Tech Stack

    Frontend: Vue 3 + TypeScript + Vite + Naive UI + Pinia + Vue Router + vue-i18n + SCSS + markdown-it + highlight.js

    Backend: Koa 2 + Socket.IO + SQLite + node-pty

    License

    BSL-1.1

    The license covers Ekko Studio, the hermes-web-ui npm package and CLI, desktop applications, firmware, release artifacts, documentation, and associated files in this repository.

    The MCP entry point is bin/ekko-studio-mcp.mjs; tools use the ekko_studio_* prefix. Existing hermes-studio-mcp / hermes-web-ui-mcp commands and hermes_studio_* calls remain compatible. Restart the MCP client to discover the new tool names. Studio migrates managed server configurations to ekko-studio-api, ekko-studio-browser, ekko-studio-devices, ekko-studio-use, and ekko-studio-interaction.

    Privacy

    Read the Privacy Notice before configuring providers, agents or integrations.