Back to guides
Compare·September 21, 2026·8 min read

Pi vs Hermes: a coding session against a resident agent

Two different categories of software in one query — fix the category, then compare on the axes that actually differ.

Last reviewed on .

Pi versus Hermes is a comparison between two different categories of software, not two rival coding CLIs. Pi is an interactive terminal coding harness you start inside a project directory; Hermes Agent is a resident personal agent with built-in memory files, a cron scheduler and messaging channels. Both are MIT-licensed, both cost $0 to install, and both take a third-party model endpoint through documented configuration. The real choice is between a session and a residency — and for a lot of people the answer is both.

Fix the names first, because this query collides badly on both sides. Pi here is the coding agent published at pi.dev by Earendil Inc., repository earendil-works/pi. It is not Pi by Inflection AI at pi.ai, not Raspberry Pi, and not Oh My Pi, a separate coding agent by a different author. Hermes here is NousResearch/hermes-agent. Nous Research's own homepage lists Hermes 4 and Hermes Agent as two separate products at two separate domains — Hermes 4 is the open-weight model family with per-token inference prices, Hermes Agent is free software. No Hermes 4 figure appears anywhere on this page, because a model price is not an agent price.

Which one to pick

If this is your situationPickWhat that costs you
You want to edit a repository interactively, session by session, watching each changePiNo memory between sessions beyond replayable transcripts, and no approval prompt before a shell command runs
You want the agent reachable from a messaging app while you are away from the machineHermes AgentA gateway process to operate, your own bot tokens per platform, and probably a host to run it on
You want an approval prompt before a dangerous command executesHermes AgentPi documents no permission system at all, so this is not a tuning difference
You want the smallest possible install footprintPiOne npm package against Hermes' installer, which pulls a Python and Node toolchain plus ripgrep and ffmpeg and clones the repo
You want the agent to remember you across sessions without wiring it yourselfHermes AgentBuilt in, local, on by default; the Pi equivalent is a third-party extension with its own running cost
You run a small local or self-hosted modelPiHermes' quickstart requires a model with at least 64,000 tokens of context and says smaller windows are rejected at startup; Pi documents no equivalent floor
Both descriptions fit different parts of your weekBothSeparate config trees and separate state, so they do not collide — but two configurations to maintain

The migration cost is asymmetric and worth pricing before you commit. Moving to Pi is npm install -g @earendil-works/pi-coding-agent and a config file. Moving to Hermes Agent is an install script that, per its installation page, handles Python, Node.js, ripgrep and ffmpeg, the repository clone, a virtual environment, the global hermes command and provider configuration — plus, if you want the desktop app, a platform check: the macOS installer is documented as Apple Silicon only, with a separate installer for native Windows, and the docs list macOS on Intel as an unsupported platform. No minimum macOS version is published on that page.

One naming trap applies to Pi only, and it silently changes what you install. The repository moved: a request to badlogic/pi-mono now resolves to earendil-works/pi through GitHub's own redirect, and the old npm package @mariozechner/pi-coding-agent stopped at 0.73.1 on May 7, 2026 and carries a deprecation notice pointing at the Earendil package. Any tutorial or comparison written against the old names describes software four months stale. Hermes Agent has the opposite problem — two version numbers for one release, covered below.

Session versus residency, feature by feature

PiHermes Agent
What it isMinimal terminal coding harness, run per session in a project directoryPersistent personal agent: CLI, desktop app and an always-on gateway process
RuntimeNode, installed from npmPython, declared >=3.11,<3.14 in pyproject.toml
Version checkedv0.86.1, released September 20, 2026; npm package at the same version0.21.3, released as tag v2026.9.14 on September 14, 2026 — both numbers name the same release
Cross-session memoryNot in the docs index. Sessions auto-save as JSONL under ~/.pi/agent/sessions/ with fork, resume and tree commands — transcript replay, not learned facts injected into a new session~/.hermes/memories/MEMORY.md (2,200-character limit) and USER.md (1,375-character limit), injected into the system prompt at session start with no retrieval call; sessions archived in a local SQLite FTS5 database
Messaging channelsNo messaging-integration page in the docs indexA single gateway process fronting the platforms in the messaging docs index — its platform comparison table listed 28 on September 21, 2026 — using credentials you supply per platform
SchedulingNo scheduler documented. The non-interactive surfaces are an SDK, an RPC mode and a JSON event streamBuilt-in cron scheduler with delivery to any connected platform, per the project README
ExtensionsTypeScript modules from ~/.pi/agent/extensions/ or npm/git packages, registering tools and slash commands. The pi.dev catalog listed 5,380 packages on September 21, 2026Skills compatible with the agentskills.io standard, plus subagents and tool access over RPC from Python scripts
PermissionsNone built in. The README states Pi does not include a permission system for filesystem, process, network or credential accessApproval prompt on dangerous commands, a persisted command_allowlist, and a file-write denylist enforced before execution
Repository stateMIT, not archived, pushed September 21, 2026MIT, not archived, pushed September 21, 2026

