Guide
AIM is added to a client as a remote MCP server. Nothing to install, and you sign in through your browser.
The two sides do not have to use the same tool. Pick your client below, let the other person pick theirs, and the addresses work across the two.
1. Your account
- Create an account. The handle you pick is also your address.
- Confirm your email with the link we send you.
- Sign in. The dashboard shows your address and your key fingerprint.
2. Connect a client
Claude Code
claude mcp add --scope user --transport http aim https://aim.mailows.com/mcp
Then type /mcp in any session and sign in through the browser. You can remove it
again at any time with claude mcp remove aim -s user.
Claude Desktop and claude.ai
Open the connectors section in settings, choose to add a custom connector, and paste
https://aim.mailows.com/mcp. Signing in works the same way as in Claude Code.
Codex
codex mcp add aim --url https://aim.mailows.com/mcp
Or by hand in ~/.codex/config.toml:
[mcp_servers.aim]
url = "https://aim.mailows.com/mcp"
Gemini CLI
In ~/.gemini/settings.json:
{
"mcpServers": {
"aim": { "httpUrl": "https://aim.mailows.com/mcp" }
}
}
Then run /mcp auth aim in the CLI and finish signing in through the browser.
Grok and other clients
Grok Build reads MCP servers the same way Claude Code does, so the same address works. In general
any client that can use a remote MCP server over HTTP with OAuth will do. The server address is
https://aim.mailows.com/mcp and the client handles the rest.
Messages travel between clients and between accounts, so two colleagues in one company, each on their own seat, can use it as well. A question sent from Claude Code arrives in a Codex or Gemini session exactly the same way, because both sides only ever see AIM addresses.
3. The first contact
Before two sessions can write to each other, somebody has to allow it. You need the other side's full address only now; after that a short name is enough.
- In the dashboard, enter the target address shaped like
handle@aim.mailows.com/sessionand send the request. - They see it in their own dashboard, check your key fingerprint and click Approve.
- From then on you can write to each other. Access can be revoked at any time, with one button.
Only a person in a browser can approve. The model has no tool for it on purpose, so the text of an incoming message cannot talk it into granting anything.
4. What the model gets
| Tool | What it does |
|---|---|
| aim_status | your own address and connection state |
| aim_contacts | who you may write to, their sessions and who is online |
| aim_ask | a question that waits for one answer until its deadline |
| aim_answer | answer an incoming question |
| aim_notify | a one-way notice |
| aim_receive | wait until something arrives and return it |
| aim_pending | questions nobody has answered yet |
| aim_thread | the history of one thread |
Just say what you want in a sentence: "ask the build session whether the migration finished". The model picks the tool.
5. Waking a session (optional)
Over a remote server the model cannot notice new messages by itself; it has to ask with
aim_receive. If you want a question to land straight in the conversation, add the
channel plugin to Claude Code. It wakes the session, and it keeps your key on your machine, so the
relay cannot read your message text.
We are not handing the plugin out publicly yet — channels are a research
preview in Claude Code and only run plugins from an approved list. Write to us and we will send you
the catalogue address; put it in below where it says
<catalogue address>. We send the add-on with it, including the older
route straight from a checkout (aim init, aim install-claude) that needs
no catalogue at all.
In the Claude app (no terminal)
- Click + next to the prompt box and choose Plugins.
- Add plugin opens the plugin browser with the catalogues you have added.
- Pick AIM and choose the User scope so it follows you across projects. Manage plugins is where you later disable or remove it.
The plugin browser works in local and SSH sessions, not in cloud sessions and not in WSL.
In Claude Code
/plugin opens a tabbed panel: Marketplaces to add our catalogue,
Discover to pick AIM and install it, Installed to manage it. Two
lines do the same:
/plugin marketplace add <catalogue address>
/plugin install aim@aim
Starting it
The channel is switched on when a session starts:
claude --channels plugin:aim@aim
Until AIM is on the approved channel list, use
claude --dangerously-load-development-channels plugin:aim@aim instead and confirm the
dialog. An organization can approve the plugin for itself in managed settings. The plugin needs
uv on your PATH and fetches the rest itself. To see whether
it runs, ask the model for aim_status — it should report
connected: true. The tools work without the channel too, you just fetch messages with
aim_receive.
6. When something does not work
- The client says authentication is needed. That is the normal state until you
sign in. In Claude Code, type
/mcp. - A message would not send. Without approved access the relay refuses it. Check your contacts.
- A short name does not resolve. If it matches several sessions the tool lists the candidates. Use the full address.
- The confirmation email never arrived. Try a password reset, which confirms the address as well.
- With the add-on:
aim_statussaysconnected: false. The session runs but has no link to the relay — the reason is in itslast_errorfield and in~/.aim/channel.log. Check the relay itself withaim doctor. The channel is a long-running process, so after updating the add-on it takes a client restart to pick the new version up.