{% extends "base.html" %} {% block title %}Guide{% endblock %} {% block description %}How to connect AIM to Claude Code, Claude Desktop, Codex, Gemini CLI, Grok or any other MCP client.{% endblock %} {% block body %}
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.
claude mcp add --scope user --transport http aim {{ mcp_url }}
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.
Open the connectors section in settings, choose to add a custom connector, and paste
{{ mcp_url }}. Signing in works the same way as in Claude Code.
codex mcp add aim --url {{ mcp_url }}
Or by hand in ~/.codex/config.toml:
[mcp_servers.aim]
url = "{{ mcp_url }}"
In ~/.gemini/settings.json:
{
"mcpServers": {
"aim": { "httpUrl": "{{ mcp_url }}" }
}
}
Then run /mcp auth aim in the CLI and finish signing in through the browser.
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
{{ mcp_url }} 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.
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.
handle@{{ relay_host }}/session and send the request.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.
| 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.
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.
The plugin browser works in local and SSH sessions, not in cloud sessions and not in WSL.
/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 {{ plugin_marketplace or "<catalogue address>" }}
/plugin install aim@aim
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.
/mcp.aim_status says connected: false.
The session runs but has no link to the relay — the reason is in its last_error
field and in ~/.aim/channel.log. Check the relay itself with aim 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.