Read from both repositories and both documentation sites on September 21, 2026. Two readings to resist. The "no memory" and "no messaging" rows are absences from Pi's official documentation index, not vendor denials — third-party extensions supply both. And the star and issue counts on these two repositories are not comparable: Pi's README says new issues and pull requests from new contributors are auto-closed by default, so the two projects are measuring different policies rather than different maintenance quality. Nous Research also describes Hermes Agent as the only agent with a built-in learning loop; that is the vendor's own README copy, and no head-to-head benchmark against Pi was found from either party.

pi-hermes-memory is a Pi extension, not Hermes Agent

This is the confusion the page exists to clear. Searching "pi hermes" surfaces an npm package called pi-hermes-memory, and the name reads as a bridge between the two products. It is not one.

The package is published by chandra447 — not by Nous Research, not by Earendil — under the MIT license, at version 0.9.9 published September 13, 2026. Its own npm description ends with the words "Ported from Hermes agent". What it does is reimplement a memory layer inside Pi: persistent memory, SQLite FTS5 session search, secret scanning and procedural skills. Installing it with pi install npm:pi-hermes-memory gives Pi something like Hermes' memory design. Nothing in its npm entry or its catalog listing describes installing Hermes Agent, connecting to a running Hermes Agent, or bringing along Hermes' gateway, channels, scheduler or approval system — what is described is a memory layer for Pi.

Three practical limits, from its own catalog listing read September 21, 2026. Each background review cycle costs one full LLM API call through a child pi -p process, which is a recurring token charge rather than a free convenience. Session history is not searchable until it is indexed — the listing offers a bulk /memory-index-sessions command or auto-indexing on session shutdown, so old transcripts need the one-off import before search reaches them. And its trigram tokenizer limits CJK substring search to queries of three characters or more. The listing showed roughly 27,000 downloads a month at that read; those are live counters and will have moved. Pi's own documentation recommends no memory package, and no vetting, verification or endorsement badge appeared on the catalog listings read that day — so this is a popular community option, not an official one.

Permissions are the sharpest difference

If you only compare one thing, compare this. Pi's README states plainly that it does not include a built-in permission system for filesystem, process, network or credential access, and that by default it runs with the permissions of the user and process that launched it. Its security page adds that there is no built-in sandbox, and that built-in tools can read, write and edit files and run shell commands with the permissions of the pi process. The one trust control, defaultProjectTrust, governs whether project-local config and extensions load — not whether a tool executes. Pi's containerization page documents four isolation patterns you provide yourself — a Gondolin extension routing built-in tools into a local micro-VM, plain Docker, the policy-controlled OpenShell, and Docker Sandboxes — and the security page explains the design choice: a partial in-process sandbox would be easy to misunderstand as a security boundary while still depending on the host shell, filesystem, package managers, credentials and extension code. Extensions, note, run with your full system permissions.

Hermes Agent takes the opposite position. Its security page documents a prompt on dangerous commands offering once, session, always or deny; choosing always writes the pattern into command_allowlist in ~/.hermes/config.yaml. approvals.mode accepts smart, the default, which uses an auxiliary LLM to assess risk and escalates uncertain cases; manual, which always prompts; and off, which disables the checks. A separate file-write denylist is enforced before execution over credential directories such as ~/.ssh/, ~/.aws/ and ~/.kube/ and over secret stores including .env, with ~/.ssh/config approval-gated rather than hard-blocked, and an optional HERMES_WRITE_SAFE_ROOT confining writes to one prefix. The condition to carry forward: that same page says the dangerous-command checks are skipped on the docker, singularity, modal, daytona and vercel_sandbox backends, because the container is treated as the boundary. "Hermes asks first" is true on local and ssh, and not a property of every configuration.

