{"id":133175,"date":"2026-06-05T05:17:47","date_gmt":"2026-06-05T05:17:47","guid":{"rendered":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-set-up-hermes-workspace\/"},"modified":"2026-06-05T05:17:47","modified_gmt":"2026-06-05T05:17:47","slug":"how-to-set-up-hermes-workspace","status":"publish","type":"post","link":"\/uk\/tutorials\/how-to-set-up-hermes-workspace","title":{"rendered":"How to set up Hermes Workspace"},"content":{"rendered":"<p>Hermes Workspace is an <strong>open-source web UI for Hermes Agent<\/strong>, a self-improving AI agent from Nous Research.<\/p><p>It brings the agent&rsquo;s chat, persistent memory, skills marketplace, terminal, and multi-agent orchestration together in a single self-hosted dashboard that you can access from any device.<\/p><p>To set up Hermes Workspace on a virtual private server (VPS), install the workspace alongside the agent, configure the gateway and dashboard, and access the interface through an SSH tunnel or a domain.<\/p><p>Running Hermes Workspace on a VPS keeps your conversations, agent memory, and API keys on infrastructure you control instead of relying on third-party services.<\/p><p><\/p><h2 class=\"wp-block-heading\" id=\"h-1-check-the-prerequisites\"><strong>1. Check the prerequisites<\/strong><\/h2><p>Hermes Workspace runs on a VPS with <strong>at least<\/strong> <strong>2 GB of RAM<\/strong> and a major Linux distribution, such as Ubuntu 24.04. The workspace works as the interface, while <a href=\"\/uk\/tutorials\/what-is-hermes-agent\">Hermes Agent<\/a> handles the tasks underneath.<\/p><p><a href=\"\/uk\/tutorials\/how-to-set-up-vps\">Set up a VPS<\/a> first if you don&rsquo;t have one yet, then connect to it over SSH.<\/p><p>Hermes Workspace needs three tools: Node.js 22 or higher, Python 3.11 or higher, and <strong>pnpm<\/strong>. Ubuntu 24.04 already includes a compatible Python version, so you only need to <a href=\"\/uk\/tutorials\/how-to-install-nodejs-ubuntu\">install Node.js<\/a> and <strong>pnpm<\/strong>.<\/p><p>Update the system first:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo apt update<\/pre><p>Install <strong>curl<\/strong> and <strong>git<\/strong>, then add the NodeSource repository for Node.js 22:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo apt install -y curl git\ncurl -fsSL https:\/\/deb.nodesource.com\/setup_22.x | sudo -E bash -\nsudo apt install -y nodejs<\/pre><p>Install <strong>pnpm<\/strong> through <strong>npm<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo npm install -g pnpm<\/pre><p>Verify that each tool is installed and meets the required version before moving on:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">node -v # 22.x or higher\npython3 -V # 3.11 or higher\npnpm -v<\/pre><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a54479354\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a54479354\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2026\/06\/hermes-workspace-prerequisites-terminal-node-python-pnpm-versions-1024x403.png\" alt=\"Terminal showing Node.js 22.22.3, Python 3.12.3, and pnpm 11.5.1 versions\" class=\"wp-image-150050\" title=\"hermes-workspace-prerequisites-terminal-node-python-pnpm-versions\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-2-install-hermes-workspace\"><strong>2. Install Hermes Workspace<\/strong><\/h2><p>If you&rsquo;ve never installed Hermes Agent before, set up Hermes Workspace with the official one-line installer. It clones the workspace, pulls Hermes Agent from PyPI, and creates the starter <strong>.env<\/strong> files in one command:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl -fsSL https:\/\/raw.githubusercontent.com\/outsourc-e\/hermes-workspace\/main\/install.sh | bash<\/pre><p>On the first run, the installer asks you to pick a model provider and enter an API key, so make sure you have one ready. Once it finishes, you&rsquo;ll see a confirmation message indicating a successful installation.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a5447c621\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a5447c621\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2026\/06\/hermes-workspace-install-terminal-install-complete-next-steps-1024x693.png\" alt=\"Terminal showing the install complete message and the next setup steps\" class=\"wp-image-150049\" title=\"hermes-workspace-install-terminal-install-complete-next-steps\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If you&rsquo;ve already <a href=\"\/uk\/tutorials\/how-to-set-up-hermes-agent\">installed Hermes Agent<\/a>, skip the one-line installer. Instead, clone the workspace separately and point it to your existing services:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone https:\/\/github.com\/outsourc-e\/hermes-workspace.git\ncd hermes-workspace\npnpm install\ncp .env.example .env\necho 'HERMES_API_URL=http:\/\/127.0.0.1:8642' &gt;&gt; .env\necho 'HERMES_DASHBOARD_URL=http:\/\/127.0.0.1:9119' &gt;&gt; .env<\/pre><p>Use <strong>127.0.0.1<\/strong> if the agent runs on the same server. Use the server&rsquo;s real IP address if it runs elsewhere. Either way, you&rsquo;ll still need to set the gateway key next.<\/p><p>Regardless of your installation method, the workspace and gateway need to share the same secret key. This requires three new entries across two files.<\/p><p>First, generate the secret key and copy it somewhere safe:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">openssl rand -hex 32<\/pre><p>Open the agent&rsquo;s environment file with the <a href=\"\/uk\/tutorials\/how-to-install-and-use-nano-text-editor\">nano text editor<\/a>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nano ~\/.hermes\/.env<\/pre><p>Add these two lines to the file. Replace <strong>your-gateway-secret<\/strong> with the secret key you generated earlier:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">API_SERVER_ENABLED=true\nAPI_SERVER_KEY=your-gateway-secret<\/pre><p>Here, <strong>API_SERVER_ENABLED<\/strong> turns on the HTTP API that the workspace calls, and <strong>API_SERVER_KEY<\/strong> protects it with a password.<\/p><p>The gateway needs both before it can serve that API, even when the workspace and gateway run on the same server. This step is easy to miss because a local-only setup can feel like it doesn&rsquo;t need a password.<\/p><p>Save the file and close <strong>nano<\/strong> with <strong>Ctrl+X &rarr; Y &rarr; Enter<\/strong>.<\/p><p>Now open the workspace&rsquo;s environment file:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nano ~\/hermes-workspace\/.env<\/pre><p>Add the token using the same secret key, so <strong>API_SERVER_KEY<\/strong> and <strong>HERMES_API_TOKEN<\/strong> have matching values:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">HERMES_API_TOKEN=your-gateway-secret<\/pre><p>Save the file the same way to finish the configuration.<\/p><h2 class=\"wp-block-heading\" id=\"h-3-start-the-gateway-and-workspace\"><strong>3. Start the gateway and workspace<\/strong><\/h2><p>Three Hermes services run together: the gateway on port <strong>8642<\/strong>, the dashboard on port <strong>9119<\/strong>, and the workspace UI on port <strong>3000<\/strong>. The gateway and dashboard belong to Hermes Agent, while the UI is the part you use in the browser.<\/p><p>Navigate to the workspace folder:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd ~\/hermes-workspace<\/pre><p>Start the gateway, dashboard, and workspace UI with one command:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npx concurrently --names \"gateway,dashboard,workspace\" --prefix-colors \"blue,green,yellow\" \"hermes gateway run\" \"hermes dashboard\" \"pnpm dev\"<\/pre><p><div class=\"protip\">\n                    <h4 class=\"title\">&#128161; Pro tip<\/h4>\n                    <p><br>\nSome documentation suggests using <strong>pnpm start:all<\/strong>, which should do the same job as running all three services. In our testing, though, it leaves out the dashboard.<br>\nWithout the dashboard, core features like chat still work, but you lose access to sessions, skills, memory, and jobs.<br>\nWe recommend starting all services with <strong>npx concurrently<\/strong> instead because it&rsquo;s more reliable and lets the workspace run with full features.<br>\n<\/p>\n                <\/div>\n\n\n\n<\/p><p>The output prints the workspace UI URL at your VPS IP on port <strong>3000<\/strong>, such as <strong>http:\/\/22.222.222.84:3000<\/strong>. Open it in your browser.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a5447fba0\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a5447fba0\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2026\/06\/hermes-workspace-start-services-terminal-workspace-ui-url-1024x227.png\" alt=\"Terminal showing the workspace UI ready with its local and network URLs\" class=\"wp-image-150051\" title=\"hermes-workspace-start-services-terminal-workspace-ui-url\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>The dashboard loads ready to use, so you can start chatting, browse memory and skills, or open the built-in terminal right away.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a544829fb\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a544829fb\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2026\/06\/hermes-workspace-dashboard-begin-a-session-home-screen-1024x557.png\" alt=\"Hermes Workspace dashboard with the sidebar and a new chat session screen\" class=\"wp-image-150044\" title=\"hermes-workspace-dashboard-begin-a-session-home-screen\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If you close the SSH session or lose the connection, these processes stop with it. To keep them running after SSH disconnects, run them inside a <a href=\"\/uk\/tutorials\/how-to-use-tmux\">tmux session<\/a>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">tmux new -s hermes\ncd ~\/hermes-workspace\nnpx concurrently \"hermes gateway run\" \"hermes dashboard\" \"pnpm dev\"<\/pre><p>Detach with <strong>Ctrl+B<\/strong>, then <strong>D<\/strong>. Reattach later with <strong>tmux attach -t hermes<\/strong>.<\/p><p>To confirm the gateway and dashboard are responding, open a new terminal window and run these two checks:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl http:\/\/127.0.0.1:8642\/health\ncurl http:\/\/127.0.0.1:9119\/api\/status<\/pre><p>The first command checks the gateway, which returns <strong>{&ldquo;status&rdquo;:&rdquo;ok&rdquo;,&rdquo;platform&rdquo;:&rdquo;hermes-agent&rdquo;}<\/strong>.<\/p><p>The second command checks the dashboard. The fields that matter are <strong>&ldquo;gateway_running&rdquo;:true<\/strong> and an <strong>api_server<\/strong> state of <strong>&ldquo;connected&rdquo;<\/strong>, which confirms the gateway is running and its API server is connected.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a54485c33\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a54485c33\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2026\/06\/hermes-workspace-verify-terminal-curl-health-status-output-1024x131.png\" alt=\"Terminal showing curl gateway health and dashboard status check responses\" class=\"wp-image-150045\" title=\"hermes-workspace-verify-terminal-curl-health-status-output\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>You also need to check the run mode in the terminal running the services. A workspace log line that includes <strong>mode=zero-fork<\/strong> indicates that the gateway and dashboard paired.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a54488afc\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a54488afc\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2026\/06\/hermes-workspace-verify-terminal-workspace-log-mode-zero-fork-1024x75.png\" alt=\"Workspace log showing mode=zero-fork after the gateway and dashboard pair\" class=\"wp-image-150046\" title=\"hermes-workspace-verify-terminal-workspace-log-mode-zero-fork\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-how-to-set-up-hermes-workspace-on-hostinger\"><strong>How to set up Hermes Workspace on Hostinger<\/strong><\/h2><p>On Hostinger, Hermes Workspace is available as a one-click Docker template that automatically sets up the agent and workspace containers.<\/p><p>This saves you from running installation and configuration commands manually, which can lead to errors.<\/p><p>If you&rsquo;re a new customer, open the <a href=\"\/uk\/vps\/docker\/hermes-workspace\">Hermes Workspace template<\/a> page, then choose your plan, billing period, and server location. After purchase, enter a workspace password and one API key.<\/p><p>The installation takes about five minutes. When it finishes, the system redirects you to the <strong>Docker Manage<\/strong>r page. From there, click <strong>Open<\/strong> in the <strong>Access<\/strong> column to access the web UI.<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a5448b851\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a5448b851\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2026\/06\/hpanel-vps-docker-manager-hermes-workspace-open-link-highlighted-1024x331.png\" alt=\"Docker Manager project list with the Open link for hermes-workspace shown\" class=\"wp-image-150048\" title=\"hpanel-vps-docker-manager-hermes-workspace-open-link-highlighted\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If you already have a Hostinger VPS, you can still install the Hermes Workspace template through hPanel.<\/p><p><div><p class=\"important\"><strong>Important!<\/strong> Changing the OS erases all data on the server, so <a href=\"\/support\/1583232-how-to-back-up-or-restore-a-vps-at-hostinger\">back up your files<\/a> and configurations first.<\/p><\/div>\n\n\n\n<\/p><ol class=\"wp-block-list\">\n<li>Go to <strong>hPanel &rarr; VPS &rarr; Manage &rarr; OS &amp; Panel &rarr; Operating System<\/strong>.<\/li>\n\n\n\n<li>In the <strong>Change OS<\/strong> section, search for Hermes Workspace and select it.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"6a22a5448e3ab\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6a22a5448e3ab\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2026\/06\/hpanel-vps-change-os-docker-application-hermes-workspace-highlighted.png\/w=640,h=256,fit=scale-down\" alt=\"hPanel Change OS screen with the Hermes Workspace Docker template selected\" class=\"wp-image-150047\" title=\"hpanel-vps-change-os-docker-application-hermes-workspace-highlighted\"><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"3\" class=\"wp-block-list\">\n<li>Enter a workspace password and an API key for your preferred provider.<\/li>\n\n\n\n<li>Click <strong>Next &rarr; Deploy<\/strong>.<\/li>\n<\/ol><p>Once deployment finishes, go to <strong>Docker Manager &rarr; Projects<\/strong> and click <strong>Open<\/strong> to access the workspace web UI.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a href=\"\/uk\/vps-hosting\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/www.hostinger.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner-1024x300.png\" alt=\"\" class=\"wp-image-77934\" srcset=\"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-content\/uploads\/sites\/51\/2023\/02\/VPS-hosting-banner.png 1024w, https:\/\/www.hostinger.com\/uk\/tutorials\/wp-content\/uploads\/sites\/51\/2023\/02\/VPS-hosting-banner-300x88.png 300w, https:\/\/www.hostinger.com\/uk\/tutorials\/wp-content\/uploads\/sites\/51\/2023\/02\/VPS-hosting-banner-150x44.png 150w, https:\/\/www.hostinger.com\/uk\/tutorials\/wp-content\/uploads\/sites\/51\/2023\/02\/VPS-hosting-banner-768x225.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-common-hermes-workspace-setup-errors\"><strong>Common Hermes Workspace setup errors<\/strong><\/h2><p>Most Hermes Workspace setup errors come from a few common causes, such as a <strong>missing API flag, missing gateway key, dashboard that didn&rsquo;t start, or outdated agent build<\/strong>.<\/p><ul class=\"wp-block-list\">\n<li><strong>Gateway HTTP API is off.<\/strong> The error &ldquo;Could not reach Hermes gateway on 8645, 8642, or 8643&rdquo; means the workspace can&rsquo;t reach the gateway&rsquo;s HTTP API. This happens when the gateway is running but only serving messaging platforms, with the HTTP API turned off. Add <strong>API_SERVER_ENABLED=true<\/strong> to <strong>~\/.hermes\/.env<\/strong>, then restart the gateway with <strong>pkill -f &ldquo;hermes gateway&rdquo;<\/strong> and <strong>hermes gateway run<\/strong>.<\/li>\n\n\n\n<li><strong>Missing API server key.<\/strong> The error &ldquo;API_SERVER_KEY is required for the API server, including loopback-only binds on 127.0.0.1&rdquo; means the gateway refuses to start its HTTP API. This happens when <strong>API_SERVER_KEY<\/strong> isn&rsquo;t set, since the gateway requires that key even on a local setup. Generate one with <strong>openssl rand -hex 32<\/strong>, add it as <strong>API_SERVER_KEY<\/strong> in <strong>~\/.hermes\/.env<\/strong>, and set the same value as <strong>HERMES_API_TOKEN<\/strong> in <strong>~\/hermes-workspace\/.env<\/strong>.<\/li>\n\n\n\n<li><strong>Dashboard isn&rsquo;t running.<\/strong> The log line &ldquo;mode=portable with missing=[&hellip;dashboard]&rdquo; means the workspace fell back to portable mode, where sessions, skills, memory, and jobs aren&rsquo;t available. This happens when the dashboard isn&rsquo;t running on port <strong>9119<\/strong>, usually because the startup command skipped it. Stop the running services with <strong>Ctrl+C<\/strong>, then start all three together with <strong>npx concurrently<\/strong> so the workspace boots with the dashboard and leaves portable mode.<\/li>\n\n\n\n<li><strong>Messaging allowlist isn&rsquo;t set.<\/strong> The warning &ldquo;No user allowlists configured&rdquo; means the agent blocks messages from users on any connected platform. This happens when a messaging platform like Telegram or Discord is enabled without an allowlist. Add <strong>GATEWAY_ALLOW_ALL_USERS=true<\/strong> to <strong>~\/.hermes\/.env<\/strong> to accept everyone, or set per-platform allowlists to limit who can reach it.<\/li>\n\n\n\n<li><strong>Hermes Agent is outdated.<\/strong> The log line &ldquo;missing=[chatCompletions, models, streaming, &hellip;]&rdquo; means the workspace can&rsquo;t find the endpoints it expects, even though the gateway responds. This happens when the installed Hermes Agent is older than the workspace, so the agent doesn&rsquo;t expose those endpoints. For a <strong>git<\/strong> install, update the agent with <strong>cd ~\/hermes-agent &amp;&amp; git pull &amp;&amp; uv pip install -e .<\/strong> For a PyPI install, run a pip upgrade. Then restart the gateway with <strong>hermes gateway run<\/strong>.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-how-long-does-it-take-to-set-up-hermes-workspace\"><strong>How long does it take to set up Hermes Workspace?<\/strong><\/h2><p>Setting up Hermes Workspace takes about <strong>15 to 30 minutes<\/strong> from start to finish, depending on whether you&rsquo;re doing a clean install or you&rsquo;ve set up Hermes Agent before.<\/p><p>Installing Node.js and <strong>pnpm<\/strong> takes under five minutes. The one-line installer then pulls the workspace and agent in about the same amount of time.<\/p><p>If you&rsquo;ve never set up Hermes Agent before, this is usually the longest part. It takes around 10 minutes because you need to pick a provider, paste an API key, and confirm the settings.<\/p><p>If you&rsquo;ve already installed Hermes Agent and only need to clone Workspace into your existing environment, the process should take about five minutes.<\/p><p>Editing the environment files takes another two to three minutes, and starting the services takes the final minute or two.<\/p><h2 class=\"wp-block-heading\" id=\"h-can-i-run-multiple-hermes-workspace-instances-on-the-same-machine\"><strong>Can I run multiple Hermes Workspace instances on the same machine?<\/strong><\/h2><p>Yes, you can run more than one Hermes Workspace instance on the same machine. <strong>Each instance is a separate copy, so it needs its own gateway, dashboard, and UI<\/strong>.<\/p><p>The catch is that two services can&rsquo;t share a port. Only one gateway can use port <strong>8642<\/strong>, so give the second instance&rsquo;s gateway a different port and point its <strong>HERMES_API_URL<\/strong> to that port.<\/p><p>Do the same for its UI by running it on a free port with <strong>PORT=3001 pnpm dev<\/strong>. Each instance also keeps its own configuration, so they won&rsquo;t overwrite each other.<\/p><p>If you only want to run different agents in one Workspace, you don&rsquo;t need a second instance. Add each one as a profile under <strong>~\/.hermes\/profiles\/profile-name<\/strong>, where <strong>profile-name<\/strong> is a label you choose. You can then switch between profiles from the web UI.<\/p><h2 class=\"wp-block-heading\" id=\"h-next-steps-after-setting-up-hermes-workspace\"><strong>Next steps after setting up Hermes Workspace<\/strong><\/h2><p>With Hermes Workspace running, focus on these four next steps: secure remote access, explore the skills marketplace, schedule autonomous work, and install it as an app.<\/p><ul class=\"wp-block-list\">\n<li><strong>Secure remote access.<\/strong> Replace the SSH tunnel with Tailscale or a reverse proxy. The tunnel only works while its terminal stays open, so it isn&rsquo;t practical for daily access. For Tailscale, set <strong>API_SERVER_HOST=0.0.0.0<\/strong> on the gateway, then update the gateway and dashboard URLs in the workspace environment file.<\/li>\n\n\n\n<li><strong>Explore the skills marketplace.<\/strong> Hermes skills are reusable capabilities that teach the agent how to handle specific tasks. Adding them extends what the agent can do, from research to file management. Open the <strong>Skills<\/strong> tab, browse the marketplace, and enable the ones that fit your workflow.<\/li>\n\n\n\n<li><strong>Schedule autonomous work.<\/strong> The built-in cron scheduler runs prompts on a schedule. It handles routine work, such as a daily report or an hourly check, without you starting each run. Set a prompt and its cadence, then track the runs from the <strong>Jobs<\/strong> view.<\/li>\n\n\n\n<li><strong>Install it as an app.<\/strong> Install the workspace as a progressive web app (PWA). It then opens like a native app on your computer or phone without a browser tab. Use the Chrome install icon, or go to <strong>Share &rarr; Add to Home Screen<\/strong> on iOS Safari.<\/li>\n<\/ul><p>If you want ideas on what to automate, browse popular <a href=\"\/uk\/tutorials\/hermes-agent-use-cases\">Hermes Agent use cases<\/a> to see how other people use the agent.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hermes Workspace is an open-source web UI for Hermes Agent, a self-improving AI agent from Nous Research. It brings the agent&rsquo;s chat, persistent memory, skills marketplace, terminal, and multi-agent orchestration together in a single self-hosted dashboard that you can access from any device. To set up Hermes Workspace on a virtual private server (VPS), install [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/uk\/tutorials\/how-to-set-up-hermes-workspace\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":411,"featured_media":133176,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to set up Hermes Workspace: Step-by-step guide","rank_math_description":"Learn how to set up Hermes Workspace on a VPS, configure the gateway and dashboard, and access the browser-based AI agent command center.","rank_math_focus_keyword":"how to set up hermes workspace","footnotes":""},"categories":[22640],"tags":[],"class_list":["post-133175","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-set-up-hermes-workspace\/","default":1},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-set-up-hermes-workspace\/","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-set-up-hermes-workspace\/","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-set-up-hermes-workspace\/","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-set-up-hermes-workspace\/","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-set-up-hermes-workspace\/","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-set-up-hermes-workspace\/","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-set-up-hermes-workspace\/","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/posts\/133175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/users\/411"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/comments?post=133175"}],"version-history":[{"count":0,"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/posts\/133175\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/media\/133176"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/media?parent=133175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/categories?post=133175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/uk\/tutorials\/wp-json\/wp\/v2\/tags?post=133175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}