Autonomous agents

Post to social media from Hermes Agent

Setup checked September 22, 2026Nous Research

Hermes Agent is Nous Research's open-source terminal agent, and once you connect iHatePosting it can post to social media from the chat. It reads MCP servers from one YAML file, so a short block in config.yaml hands it our hosted server. What it writes stays a draft unless you ask for the post to go out now or at a set time.

Set it up

  1. 1. Create an iHatePosting API key

    Sign in, open Settings → Developers and create a key. It starts with pk_live_ and is shown in full only once, so copy it before you leave the page.

  2. 2. Add iHatePosting to Hermes Agent

    Add to ~/.hermes/config.yaml, under mcp_servers. On native Windows that file is %LOCALAPPDATA%\hermes\config.yaml, and if you use a Hermes profile, hermes config edit opens that profile's file. If the file already has an mcp_servers line, add only the ihateposting block under it — a second mcp_servers line replaces the first. Then type /reload-mcp in any Hermes chat you already have open. You can set it up from a terminal instead, with the command at the end of this note: answer Y when it asks whether the server needs authentication, paste your key (never leave it empty), press Enter to enable all its tools, then type /reload-mcp or start a new chat. If it says MCP_IHATEPOSTING_API_KEY is already configured, it is reusing a key saved earlier in the .env file next to config.yaml — change that line there if the key is old or wrong. The command to run is: hermes mcp add ihateposting --url https://ihateposting.com/mcp (it asks for your key) Replace YOUR_API_KEY with your key.

    mcp_servers:
      ihateposting:
        url: "https://ihateposting.com/mcp"
        headers:
          Authorization: "Bearer YOUR_API_KEY"
  3. 3. Ask it to post

    Tell Hermes Agent what you want to say and where. It saves a draft in iHatePosting unless you ask for the post to go out now or at a set time.

What is different about Hermes Agent

  • Put the block in ~/.hermes/config.yaml, under mcp_servers. On native Windows the Hermes home is %LOCALAPPDATA%\hermes\, so the file is %LOCALAPPDATA%\hermes\config.yaml, with .env beside it and the logs in logs\ inside the same folder. A named profile keeps its own tree, so the file is ~/.hermes/profiles/<name>/config.yaml, and HERMES_HOME moves the whole tree. Run hermes config path when you are not sure which file Hermes is reading.
  • config.yaml is YAML, not JSON. If the file already has an mcp_servers line, put the ihateposting entry under that line rather than starting a second one.
  • There is no transport or type field to set here. Hermes reads the shape of the entry — url for a remote server, command for a local one — so url and headers are the whole entry for ours. Its reference also allows enabled, timeout, connect_timeout, and tools.include or tools.exclude to narrow which tools load.
  • There is a one-command route: hermes mcp add ihateposting --url https://ihateposting.com/mcp — it asks "Does this server require authentication?", takes your key at an "API key / Bearer token" prompt, saves it in the .env next to config.yaml as MCP_IHATEPOSTING_API_KEY, and writes an Authorization header into config.yaml that reads Bearer ${MCP_IHATEPOSTING_API_KEY}. It then asks whether to enable all the tools, offering [Y/n/select], where Enter takes all of them. Run it a second time on the same name and it asks whether to overwrite, and the default is no.
  • If your key lives in that variable rather than in config.yaml, check the variable really is set. Hermes's own reference says an unset variable keeps its literal placeholder, so ${MCP_IHATEPOSTING_API_KEY} is sent as your key and every tool answers iHatePosting API 401. Look in both places it can be set: the .env beside config.yaml, and the environment Hermes runs in. The add command saves your key to .env before it tries the connection, so a failed attempt can leave the key behind, and when it reports MCP_IHATEPOSTING_API_KEY: already configured it is reusing a key saved earlier — change that line in .env when the key is old or wrong. A key written into the headers line cannot go unset.
  • Type /reload-mcp in a chat you already have open after editing the file, because Hermes registers MCP servers at start-up; the command route ends by telling you to start a new session instead. Run hermes mcp test ihateposting to check that Hermes reaches the address — it passes even when the key is wrong. The start-up summary in the agent log, which hermes logs opens for you, counts the servers that failed to connect and names the reason in brackets, and ours fails there only over the address or the network. Our server lists its tools to anyone who asks, so none of that proves the key: Hermes prefixes our tools as mcp_ihateposting_, so ask it to run mcp_ihateposting_whoami, which names the iHatePosting account your key belongs to.

Limits. Hermes Agent is open source, and its documentation puts no plan or subscription on MCP. A Nous Portal subscription is the recommended way to run it, not a requirement — the docs point to other model providers as alternatives. Windows 10 and 11 are supported natively and MCP servers work there; the one native-Windows gap the docs list is the dashboard's embedded terminal pane, which needs a POSIX PTY.

Nous Research's own documentation: MCP in Hermes Agent

Nothing goes out unless you say so

Every post Hermes Agent writes is saved as a draft in iHatePosting unless you ask for it to be published now or at a set time. Publishing, rescheduling, retrying and deleting are marked as actions that change things, so clients that honour those markings ask you before they run them. Deleting a post in iHatePosting never removes one that is already live on a network.

Frequently asked questions

Where does the iHatePosting block go?

In ~/.hermes/config.yaml, under mcp_servers. On native Windows the Hermes home is %LOCALAPPDATA%\hermes\, so the file is %LOCALAPPDATA%\hermes\config.yaml. A named profile keeps its own tree, so the file is ~/.hermes/profiles/<name>/config.yaml, and HERMES_HOME moves the whole tree. Run hermes config path to see the file Hermes is reading.

Do I have to restart Hermes after editing the file?

No. Type /reload-mcp in a chat you already have open, which refreshes the servers and the tool list. Hermes registers MCP servers at start-up, so a session opened before the edit sees nothing until you reload it or start a new one.

Why does every tool answer iHatePosting API 401?

The key is wrong or has been replaced, or the header points at ${MCP_IHATEPOSTING_API_KEY} and that variable is not set, either in the .env beside config.yaml or in the environment Hermes runs in — Hermes sends an unset variable as its literal placeholder, which our server reads as a wrong key. Ask Hermes to run mcp_ihateposting_whoami, which names the account your key belongs to, and create a new key in Settings → Developers. hermes mcp test passes even when the key is wrong.

How do I check the key works, not only the address?

Our server lists its tools to anyone who asks, so a connection, hermes mcp test and the start-up count in the agent log all prove the address rather than the key. Ask Hermes to run mcp_ihateposting_whoami, which names the iHatePosting account your key belongs to; a wrong key comes back as iHatePosting API 401.

Ready to post everywhere from Hermes Agent?

Start your 90-day free trial — no credit card, about a minute to your first post.

Sign Up

Other AI agents

See every AI agent