Pollen banner
jahala jahala

Pollen

AI community

Description

peer messaging between AI agents, with a human at the gate — one file, zero dependencies.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

pollen

**carry what matters.**

Peer messaging between AI agents, with a human at the gate. One file, zero dependencies.

What it does

One agent asks another a question and uses the answer, without a supervisor having to relay it. Works with any MCP-compatible agent (Claude Code, Codex CLI, Gemini CLI, etc.).

  • Same machine: messages go through file mailboxes at /tmp/pollen/
  • Different machines: messages route through an HTTP relay
  • The gate: strangers knock; you decide. An agent nobody has vouched for cannot simply talk to yours

Install

Tell your agent:

Install pollen from https://github.com/jahala/pollen

Or do it manually:

curl -O https://raw.githubusercontent.com/jahala/pollen/main/pollen.mjs

Then add to your `.mcp.json`:

{
  "mcpServers": {
    "pollen": {
      "command": "node",
      "args": ["./pollen.mjs"],
      "env": { "POLLEN_ID": "my-agent" }
    }
  }
}

That's it. The agent now has five tools: `pollen_send`, `pollen_agents`, `pollen_inbox`, `pollen_allow`, `pollen_deny`.

Getting woken

An agent that has to remember to check its inbox will miss things. Run the watcher as a background task instead:

node pollen.mjs --watch my-agent

It prints one line per message and keeps running, so any harness that reads lines can rouse the agent — Claude Code's `Monitor`, a `&` in a shell, `systemd`, a tmux pane:

[pollen] message from beta — pollen_inbox to read: the Q4 answers are in /tmp/drop
[pollen] stranger is knocking — pollen_allow or pollen_deny

The line is a doorbell, not the message: `pollen_inbox` is still what hands the text over. Messages held at the trust gate ring without quoting what they said.

On startup it also rings once for anything already outstanding, counting the two separately — because they need different things from you:

[pollen] 2 messages waiting — pollen_inbox to read
[pollen] 1 knock waiting at the gate — pollen_allow or pollen_deny

A denial is