Autonomous agents

Post to social media from NanoClaw

Setup checked September 22, 2026NanoCo

NanoClaw runs AI agents in containers on your own machine — Claude Code by default — and you talk to them from WhatsApp, Telegram, Slack and other chat apps. Add iHatePosting to an agent group and you can ask for a post from your phone and have it scheduled.

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 NanoClaw

    Run this in a terminal on the NanoClaw host, not in a chat. It needs NanoClaw 2.2.0 or later, on macOS, Linux or WSL2. Run ncl groups list first, and put the id it prints on the GROUP_ID line before you run the rest. Replace YOUR_API_KEY with your key.

    # 1. Find your agent group, and put its id on the next line
    ncl groups list
    GROUP_ID=your-group-id
    
    # 2. Add the hosted server to that group
    ncl groups config add-mcp-server --id "$GROUP_ID" --name ihateposting --url https://ihateposting.com/mcp
    
    # 3. Keep the key in the OneCLI vault, which adds the header on the way out
    onecli secrets create --name iHatePosting --type generic --value YOUR_API_KEY --host-pattern ihateposting.com --header-name Authorization --value-format 'Bearer {value}'
    # Newer OneCLI only (if it has 'agents grants'): every agent is selective there, so attach
    # the secret — ids from: onecli agents list, onecli secrets list
    # onecli agents grants attach-secret --id AGENT_ID --secret-id SECRET_ID
    
    # 4. Restart the group so it loads the server
    ncl groups restart --id "$GROUP_ID"
  3. 3. Ask it to post

    Tell NanoClaw 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 NanoClaw

  • MCP servers belong to an agent group, so run ncl groups list first and use that group's id. Run the commands in a terminal on the NanoClaw host: there they run at once, with no admin approval, and the group loads the server when it restarts.
  • The key goes in the OneCLI vault, not in NanoClaw's config. The vault adds the Authorization header to requests bound for ihateposting.com, so the key never sits in the group's container.json, where the agent itself could read it.
  • Passing --value leaves the key in your shell history. OneCLI's --file option, or its dashboard, avoids that.
  • Restart the group, then ask the agent to call whoami. If the tools answer No API key, the vault is not adding the header for this agent. Find the agent whose identifier is your group id with onecli agents list, and the new secret's id with onecli secrets list. If your onecli has the agents grants command (newer OneCLI, where every agent is selective), run onecli agents grants attach-secret --id AGENT_ID --secret-id SECRET_ID. On the older OneCLI that NanoClaw pins, only an agent whose secretMode is selective needs a grant: there onecli agents set-secrets replaces the whole list, so pass the ids that onecli agents secrets --id AGENT_ID prints plus the new one, and never run it on an agent in all mode.
  • If the vault still will not authenticate, put the header on the server itself: run ncl groups config add-mcp-server --id "$GROUP_ID" --name ihateposting --url https://ihateposting.com/mcp --headers '{"Authorization":"Bearer YOUR_API_KEY"}', which replaces the entry of the same name, then restart the group. That works, but stores the key in container.json, where the agent can read it.
  • Asking the agent to add the server from a chat needs an admin's approval, and the add_mcp_server tool it uses takes only a URL — so the key still has to come from the vault. Never paste the key into a chat.

Limits. NanoClaw is free, open source (MIT) and self-hosted, on macOS or Linux — Windows only through WSL2 — with Docker. Streamable HTTP servers need NanoClaw 2.2.0 or later, so update older builds first. The server address must use HTTPS.

NanoCo's own documentation: NanoClaw documentation

Nothing goes out unless you say so

Every post NanoClaw 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 key go in NanoClaw?

In the OneCLI vault, not in NanoClaw's config. The vault adds the Authorization header to requests bound for ihateposting.com, so the key never sits in the group's container.json, where the agent itself could read it.

Why do the tools answer No API key?

The vault is not adding the header for this agent. Find the agent whose identifier is your group id with onecli agents list, and attach the new secret to it, as the steps on this page describe for your OneCLI version.

Can I ask the agent to add iHatePosting from a chat?

Only with an admin's approval, and the add_mcp_server tool it uses takes only a URL, so the key still has to come from the vault. Never paste the key into a chat.

Ready to post everywhere from NanoClaw?

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