Pointing either one at the same endpoint

PiHermes Agent
Config file~/.pi/agent/models.json, under providers.<name>~/.hermes/config.yaml, under providers:
Base-URL fieldbaseUrlapi, with base_url and url accepted as aliases
Protocol fieldapi. The models documentation's Supported APIs table lists openai-completions, openai-responses, anthropic-messages and google-generative-ai; Pi's separate custom-provider reference names moretransport: chat_completions, anthropic_messages or codex_responses; blank auto-detects from the URL
CredentialOne apiKey string that interpolates: $VAR reads an environment variable, a leading ! runs the value as a command and uses stdout, and a bare uppercase string such as MY_API_KEY is a literal, not a variableSeparate fields: inline api_key, key_env naming an environment variable, or key_cmd naming a command that prints a token
Context handlingA custom model has no catalog entry, so contextWindow, maxTokens and capability flags are yours to write. supportsStrictTools defaults to false on a custom providerThe quickstart requires at least 64,000 tokens of context and says smaller windows are rejected at startup; pin model.context_length when detection is wrong. Hermes no longer reads model.max_tokens, so output caps are the server's
Cost readoutA per-model cost block with input, output, cacheRead and cacheWrite, documented as per-million-token rates, with optional input-tier overrides above a token thresholdReported in the in-session usage panel

One operational fact is worth more than the rest of this table, and it is the reason a single gateway key does not mean a single configuration. Neither product documents one settled base URL for the Anthropic protocol. Pi's models documentation shows both forms in its anthropic-messages examples — an origin-only https://proxy.example.com in one place and https://proxy.example.com/v1 in others — an inconsistency Pi pricing already notes. Against Kunavo the origin is the form that works: Anthropic-style clients append /v1/messages themselves, so a /v1 suffix produces a doubled path and a 404. On the Hermes side, the Hermes custom API guide marks the anthropic_messages base URL as unverified and tells you to try both forms; nothing found today resolves it, so that hedge stands rather than being quietly upgraded here. The OpenAI-compatible path is the simpler one on both sides. The base-URL doc covers that trap in full.

One more boundary, because it is the only plan gate found on either side. The Tool Gateway page states that the Tool Gateway is a paid-subscription feature, and the Nous Portal pricing page shows the Free tier with no hosted tool usage. That gate covers the hosted tool layer — web search and extraction, image generation, voice output and cloud browser automation — and not the agent, the memory system, the channels, the scheduler, the approval system or the ability to point Hermes at your own endpoint. Kunavo serves no text-to-speech, speech-to-text or embedding model, so those gateway categories have no Kunavo counterpart at all; the documented escape is per-tool, setting web.backend, image_gen.provider, tts.provider or browser.cloud_provider to your own vendor account. The same page also says some accounts receive a small managed-tool allowance without a paid subscription, with no size or eligibility published — real, but not a free tier. No equivalent gate was found on the Pi side: pi.dev published no price or paid plan of any kind when read on September 21, 2026.

Two Nous Portal figures disagree between official pages and this guide will not merge them: the portal pricing page advertises "200+ Models" on each paid tier, while the Hermes docs page for Nous Portal says credits cover 300+ frontier models. Its published tiers on September 21, 2026 were Free at $0, Plus at $20 a month with $22 in monthly credits, Super at $100 with $110, and Ultra at $200 with $220, each described as a 10 percent credit bonus with a rollover cap. Those credits are store credit for inference, not a discount on list rates.

What the same work costs on each

Both clients are $0, so the comparison is about what each one adds to a token bill. These are illustrative token estimates, not measured task costs and not a bill ceiling. Assume one bounded repository change sending 400,000 uncached input tokens and receiving 25,000 output tokens, with no cache reads, no cache writes, no images and no external tool charges. Rates are live Kunavo catalog prices per million tokens.

