2026-07-15 · 5 min · Pavel Hegler

Hermes quickstart: install your agent, then let it hire a developer

The end state of this guide: a chat window on your phone where you can ask "what is my engineer working on?" and get a real answer. In between: one terminal session to prepare a machine, one message to your agent, and one browser tap. That's the whole guide. Everything else is the machines talking to each other.

Hermes is Nous Research's open-source personal agent — MIT-licensed, lives in Telegram, Discord, Slack, WhatsApp, Signal, email, or your terminal. Kairos is our autonomous developer. Hermes is the one you talk to; Kairos is the one that ships. We wrote about why they pair well; this post is just the how.

What you need

One machine that will host the engineer (your dev box, a VPS, a Mac mini in a closet). The bootstrap checks for these; it does not install them:

Plus two accounts: a Nous Research account for Hermes (there is a free tier) and a free backant.io account for Kairos. Kairos itself is free; the Claude Code usage it drives stays on your own Claude plan.

Install Hermes

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
hermes setup --portal

Setup walks you through connecting a chat surface. Pick whichever app is already in your pocket — the rest of this guide reads the same on all of them. (There are also desktop installers for macOS and Windows on the Hermes site, if you'd rather not curl-pipe-bash. We get it.)

Say hello. Ask it what it can do. This is your agent now; the next step is giving it a colleague.

The one message

Send your Hermes this, with your real repo path:

Run this in ~/code/your-repo and follow its instructions until Kairos is running: curl -fsSL https://backant.io/hermes.sh | bash

(If that URL is unreachable, the direct form is npx --yes backant-kairos@latest hermes bootstrap.)

Hermes fetches the bootstrap and runs it. Ten steps, streamed live: install, prerequisites, memory store, login, repo analysis, daemon start, skill registration. Every step checks whether it is already done, so a failed run continues instead of starting over. When a step fails, the error is a single JSON line with a hint field containing a runnable command — Hermes reads the hint, applies it, and re-runs. You watch this happen in chat. It is more satisfying than it has any right to be.

The one tap

During the login step, Hermes will relay something like:

Kairos needs a one-time login — open https://backant.io/device and enter code KZT-42Q.

Open it in your own browser, enter the code, approve. That is the only moment in this entire setup that requires your hands. A few messages later Hermes confirms the daemon is running.

Your first conversation with the engineer

Three things to try, straight from our own release checklist:

Ask what and why.

You: what is kairos working on and why? Hermes: Daemon running. Last decision 14 min ago: "fix flaky retry test in auth.spec.ts — CI red for 2 cycles." 0 pending directives, 1 open gate.

The answer comes from Kairos's recorded state, not from the model's imagination — Hermes runs backant ctl status --json and backant ctl explain --json and reads the envelopes back to you.

Steer it.

You: have it focus on the flaky tests this week Hermes: Directive #3 queued: focus "flaky tests". Kairos absorbs it on its next cycle and will resolve it with a recorded reason.

Answer a gate.

You: anything blocked on me? Hermes: Gate #7: git_push — "push retry-test fix to main". Approve? You: yes Hermes: Approved, reason logged. Executing on next cycle.

Gated actions wait for you; everything else keeps moving. If the repo changed while the gate was open, your approval is refused and Kairos re-proposes against the current state — a yes given to an old reality never applies to a new one.

When something breaks

Re-send the bootstrap message. Every step is idempotent, every failure carries its fix as a runnable hint, and Hermes applies hints without being asked. The failure modes we know about — Docker not running, gh not authenticated, Node too old — each produce their exact fix in the error itself.

This flow is our release gate. Before a Kairos version ships, a human sets up a fresh machine through a real Hermes with zero keyboard time on that machine beyond the device tap. If the run needs a human shell command, the release doesn't go out.

Set it up tonight. Ask it why tomorrow.