Build and publish websites with Hermes Agent
Tell Hermes Agent: “build a website for my yoga studio”. It builds the site and publishes it at a kleap.io link.
- Copy the config
~/.hermes/config.yaml - ConnectRun it in Hermes Agent, then sign in on kleap.co when asked.
- Paste the promptThe tested prompt is just below. Change the studio for your business.
- Median time to a live link
- 9 min5 of 5 counted runs of our same-job test (a yoga studio site), Hermes Agent v0.22.2, first word to the link
- Kleap's build itself
- 6 minmedian of the 5 builds inside those runs
mcp_servers:
kleap:
url: "https://kleap.co/api/mcp"
auth: oauthChecked Oct 20, 2026
Use Kleap to build a website for my yoga studio: class schedule, teachers, pricing and a booking request form. Calm colours. Wait for the build to finish, publish it and send me the link.
5 of 5 counted runs reached a live link
No run was set aside. See every run
Refused twice (two builds already running), accepted on the third call.
Polled every 25 s: progress 34, 37, 41, 45, 50, 52, then completed.
Published, audit clean. The call took 49.8 s: it waits for the live check.
status published, stillpoint-yoga.kleap.io.
The replay is a real run of the yoga job (Oct 18, 2026); its own times differ from the medians on the left, which cover every counted run of the same job.
How do you connect Kleap to Hermes Agent?
Hermes registers itself with Kleap, runs the sign-in and refreshes the token for you. You edit one file. Run live with Hermes Agent v0.22.2 with a Kleap key in the Authorization header. The auth: oauth entry above is from Hermes' docs and was not run by us. A one-shot run needs a line telling Hermes to wait for the build.
You edit one file, sign in once. From Hermes' docs.
Add Kleap to ~/.hermes/config.yaml
mcp_servers is a map keyed by server name. Setting auth: oauth tells Hermes to handle discovery, client registration, PKCE and token refresh itself.
~/.hermes/config.yamlmcp_servers: kleap: url: "https://kleap.co/api/mcp" auth: oauthYou should see: The entry sits under mcp_servers in ~/.hermes/config.yaml. YAML is indentation-sensitive: the key under mcp_servers is the server name.
Sign in and reload
Hermes opens a browser on first connect when it can, and offers a paste-back flow on a headless host. Tokens are cached under ~/.hermes/mcp-tokens/. Reload the servers in a running session, or restart Hermes.
Terminalhermes mcp login kleapInside Hermes/reload-mcpYou should see: A browser opens on kleap.co on first connect (or a paste-back flow on a headless host). Tokens land in ~/.hermes/mcp-tokens/ and Kleap's tools appear after the reload. You will be asked to approve the permissions below.
Optional: add the Kleap skills
Hermes installs a skill from the URL of its SKILL.md. Install the three you need most.
Terminalhermes skills install https://raw.githubusercontent.com/kleaphq/skills/main/kleap-build/SKILL.md hermes skills install https://raw.githubusercontent.com/kleaphq/skills/main/kleap-edit/SKILL.md hermes skills install https://raw.githubusercontent.com/kleaphq/skills/main/kleap-publish/SKILL.mdYou should see: The three skills are listed in Hermes. kleap-data and kleap-multilingual install the same way from the same repository.
The route we ran: no browser anywhere, so it works from a script or a schedule.
For an unattended agent: use a key
A scheduled job has nobody to click through a browser. Create a Kleap API key at https://kleap.co/settings/api-key, pick the narrowest preset, and send it as a bearer header instead of OAuth.
~/.hermes/config.yamlmcp_servers: kleap: url: "https://kleap.co/api/mcp" headers: Authorization: "Bearer kleap_live_sk_..."You should see: The Authorization header carries kleap_live_sk_... Revoke the key from your Kleap settings whenever you like. In our run hermes mcp test kleap then discovered 34 (35 since Oct 19) tools.
Tell Hermes to wait for long jobs
A site build takes minutes, and Kleap's create_app answer says you need not wait. A one-shot Hermes run obeys that and ends the turn: two of our three headless attempts did. This standing paragraph, appended to Hermes' own SOUL.md, is what made the third one wait and deliver the link.
~/.hermes/SOUL.md (appended)How I run you: unattended and one-shot (a script starts you with one prompt and reads only your final reply; nobody watches a live preview or can answer a later message). When a tool starts a long-running job (for example a website build), poll that job's status tool every 20 to 30 seconds until it reports completed or failed, then verify the result is really live, and only then write your final reply with the real link. Never end your turn with "still building".You should see: Hermes polls check_task every 25 s or so until the status is completed, then publishes and replies with the link.
What can you ask Hermes Agent to do with Kleap?
Copy one, change the details to yours. Each names what you want and what done looks like, then shows the Kleap tools it makes the agent call and what comes back.
Use Kleap to build a website for my yoga studio: class schedule, teachers, pricing and a booking request form. Calm colours. Wait until the build is finished, publish it and send me the link.
- create_app
- check_task
- publish_app
- get_publish_status
What you get. The brief of our real run, which ended in stillpoint-yoga.kleap.io. Our run used this prompt without the sentence about waiting, plus the standing paragraph from the Key tab, so the wait is built into the prompt here. Hermes invented the studio name, schedule, teachers and prices and labelled them as samples.
status published · audit clean · 1 credit charged. Kleap built it in 5 min 50 s, the whole Hermes session took 10 min 59 s.
On my Kleap yoga site, replace the class schedule with the table below, keep the styling, publish and confirm the page is live.
- read_files
- edit_files
- publish_app
What you get. The schedule replaced with your table, styling kept, republished and confirmed live. Exact edits, no credits.
Check my Kleap site's Google Search data, pick the page with the most impressions and the weakest title, improve its title, description and intro for the query it ranks for, publish, and tell me what changed.
- get_search_console
- read_files
- edit_files
- publish_app
What you get. One page improved for the query it ranks for, with a summary of what changed. Needs Search Console connected.
connected: false · clicks 0 · impressions 0Google Search Console isn't connected for this site. The owner connects it from the site's options in Kleap (Integrations → Search Console).
Every Monday, send me last week's visitors, top pages and new form leads for my Kleap site, in five lines.
- get_analytics
- get_form_submissions
What you get. A five-line weekly report every Monday: visitors, top pages, new leads. This is a Hermes scheduled task; Kleap supplies the data.
✓ 7d: 1 visitors, 6 pageviews — top: / (1), /#main (1), /#waitlist (1)
Does Hermes Agent really get a site live on Kleap?
We ran the same job, on the same day, and kept every run.
5 of 5 counted runs reached a live link
Compare all agentsSame prompt for every agent on Oct 19–20, 2026, one build at a time. Median time to a live link: 8 min 47 s (first word to the link in the agent's last message); the shortest 6 min 26 s, the longest 9 min 33 s.
- Run 1: 9 min 33 s
- Run 2: 9 min 24 s
- Run 3: 7 min 44 s
- Run 4: 8 min 47 s
- Run 5: 6 min 26 s
Without “Wait for the build to finish” in the prompt: 0 of 2 (tiny sample) runs reached a link before Oct 19, 2026, 0 of 0 (tiny sample) after Kleap changed its first answer. The prompts on this page include the sentence anyway.
In numbersHermes Agent and Kleap in numbers
Four measured figures from our runs, and what each one is.
- 5 min 50 sfor Kleap to build the yoga studio site in our Hermes run, 1 credit. The whole session took 10 min 59 s
- 13 callsHermes made to Kleap: two were refused for running two builds at once, then it retried and polled eight times
- 0 broken linksin the publish audit: no dead links, no broken pages, live check passed
- 4 linesof config.yaml add Kleap with OAuth. Hermes runs discovery, sign-in and token refresh
Real runWhat did a real Hermes Agent v0.22.2 run look like?
Every call, in order, with the times we measured.
On Oct 18, 2026 we gave Hermes Agent v0.22.2 this job and kept every call. Here is what happened, with the times we measured.
- 26 s and 1 min 6 screate_app
Kleap refuses twice, Hermes waits and retries
Two builds from our earlier attempts were still running on the same account, and Kleap answered: Too many concurrent tasks. Maximum 2 for standard tier. Hermes slept 25 to 30 seconds and tried again. The overlap was our doing, and it is a real limit your agent can hit.
- 1 min 53 screate_app
The third call is accepted
Build started, app 120280. Hermes chose its own brief: a provisional name, sample content, a booking request form saved to a database.
- 2 min 32 s to 8 min 16 scheck_task
Eight polls, 25 seconds apart
Progress went 34, 34, 37, 41, 45, 50, 52, then completed. Kleap's task ended at 18:29:04 (5 min 50 s). check_task answers after 10 to 24 seconds each time, because it waits for news.
- 8 min 35 spublish_app
Publish, with proof
Published and audited: no dead links, no broken pages. The call took 49.8 s because it does not return until the live check passes.
- 9 min 31 s to 10 min 57 sget_publish_status
Hermes checks its own work
It confirmed status published, read the live page, inspected the form fields without submitting anything, and replied with the link and an honest caveat: the content is sample content and booking requests are not confirmed reservations.


Stillpoint Yoga, live at stillpoint-yoga.kleap.io. Receipt: status published · audit clean · 1 credit charged
| Client | Hermes Agent v0.22.2, model gpt-6.1-sol, with a Kleap key header |
|---|---|
| Build task | 5 min 50 s (18:23:14 to 18:29:04 UTC) |
| Whole session | 10 min 59 s, including 2 refused create_app calls and a retry |
| Kleap calls | 13, two refused: Too many concurrent tasks |
| Cost | 1 credit charged for the build |
| Setup | Attempts 1 and 2, same prompt, stopped at “still building”. This run had a standing instruction |
Hermes Agent drove Kleap's MCP server end to end: it retried when Kleap refused a call, polled eight times, published, and checked the live page, on its third attempt.
A one-prompt, zero-setup run. With the same prompt, two earlier headless one-shot attempts ended at “still building”. This recorded run had one standing instruction telling Hermes to poll until the job is completed. The studio, schedule and prices are sample content, labelled on the page.
Look insideWhat does the configuration look like?
A real block of output, with the note that says what it is.
The mcp_servers entry of our recorded run, with the key replaced. Use the first block when you are at the keyboard and the second for a job that runs alone.
# Option A, interactive: Hermes signs you in with OAuth (from Hermes' docs)
mcp_servers:
kleap:
url: "https://kleap.co/api/mcp"
auth: oauth
# Option B, unattended: the entry of our recorded run
mcp_servers:
kleap:
url: "https://kleap.co/api/mcp"
headers:
Authorization: "Bearer kleap_live_sk_..."
timeout: 900
connect_timeout: 60
tools:
exclude: [buy_domain, upgrade_plan]Use one entry or the other, not both. The timeout lines let a long publish call finish; the exclude line is our own hardening. Keep a file that holds a key out of version control.
Ask Hermes Agent for a site and watch it go live.
What can't Hermes Agent do with Kleap yet?
Every guide says what does not work, so you do not find out in the middle of a project.
A one-shot Hermes may stop at “still building”
With the same prompt, two of our three headless attempts ended after one poll with no link, because Kleap's create_app then said you need not wait and Hermes obeyed. Kleap finished and published both sites anyway. Since Oct 19, 2026 that answer tells a client with nobody watching to keep calling check_task about every 30 seconds; we re-ran Hermes once with the bare prompt after the change: it kept polling check_task as asked (25 calls), but Kleap's build queue was backed up that hour and our 25-minute cap stopped it as the build finished, so that run shows nothing either way. With the sentence “Wait for the build to finish” in the prompt, Hermes reached a live link in 3 of 3 runs. If yours still stops early, add the standing paragraph from the Key tab, or say in the prompt that Hermes must wait.
Two builds at once on a standard account
Kleap refused create_app with: Too many concurrent tasks. Maximum 2 for standard tier. Wait for current tasks to complete. Hermes slept and retried until a build slot freed. Our own overlapping attempts caused it, and it costs a minute or two when it happens. Since Oct 19, 2026 the error also names the running tasks and says when to retry (a Retry-After header on the API).
Unattended means a key
A cron job has nobody to click through a browser. Use a Kleap API key with the narrowest preset and send it as a bearer header. We also excluded buy_domain and upgrade_plan from the tool list in that Hermes entry, so a runaway job could not reach them.
The model is Hermes' choice, the content is Kleap's
Hermes picked its own tool order and sent Kleap one brief; Kleap's AI wrote and published the site. Give Hermes your real content, or expect labelled sample content like ours.
VerificationWhat we verified for Hermes Agent, and what we did not
Each claim is marked: we ran it, we read it in the docs, or we do not know.
Setup guides rot quietly. So each claim here is marked by how we know it. Runs last checked Oct 20, 2026; setup steps were verified on October 18, 2026 unless a line gives its own date.
We ran it
- A real run of Hermes Agent v0.22.2 on Oct 18, 2026, installed in isolation, with Kleap's MCP server entered in config.yaml with a bearer key: it built and published stillpoint-yoga.kleap.io on its third attempt (Kleap task log: 5 min 50 s, 1 credit). The model was gpt-6.1-sol through an OpenAI-compatible gateway, because Hermes needs some provider; the Kleap side is the same whatever model drives Hermes.
- hermes mcp test kleap connected in 4.6 s and discovered 34 tools (35 since Oct 19). Kleap's server publishes OAuth metadata with dynamic client registration.
We read it in the docs
- The OAuth entry (auth: oauth), hermes mcp login, /reload-mcp, hermes skills install and Hermes' cron feature come from the Hermes Agent documentation. We ran the key route, not the OAuth one.
- We found no generic hermes mcp add --url command in the docs, which is why the setup edits the file.
What if something doesn't work?
The failures we met, or the ones this setup is known to produce, with the fix.
Hermes answers “still building” and gives no link
- Why:
- A one-shot run ended its turn after the first status check. Kleap's create_app result tells chat clients they need not wait.
- Fix:
- Add the standing paragraph from the Key tab to SOUL.md, or end your prompt with: Wait until the build is finished, then send me the link. The site still finishes and publishes on its own, so you can also read its address with get_publish_status.
create_app says Too many concurrent tasks
- Why:
- Two builds were already running on the account. That is the limit for a standard account.
- Fix:
- Wait for a running build to finish (Hermes does this on its own with a short sleep and a retry), or check what is running with check_task.
Hermes does not show the Kleap tools after I edited config.yaml
- Why:
- The running session has not reloaded its MCP servers.
- Fix:
- Type /reload-mcp inside Hermes, or restart it. Then run hermes mcp test kleap, which should connect and list 35 tools.
A headless host cannot open a browser
- Why:
- OAuth wants a browser at first connect.
- Fix:
- Use Hermes' paste-back flow, or switch the entry to a bearer key for that host.
YAML errors on startup
- Why:
- Indentation: the server name must sit one level under mcp_servers.
- Fix:
- Copy the block exactly, with two-space indentation, and keep tabs out.
What do people ask about Hermes Agent and Kleap?
Does Hermes Agent work with Kleap?
Yes. Hermes supports remote HTTP MCP servers with OAuth, and Kleap's server supports OAuth with dynamic client registration. Add the entry to config.yaml, sign in once, and the Kleap tools appear next to Hermes' own.
Do I need the skills if I have the MCP server?
No. The server alone is enough. The skills add a tested order of calls for building, editing and publishing.
Can I use the CLI instead of MCP?
Yes. Hermes can run shell commands, and npx -y kleap-cli covers create, edit, publish, files, forms, analytics and domains with one-to-three-line output.
Is it safe to run this on a cron?
Treat it like any unattended agent: use the narrowest Kleap key, ask for a summary after every run, and start with a Read-only key to watch what it proposes. If a publish cannot be confirmed live, Kleap rolls back and says so instead of reporting success.
Do I need an API key?
No. The connector signs you in with OAuth in your browser, so there is nothing to copy. Hermes handles the OAuth sign-in itself; the config entry only needs auth: oauth. An API key (kleap_live_sk_…, created at https://kleap.co/settings/api-key) is only for unattended jobs, scripts and clients that cannot open a browser. Pick the narrowest preset: Read-only to inspect sites, Build to change and publish them.
Does it cost anything to connect Kleap?
Connecting is free. Building and AI edits draw on your Kleap usage: every build we recorded was charged 1 credit, and the free plan includes some usage. If your agent writes the files itself with write_files or edit_files, Kleap does not run its own AI for that step. Publishing on a Kleap address is free. The model that drives Hermes is billed by whoever provides it, not by Kleap. See the pricing page for what each plan includes.
Why did Hermes stop at “still building” in two of three runs?
Kleap's create_app answer then read: No need to wait or poll. Tell the user it's building. That suits a chat client with a live preview. (Since Oct 19, 2026 it separates the two cases and tells a client with nobody watching to keep checking.) A headless one-shot run has nobody watching, but Hermes followed the advice and ended its turn after one poll. Kleap still built and published both sites; there was just nobody left to send the link. A standing instruction to poll until completed fixed it.
How do I stop Hermes from buying a domain or changing my plan?
Domain purchases and plan upgrades only ever return a payment link that you pay yourself, so nothing is charged. You can also remove those tools from the entry: in our run the Kleap entry carried tools: exclude: [buy_domain, upgrade_plan], and Hermes worked with the other tools.
How long does a Hermes-built site take?
In our run Kleap's build took 5 min 50 s (task log) and the publish call about 50 s, because it waits for the live check. The whole Hermes session took 10 min 59 s, including 88 s lost to two refused calls and a retry, and the polling and the final checks.
Who makes Hermes Agent?
Nous Research. Its documentation is where the config format and the cron feature used on this page are described; the links are at the end of the page.
Official documentation: MCP in Hermes Agent (docs).
More about this setup
What it is, how it compares with the other ways in, and how to put it on a schedule.
In shortKleap + Hermes Agent, in one paragraph
What it is and the three steps.
Add Kleap to Hermes Agent with a few lines of config. In our run Hermes built a yoga studio site, published it and checked it was live. Kleap's build took 5 minutes 50 seconds and the whole session 10 min 59 s.
Connect
Paste the command or URL above into Hermes Agent, then sign in on kleap.co.
Ask
Describe the site in plain words. The prompts below are ready to copy.
Live
Kleap builds and publishes, and reports it live only when the address answers.
Your optionsWhich Hermes setup fits which job?
Alone, in the app, or with Kleap, side by side.
Hermes gives you three clean ways to hold the Kleap connection. The right one depends on who is at the keyboard.
- From Hermes' docs
OAuth entry
- auth: oauth tells Hermes to handle discovery, client registration, PKCE and refresh itself.
- You sign in once in the browser. Tokens are cached under ~/.hermes/mcp-tokens/.
- Nothing secret in your config file.
Best for interactive sessions on your own machine.
- We ran it
Bearer key entry
- A Kleap API key in an Authorization header. No browser step, so it works one-shot and on a schedule.
- In our run Hermes connected, discovered 34 tools (35 since Oct 19) and built, published and checked a site.
- Use the narrowest preset, and exclude the spending tools: our run left out buy_domain and upgrade_plan.
Best for cron jobs, one-shot runs and headless hosts.
- Smallest context
CLI through Hermes' shell
- Hermes can run commands, and npx -y kleap-cli covers create, edit, publish, files, forms and analytics.
- One to three lines of output per call.
- No MCP entry at all.
Best if you want the lightest possible context.
Our take. OAuth for you at the keyboard, a key for a job that runs alone. The CLI is the fallback when you want the least context.
SEO on a scheduleCan Hermes Agent run the SEO work every day?
A scheduled prompt, and what we ran ourselves.
Hermes has built-in scheduled tasks: you can ask it in chat to run a prompt every day, or create a cron job. Jobs run unattended, so give Kleap only what the job needs: a Read-only or Build key, and the prompt below.
Every morning, for each of my Kleap sites: read get_search_console, improve the one page that deserves it with edit_files, publish_app and confirm with get_publish_status, then send me what changed. Never invent statistics, never change the design, touch at most two pages per site.
Google Search Console must be connected to the site for the search data. If it is not, Kleap hands the agent a consent link for you to open. The full step-by-step prompt lives on the hub.
We ran this loop for real with Claude Code and the Grok CLI on a test site. We did not run it with Hermes Agent, so run it once by hand and read the result before you schedule it.
More from Kleap
Pages on the rest of the site that pair with this guide.
Using another agent? Same Kleap account, same sites. Compare the seven agent guides.
Put Hermes Agent to work on your website
Connect once, then ask in plain words. Kleap builds, hosts and publishes, and your agent keeps the site improving.