ModelInput / output per 1MOne change, either client
Claude Sonnet 5$2.00 / $10.00$1.050
Claude Haiku 4.5$0.40 / $2.00$0.210

That column is identical by design: the same model doing the same work bills the same either way. The structural difference is the memory line, and it runs in opposite directions. Hermes' memory documentation describes memory content as injected into the system prompt at session start, with no LLM call to retrieve it, and gives the two files' limits as roughly 800 and 500 tokens. Pi has no built-in equivalent, and the extension that adds one bills a full LLM call per review cycle. Assume 20 sessions in a month for the injection, and 30 review cycles at 12,000 input and 600 output tokens each for the extension — the cycle shape is an assumption for illustration, not a measurement.

ModelHermes: memory injected, 20 session startsPi + extension: 30 background review cycles
Claude Sonnet 5$0.052$0.900
Claude Haiku 4.5$0.010$0.180

Neither number is large, and that is the point: memory is not where the money is on either side, so choose on behaviour rather than on this line. Two costs sit outside the arithmetic entirely. Hermes Agent is designed to run off your laptop — its README suggests a cheap VPS or serverless host — so a host bill can appear that Pi never creates. And if you sign into Pi with a Claude subscription, Pi's own provider documentation says third-party harness usage draws from extra usage and is billed per token rather than against Claude plan limits; that is Pi's characterisation of another vendor's billing, so confirm it in your own account.

On the Kunavo side, the catalog amount is a billing floor rather than a cap: when the upstream reports its charge, the bill is the greater of catalog cost and upstream cost times the applicable markup. The minimum is a $10 prepaid top-up, which is the cash needed to fund a key rather than a task fee or a subscription — see billing. Cheapest listed rate and cheapest finished task are separate questions; a smaller model that needs three attempts can cost more than one that lands the change once.

Running both, and when to migrate

These two do not have to be an either/or, and the config trees say so: Pi reads ~/.pi/agent/, Hermes Agent reads ~/.hermes/, and neither documents any shared state. Hermes also isolates by profile — hermes -p work reads its own memories directory — so a work residency and a personal one need not share context.

Migrate to Hermes Agent when the thing you keep wanting is unattended: scheduled work, a reply from a messaging app, or an agent that remembers a decision you explained last week without you pasting it again. Migrate to Pi when the work is supervised code in a repository and the standing process is overhead you do not want to operate. Add the Pi memory extension only after you have priced its review cycles, and never on the assumption that it turns Pi into Hermes Agent. And if the reason to move is really model access rather than workflow, neither migration is necessary: both products reach the same endpoint through documented configuration.

Whichever you try, treat every configuration on this page as read from vendor documentation rather than proven. Keep a working route available, run one bounded task, then reconcile the agent's own cost readout against the charge your provider account actually recorded — an agent's arithmetic over reported tokens is an estimate, not a ledger. For the wire-level detail, OpenAI-compatible API covers what the compatible surface includes; Hermes Agent pricing and Pi pricing carry each product's full billing picture. When you are ready to fund a key for either one, create a Kunavo account.

FAQ

What is the difference between Pi and Hermes Agent?

They are different categories of software. Pi, from Earendil Inc. at pi.dev, is an interactive terminal coding harness: you start it in a project directory, it edits files and runs shell commands for that session, and it exits. Hermes Agent, from Nous Research, is a resident personal agent: a CLI, a desktop app and an always-on gateway process, with memory files that are injected into the system prompt at every session start, a cron scheduler, and a documented messaging index whose platform comparison table listed 28 platforms on September 21, 2026. Both are MIT-licensed and both cost $0 to install. Pi is a Node package; Hermes Agent is a Python project whose installer also pulls Node.js, ripgrep and ffmpeg.

Does installing pi-hermes-memory give me Hermes Agent?

No. pi-hermes-memory is a third-party Pi extension published on npm by chandra447, MIT-licensed, version 0.9.9 published September 13, 2026. Its own npm description says it is "Ported from Hermes agent" — it reimplements a memory layer inside Pi. It is published by neither Nous Research nor Earendil, and nothing in its npm entry or catalog listing describes installing Hermes Agent or connecting to a running one. It is also not free to run: the pi.dev catalog listing states that each review cycle costs one full LLM API call through a child pi -p process, which is a recurring token charge on whatever endpoint Pi is pointed at.

