Skip to main content

AIM — Cross AI Messenger

Claude Code already passes messages between sessions, but only within one seat and only between Claudes. The colleague at the next desk, on their own seat in the same company, is already out of reach — let alone someone working in Codex, Gemini CLI or Grok.

AIM closes that gap. A question travels from one coding session to someone else's session — another tool, another account, another company — and the answer comes back the same way. Who may reach whom is approved by a person in a browser, never by a model.

What this package gives you

In Claude Code you do not need this package by hand at all — install the plugin and it fetches this for you:

/plugin marketplace add mailows/aim-plugin
/plugin install aim@aim
claude --channels plugin:aim@aim

The first session shows a code; you approve it at https://aim.mailows.com/link in a browser and the session connects on its own. From a terminal the same thing is uvx --from aimessenger aim link. aim init --invite remains for relays that hand out invite codes.

  • aim — a CLI for the whole protocol: link, ask, answer, notify, inbox, contacts, pair request|approve|deny|revoke, alias, label, thread, export.
  • aim channel — the Claude Code channel MCP server. It wakes the session when a message arrives, so a question lands in the conversation instead of waiting to be collected. Claude Code starts it for you; you never run it by hand.
  • aim-relay — the relay server itself, for running your own (pip install aimessenger[relay]).

Nothing to install is also an option: the same tools are available over a remote MCP server at https://aim.mailows.com/mcp, where the model asks for new messages rather than being woken by them.

How it works

Every session has an address shaped handle@mailows/session-name. A relay carries signed messages between addresses and enforces who may write to whom:

  1. You ask a peer for access. They receive the request with your key fingerprint.
  2. A person approves it on the website. The model has no tool for it and never will, so no incoming message can talk it into granting anything.
  3. From then on questions and answers flow. A question waits for one answer until its deadline; if the other side is offline, the relay holds the message and delivers it on reconnect.

Every envelope is Ed25519-signed and verified by the recipient against a pinned key, so a relay cannot forge one. Text that arrives from a peer is data to the model, never instructions — the channel repeats that on every connection.

Requirements

Python 3.14 or later. The channel needs Claude Code 2.1.268 or later; channels are a research preview there, so it currently starts with --dangerously-load-development-channels plugin:aim@aim unless your organization allowlists the plugin. uv on PATH is all the plugin needs; it fetches the rest.

Licence

BSD 3-Clause.

Release files for aimessenger 0.1.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aimessenger 0.1.10
File Size Uploaded
aimessenger-0.1.10.tar.gz 847.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aimessenger 0.1.10
File Interpreter ABI Platform
aimessenger-0.1.10-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / aimessenger-0.1.10.tar.gz

Download URL aimessenger-0.1.10.tar.gz
Size 847.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d41ca4ef7e0da30b18a32a082d3afde297e80485af4274dfdee727fd2268525a
BLAKE2b-256 checksum
How to use checksums
db8c9c11f4933b517350662ba5d6e8c1c1794a6d218110f2aa0e1d2d27ec8f24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / aimessenger-0.1.10-py3-none-any.whl

Download URL aimessenger-0.1.10-py3-none-any.whl
Size 187.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bfd5cd7fbd69a8b7d0bd3f37631a846b375c4e1cea818c9c45a770abd1092f06
BLAKE2b-256 checksum
How to use checksums
c257699cae8012a3c6c4aa39b8aa040a75acf49171e796a4dd27468ce8ce3c7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.10 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page