Is Hermes in this comparison the Hermes 4 model?

No, and this is the easiest mistake to make because both come from the same vendor. Nous Research's own homepage lists Hermes 4 at hermes4.nousresearch.com and Hermes Agent at hermes-agent.nousresearch.com as separate products. Hermes 4 is an open-weight model family with per-token inference prices published by whichever catalog serves it; Hermes Agent is MIT-licensed agent software that costs nothing to install and calls whatever model you point it at. A per-token figure quoted for Hermes 4 is not a price for Hermes Agent. There are also two unrelated Hermes projects that rank for the name: Meta's JavaScript engine for React Native, and the French luxury house.

Can I run Pi and Hermes Agent at the same time?

Nothing documented stops you, and they keep separate state: Pi reads ~/.pi/agent/ and Hermes Agent reads ~/.hermes/. They are not substitutes, so running both is a reasonable outcome rather than a compromise — Pi for supervised work inside a repository, Hermes Agent for the standing assistant you reach from a messaging app. The same gateway key can fund both, but the two products want different configuration: Pi takes a providers block in ~/.pi/agent/models.json, Hermes Agent takes a providers entry in ~/.hermes/config.yaml, and the Anthropic-protocol base URL is unsettled on both sides — Pi's own documentation shows two different forms and the Hermes form is unverified. No dual setup has been runtime tested here.

Which is safer to leave running unattended?

Hermes Agent is the one with a documented approval system; Pi is explicit that it has none. Pi's README states that it does not include a built-in permission system for filesystem, process, network or credential access, and its security page states that it includes no built-in sandbox, so built-in tools run with the permissions of the pi process. Hermes Agent gates dangerous shell commands behind a once / session / always / deny prompt, persists an "always" answer to command_allowlist in ~/.hermes/config.yaml, and offers approvals.mode set to smart, manual or off. One condition matters: Hermes' own security page says those dangerous-command checks are skipped on the docker, singularity, modal, daytona and vercel_sandbox terminal backends, because the container is treated as the boundary instead. Read from vendor documentation on September 21, 2026; neither behaviour was tested here.

Do I need a Nous subscription to use Hermes Agent?

Not for the agent. Hermes Agent is MIT-licensed and its custom-endpoint path, memory system, messaging channels, cron scheduler, approval system and terminal backends are ordinary configuration in ~/.hermes/config.yaml. The one plan gate found in the docs read here is narrow: the Tool Gateway page states that the Tool Gateway is a paid-subscription feature, covering the hosted tool layer rather than the agent. That same page also says some accounts receive a small managed-tool allowance without a paid subscription, with no size or eligibility rule published, so treat the allowance as real but unquantified. Every gateway tool can be pointed at your own vendor key instead, per-tool.

Which one costs less to run?

Neither charges for the software, so the difference is structural rather than a price gap. Both are MIT-licensed at $0, and both spend model tokens at whatever endpoint you configure. Two recurring lines separate them. Hermes Agent's memory retrieval makes no LLM call — its documentation describes memory content as injected into the system prompt at session start, which costs input tokens and nothing else. Pi has no built-in memory, and the third-party extension that adds one bills a full LLM call per background review cycle. On the other side, Hermes Agent is designed to run off your laptop, so a host bill can appear that Pi never creates. Which is cheaper depends on how many sessions and how many review cycles you actually run.

Checked September 21, 2026: the GitHub API for both repositories, Pi's raw README, sessions, providers and containerization documents, pi.dev and its models documentation and package catalog, the npm registry entries for both Pi packages and for pi-hermes-memory, hermes-agent.nousresearch.com's installation, quickstart, platform-support, memory, messaging, security, configuring-models, profiles, Nous Portal and Tool Gateway pages, portal.nousresearch.com and nousresearch.com. Star counts, download counters and the package and platform totals are single-day snapshots that drift. Kunavo rates render from the live catalog and every dollar figure here is illustrative token arithmetic, not a measured task cost. Neither Pi nor Hermes Agent has been runtime tested against Kunavo in this work, and no compatibility claim is made for either.