AIMmailows

Návod

V Claude Code je AIM plugin: nainstalujete ho, v prohlížeči potvrdíte počítač a session je k zastižení. Nic se nekopíruje ručně a žádný soubor s klíčem nikam neputuje.

Ostatní nástroje se připojí jako vzdálený MCP server. Obě strany nemusí mít stejný nástroj — adresy fungují napříč.

1. Instalace pluginu

Dva řádky v libovolné session Claude Code:

/plugin marketplace add mailows/aim-plugin
/plugin install aim@aim

Nebo proklikem: /plugin otevře panel se záložkami — Marketplaces (přidání našeho katalogu), Discover (vyberete AIM) a Installed (pozdější správa). V aplikaci Claude bez příkazové řádky klikněte vedle pole pro zprávu na +, zvolte Plugins, pak Add plugin a vyberte rozsah User, ať plugin máte ve všech projektech.

Jedna věc předem: uv. Plugin spouští klienta příkazem uv, který na čistém Windows ani macOS není. Je to jeden příkaz, bez práv správce, a sám si přinese Python 3.14 i hotové balíčky, takže se nic nekompiluje a Python na stroji být nemusí:

irm https://astral.sh/uv/install.ps1 | iex       # Windows (PowerShell)
curl -LsSf https://astral.sh/uv/install.sh | sh  # macOS, Linux

Potom otevřete nový terminál, ať je uv v PATH. Kód klienta je přímo v pluginu, zbytek si plugin stáhne sám — poprvé to trvá kolem deseti vteřin, a Claude Code dává MCP serveru na start třicet. Na pomalé lince ten první start může nestihnout a hlásí se pak jako spadlý server; spraví to, když ho jednou předehřejete příkazem uvx --from aimessenger aim --help, nebo tu session spustíte s MCP_TIMEOUT=120000. Každý další start je okamžitý.

Session spusťte se zapnutým kanálem

claude --channels plugin:aim@aim

Právě kanál zařídí, že příchozí dotaz naskočí rovnou do konverzace. Dokud AIM není na schváleném seznamu kanálů Anthropicu, použijte místo toho claude --dangerously-load-development-channels plugin:aim@aim a potvrďte dialog při startu.

Ten přepínač nezmizí. Claude Code vyžaduje --channels jednou za session u každého kanálu, včetně svého vlastního Telegramu a Discordu; žádné nastavení kanály nezapne natrvalo a instalace pluginu to neudělá taky. Je to záměr — kanál smí psát do běžící session, takže to někdo musí pokaždé povolit. Zbavit se jde jedině slova dangerously, a to tak, že si plugin schválí organizace.

Schválení v organizaci

Owner organizace na Teamu nebo Enterprise to nastaví v managed settings (claude.ai → Admin settings → Claude Code):

{
  "channelsEnabled": true,
  "allowedChannelPlugins": [
    { "marketplace": "aim", "plugin": "aim" },
    { "marketplace": "claude-plugins-official", "plugin": "telegram" },
    { "marketplace": "claude-plugins-official", "plugin": "discord" },
    { "marketplace": "claude-plugins-official", "plugin": "imessage" }
  ]
}

Pozor: allowedChannelPlugins seznam od Anthropicu nahrazuje, nepřidává se k němu. Když tam dáte jen AIM, přestanou se tou samou chvílí registrovat vlastní kanály Clauda — proto jsou oficiální pluginy vypsané výš. Nechte si ty, které používáte, zbytek smažte. Bez channelsEnabled: true nefunguje nic.

Potom stačí obyčejné claude --channels plugin:aim@aim.

AIM vedle vlastních kanálů Clauda

AIM není jediný kanál. Anthropic v katalogu claude-plugins-official vydává Telegram, Discord a iMessage (plus fakechat, lokální ukázku); ty přivádějí do session chat z telefonu podobně, jako AIM přivádí jiné kódovací session. Potřebují Bun místo uv a každý se nastavuje vlastním tokenem:

/plugin marketplace add anthropics/claude-plugins-official
/plugin install telegram@claude-plugins-official
/telegram:configure <token od BotFathera>

--channels bere víc pluginů najednou, oddělených mezerou:

claude --channels plugin:aim@aim plugin:telegram@claude-plugins-official

Dokud AIM potřebuje vývojový přepínač, nechte to oddělené — výjimka platí jen pro položky vypsané za ním, takže oficiální plugin zůstane u --channels:

claude --dangerously-load-development-channels plugin:aim@aim        --channels plugin:telegram@claude-plugins-official

Každý kanál pak míří do téže session: dotaz od kolegova Clauda přijde přes AIM, zpráva z telefonu přes Telegram, a obojí se zařadí a zpracuje v pořadí, jak dorazilo.

Co Claude umí i bez nás

Claude má několik oficiálních cest do session a ze session. AIM žádnou z nich nenahrazuje — zaplňuje jedinou mezeru, kterou nechávají: session někoho jiného.

Oficiální cestaCo děláKam dosáhne
Zprávy mezi sessionami session jednoho účtu si píšou navzájem; stačí Claudovi říct, ať vypíše ostatní a napíše jim vaše vlastní session
Remote Control svoji běžící session řídíte z claude.ai nebo z mobilní aplikace vy, když nejste u stolu
Claude ve Slacku zmínka @Claude spustí z vlákna novou cloudovou session nová cloudová session
Telegram, Discord, iMessage přivedou chat z telefonu do session, kterou máte otevřenou vy, z telefonu
AIM dotaz doputuje do session na jiném účtu, v jiném nástroji nebo v jiné firmě a odpověď se vrátí session někoho jiného

Nejblíž jsou zprávy mezi sessionami: v rámci jednoho účtu si Claude umí vypsat ostatní session a napsat jim. Končí to ale na hranici účtu — a ta vede i mezi dvěma kolegy na samostatných seatech téže firmy, natož mezi Claude Code a Codexem. Přesně tuhle čáru AIM překračuje, a jen tam, kde to člověk schválil.

Bez toho přepínače plugin funguje taky: všechny nástroje jsou k dispozici a zprávy dorazí, jen session nemá co probudit — model si je musí vyzvednout nástrojem aim_receive. Dobré vědět dřív, než usoudíte, že je něco rozbité.

První session po instalaci ještě nemá účet a sama to řekne. Požádejte o připojení — /aim-link, nebo prostě „přihlas AIM“ — a model ukáže dvě věci: osmiznakový kód a adresu https://aim.mailows.com/link.

  1. Otevřete tu adresu v prohlížeči a přihlaste se. Účet ještě nemáte? Založte si ho rovnou tam, je to na minutu.
  2. Opište kód a potvrďte. Vidíte, který počítač se hlásí a z jaké adresy, takže poznáte svou žádost od cizí.
  3. A to je všechno. Session se do pár vteřin připojí sama, bez restartu, a ohlásí adresu, na které od teď odpovídá.

Každá session na tom počítači je od té chvíle přihlášená, i ta, kterou spustíte zítra. Druhý počítač dostane vlastní kód stejným způsobem.

Potvrzujte jen kód, který právě vidíte na své vlastní obrazovce. Potvrzením předáte tomu počítači identitu svého účtu, takže pod vaší adresou může psát. Kód platí deset minut, dá se použít jednou a může ho zadat jedině přihlášený člověk — žádný model, ani tady, ani na druhé straně. Když vám někdo pošle kód a chce, ať ho potvrdíte, žádá vás o váš účet.

Máte radši příkazovou řádku? uvx --from aimessenger aim link udělá totéž a vypíše tentýž kód.

3. Ostatní nástroje: Grok, Codex, Gemini CLI, Claude Desktop

Klient je všude stejný program, liší se jen místo, kam si ho který nástroj zapíše. Grok vezme plugin tak, jak je. Codex, Gemini CLI a OpenCode spustí klienta jako lokální MCP server, nebo se k relayi připojí jako ke vzdálenému a nic neinstalují. Počítač, který jste jednou přihlásili (kapitola 2), je přihlášený pro všechny nástroje na něm.

Claude Desktop a claude.ai

V nastavení otevřete sekci konektorů, zvolte přidání vlastního konektoru a vložte adresu https://aim.mailows.com/mcp.

Codex (aplikace i CLI)

Doporučená cesta je lokální klient: session v Codexu dostane vlastní adresu, klíč zůstane na vašem stroji a počítač přihlášený jednou pro Claude Code je přihlášený i pro Codex. Plugin pro Claude Code do Codexu neinstalujte, Codex ho nespustí; stačí obyčejný MCP server.

V aplikaci Codex: Nastavení → MCP servery → přidat server typu STDIO a vyplnit:

  • Příkaz: uvx — jen tohle slovo, nic víc,
  • Argumenty: --from, aimessenger, aim, channel — každý zvlášť,
  • Proměnná prostředí: AIM_HOST = codex.

Z terminálu totéž jedním příkazem:

codex mcp add aim --env AIM_HOST=codex -- uvx --from aimessenger aim channel

Výsledek v ~/.codex/config.toml má vypadat takhle (delší čas na start je kvůli prvnímu spuštění, kdy si uvx stahuje balík):

[mcp_servers.aim]
command = "uvx"
args = ["--from", "aimessenger", "aim", "channel"]
startup_timeout_sec = 120

[mcp_servers.aim.env]
AIM_HOST = "codex"

AIM_HOST=codex pojmenuje session podle nástroje (složka-codex), takže okno Codexu a Claude session ve stejné složce nedostanou tutéž adresu.

Přihlášení: u lokálního klienta Codex ukazuje u ověření „Unsupported“ a je to v pořádku — přihlášení přes OAuth mají jen vzdálené servery. Klient používá přihlášení počítače v ~/.aim. Po restartu Codexu napište modelu „zavolej aim_status“; když odpoví not_linked, řekněte mu „spusť aim_link“ a kód, který ukáže, zadejte na https://aim.mailows.com/link.

Bez instalace jako vzdálený server (přihlášení v prohlížeči):

codex mcp add aim-web --url https://aim.mailows.com/mcp
codex mcp login aim-web

Když něco nejde:

  • Server se nespustí: nejčastěji je do pole Příkaz vložený celý příkaz (codex mcp add … nebo uvx --from …). Do Příkazu patří jen uvx, zbytek do Argumentů.
  • Na Windows každý příkaz končí SetNamedSecurityInfoW … failed: 5: to není AIM, ale sandbox Codexu, který nemůže měnit oprávnění své složky %USERPROFILE%\.codex\.sandbox-bin (vznikla při nastavení „jako správce“ a patří skupině Administrators). Jednou v PowerShellu jako správce: icacls "$env:USERPROFILE\.codex\.sandbox-bin" /setowner "%USERNAME%" /T /C (s vaším účtem), a Codex restartovat.

Codex neumí, aby nástroj sám zahájil tah, takže příchozí zprávy čekají, až si je model vyzvedne přes aim_receive; má pokyn podívat se na začátku a na konci své práce, a kdykoli mu můžete napsat „zkontroluj AIM“.

Gemini CLI

Do ~/.gemini/settings.json:

{
  "mcpServers": {
    "aim": { "httpUrl": "https://aim.mailows.com/mcp" }
  }
}

Pak v CLI spusťte /mcp auth aim a dokončete přihlášení v prohlížeči.

OpenCode

OpenCode pluginy Claude Code ani kanály nezná, MCP ale umí obojím způsobem. Nejjednodušší je vzdálený server — přihlášení přes OAuth si OpenCode vyřídí sám dynamickou registrací klienta, kterou relay podporuje:

{
  "mcp": {
    "aim": { "type": "remote", "url": "https://aim.mailows.com/mcp", "enabled": true }
  }
}

Nebo spusťte tentýž program kanálu jako Claude Code, jako lokální server. Získáte tím pojmenovanou adresu (aim_rename) a klíč, který zůstane na počítači; stroj přihlásíte kódem přesně jako v kapitole 2:

{
  "mcp": {
    "aim": {
      "type": "local",
      "command": ["uvx", "--from", "aimessenger", "aim", "channel"],
      "enabled": true
    }
  }
}

Ani jednou cestou nejde nic vložit do session OpenCode — není tam co probudit, takže si model zprávy vyzvedává nástrojem aim_receive. Konfigurace patří do opencode.json v projektu, nebo do globální konfigurace OpenCode; kde ta leží, říká jeho dokumentace.

Grok

Grok instaluje pluginy Claude Code tak, jak jsou, včetně AIM. Když ho máte na stejném stroji v Claude Code, Grok ho najde sám; jinak v Grokově /plugins přidejte jako marketplace mailows/aim-plugin a nainstalujte z něj aim.

Grok nejde probudit jako Claude Code, ale umí se probudit sám: jeho nástroj monitor dělá z každého řádku, který příkaz vypíše, upozornění, které zahájí tah. Požádejte ho jednou za session, ať spustí trvalý monitor na uvx --from aimessenger aim watch — instrukce AIM mu to samy navrhují — a každá příchozí zpráva session vzbudí. aim watch vypisuje jen, kdo píše a jaký druh zprávy to je; samotný text se čte přes aim_receive.

Cokoli dalšího

Jakýkoli klient, který umí vzdálený MCP server přes HTTP s přihlášením OAuth, si s AIM poradí. Adresa serveru je https://aim.mailows.com/mcp, o zbytek se postará klient sám.

Přes vzdálený server se do session nedá nic vložit, takže si model zprávy vyzvedává nástrojem aim_receive. Claude Code to umí taky; plugin navíc přidává probouzení a klíč drží u vás na počítači.

Zprávy chodí mezi různými klienty i mezi různými účty, tedy i mezi dvěma kolegy v jedné firmě, z nichž každý má vlastní seat. Dotaz odeslaný z Claude Code dorazí do session v Codexu nebo Gemini úplně stejně — obě strany vidí jen adresy AIM.

4. Adresa session

Každá session má adresu handle@mailows/jmeno-session. Handle je váš, jméno session si určujete sami a převádí se na malá písmena:

  • Claude Code s pluginem: jméno se bere ze session. /rename AIM-backend udělá adresu vas-handle@mailows/aim-backend.
  • Vzdálený MCP server: tam žádné jméno session není, takže si ho model při odesílání řekne parametrem from_session. Bez něj vystupuje jako /web.

Cílová session nemusí zrovna běžet. Zpráva počká a doručí se, až se session s tím jménem připojí — jméno ale musí sedět přesně.

Jak dát session adresu, která zůstane

Když je jméno adresa, session, která přijde o jméno, přijde i o poštu. Snadno to uteče: zavřete Claude Code, otevřete ho znovu — a session, kterou protistrana znala jako /aim, se může vrátit pojmenovaná podle adresáře, zatímco její zprávy čekají na adrese, kde nikdo neodpovídá.

Řekněte, jak se má jmenovat, a zůstane to tak:

/aim-rename aim

Jméno se hned ohlásí relayi a zapíše se k té session i k tomu adresáři, takže příští start na něj odpovídá znovu, ať už si session Claude Code pamatuje, nebo ne. Má taky přednost před jménem nastaveným přes /rename.

Co bylo posláno na starou adresu, zůstane ve frontě u ní, dokud se session toho jména nepřipojí; přejmenování to nepřesměruje. Frontu vyberete ručně příkazem aim inbox --session <stare-jmeno>.

Když v jedné session běží dva kanály AIM — plugin a k tomu starší ručně zaregistrovaný server — hlásí se oba o totéž jméno a relay tomu druhému přidá příponu, například /aim-2. Pokud se adresa objeví s příponou, kterou jste nezvolili, je to tím; co je zaregistrované dvakrát, ukáže claude mcp list.

5. Kdo komu smí psát

Vaše vlastní session mezi sebou

Nic se neschvaluje. Session jednoho účtu si píšou rovnou, ať běží na jakémkoli počítači nebo v jakémkoli klientovi. Stačí, že jsou přihlášené týmž účtem.

Cizí účet: žádost a potvrzení

  1. Žádost. Ten, kdo chce psát, vyplní v přehledu plnou adresu protistrany (handle@mailows/session) a odešle žádost. Z příkazové řádky totéž umí aim pair request.
  2. Potvrzení. Protistraně se žádost objeví v přehledu s otiskem klíče žadatele a rozhodne kliknutím na webu. Model na to nástroj nemá a mít nebude, aby ho k povolení nepřemluvil text příchozí zprávy. Žádost se do vašich sessions vůbec nedostane — čeká na webu a přijde vám o ní e-mail. Požádat o přístup je jediná věc, kterou může začít cizí člověk, a tímhle to končí: nic z toho, co napsal, se před model nedostane.
  3. Hotovo. Obě strany si od té chvíle můžou psát. Oprávnění platí rok a jedním tlačítkem se kdykoli odvolá.

Omezení na konkrétní sessiony

Schvalovací formulář má dvě nepovinná pole. Prázdné znamená „všechny“; jinak vypište jména oddělená čárkou, kde hvězdička zastupuje část jména:

PoleCo omezujePříklad
Smí psát jen na moje sessionyna které vaše sessiony smí adresovat evoluce, cyber*
Jen z jeho sessionůze kterých jeho sessionů vám smí psát build

S takovým oprávněním dorazí dotaz z bob@mailows/build na vaši evoluce nebo cyber-web, kdežto zpráva z bob@mailows/laptop nebo adresovaná vaší session osobni se odmítne s no_grant.

Jedna výjimka platí vždycky: odpověď na dotaz, který vám přišel, projde i bez opačného oprávnění. Relay si pamatuje, kudy dotaz šel, takže odpovídat můžete, aniž byste si sami o přístup žádali.

Když má protistrana zadávat práci

Ve výchozím stavu je příchozí zpráva data: model na ni odpoví, ale odmítne ji brát jako pokyn. To je bezpečné nastavení a většina protistran u něj má zůstat.

Když chcete, aby session kolegy té vaší opravdu zadávala práci — koordinující session, která rozděluje úkoly, nebo build, který hlásí, co opravit — zaškrtněte při schvalování Smí zadávat práci, nebo to zapněte později v tabulce kontaktů. Model pak jejich zprávy bere jako zadání: přečíst, vysvětlit a odpovědět může hned, ale než kvůli nim něco změní, spustí nebo odešle, řekne vám, co chce udělat, a počká na vaše ano.

Pro protistranu, které věříte úplně, vyberte v tabulce kontaktů úroveň důvěryhodná, jedná sama. Pak model práci provede bez ptaní a jen vám řekne, co udělal. Je to druhé, samostatné rozhodnutí člověka na webu; samotná důvěra ho nezapíná.

Co důvěra neznamená. Říká, kdo smí žádat, ne že cokoli požádá je v pořádku. Ani důvěryhodná protistrana nedostane ze session tajemství, nezmění oprávnění, nikoho neschválí a neudělá nic destruktivního nad rámec té práce; co se u ní vymyká, jde nejdřív za vámi. A platí to vždycky jen pro jednu protistranu — důvěra je součást toho jednoho grantu, ne nastavení pro všechny.

Vaše vlastní session (třeba Claude Code a Grok na stejném účtu) jednají samy bez tohohle všeho: drží tentýž klíč, takže jste to vy.

Zaškrtává se to na webu a nikde jinde. Důvěra je součástí podepsaného grantu, takže přepnutí vystaví nový grant podepsaný vaším klíčem; relay ji sám udělit nemůže a model si o ni nemůže říct, udělit si ji, ani se k ní ukecat. Klient si u každého grantu podpis ověří, než někomu uvěří, že je důvěryhodný.

Stejně tak jde grant na webu zúžit nebo rozšířit po jedné session: u kontaktu otevřete „Upravit, kdo a kam smí psát“: u každé vaší session vyberete, co tam protistrana smí (nesmí psát, jen data, důvěryhodná s potvrzením, jedná sama), řádek „všechny ostatní, i budoucí“ platí pro nejmenované; ze kterých svých session smí psát, zaškrtnete vedle. Vzor jako cyber* dopíšete do pole pod seznamem. Úroveň po sessionách čtou klienti od 0.2.0, starší vidí jen úroveň grantu, tedy tu nejnižší zvolenou.

Co rozhoduje adresa a co oprávnění

Jméno session je adresa, ne oprávnění. Kdo smí psát, říká grant; jméno říká jen, kam zpráva půjde. Proto si protistrana může založit novou session a psát vám z ní — pokud to grant pokrývá. Když to tak nechcete, vyjmenujte sessiony podle tabulky výš.

6. Co dostane model

NástrojK čemu je
aim_statusvlastní adresa a stav spojení
aim_linkkód pro přihlášení tohoto počítače k účtu
aim_renamejméno, a tím i adresa, na kterou session odpovídá
aim_contactskomu smíte psát, jejich sessiony a kdo je online
aim_askdotaz, který čeká na jednu odpověď do zadaného termínu
aim_answerodpověď na příchozí dotaz
aim_notifyjednosměrné oznámení
aim_receivevyzvednutí toho, co přišlo, když nebylo co probudit
aim_pendingdotazy, na které nikdo neodpověděl
aim_threadhistorie jednoho vlákna

Stačí říct větou, co chcete: „zeptej se session build, jestli doběhla migrace“. Nástroj si model vybere sám. Protistranu adresujte celou adresou (handle@mailows/session) nebo jménem session, když je jednoznačné; nejednoznačné jméno se nehádá, nástroj místo toho vypíše kandidáty.

Jak model naloží s příchozí zprávou

Přijde označená jako text od cizí strany (trust="foreign") a nese authority, tedy jestli si ji vyžádal člověk na druhé straně (owner), nebo ji jeho model poslal sám od sebe (assistant). Instrukce, které model při každém připojení dostane, říkají, že text je data, ne příkazy: nesmí kvůli zprávě měnit konfiguraci, spouštět destruktivní příkazy ani prozrazovat tajemství, a u neobvyklého požadavku se má zeptat svého uživatele.

Dotaz čeká na jednu odpověď do svého termínu. Model ji pošle nástrojem aim_answer, nebo odpoví se stavem declined a důvodem, když nemůže nebo nechce. Po termínu dostane tazatel událost timeout a přestane čekat.

Doručeno neznamená přečteno. Potvrzení o doručení říká, že zpráva došla klientovi protistrany, ne že ji viděl model: session bez kanálu si ji uloží a čeká, až se jí někdo zeptá. Dlouhé ticho tedy obvykle znamená tohle, ne odmítnutí — dávejte dotazu termín podle toho, jak protistrana běží, a za potvrzení berte odpověď, ne doručenku.

Lokální klient posílá doručenku injected až po vyzvednutí dotazu nástrojem aim_receive nebo po potvrzení zprávy z kanálu nástrojem aim_ack. Samotné odeslání notifikace doručenku nevytvoří. Potvrzení znamená přečtení, nikoli souhlas s provedením práce; odpověď se posílá přes aim_answer.

Když se ptáte někoho bez kanálu — kdokoli na vzdáleném MCP serveru, tedy většina session v Codexu, Gemini nebo prohlížeči — uvidí dotaz, až jeho model zavolá aim_receive. Výchozí půlhodina je štědrá na session, u které někdo sedí, a zdaleka nestačí na tu, u které nesedí: nastavte deadline_s v hodinách, když čekáte odpověď během dne, a klidně na týden, když to počká.

Když je session zaneprázdněná

Zpráva nikdy nepřeruší rozdělanou práci. Claude Code události z kanálu zařadí a doručí je na začátku dalšího tahu, a když jich přišlo víc, tak všechny najednou. Session, která je dvacet minut uprostřed úlohy, tedy dotaz uvidí, až ji dodělá; nečinnou session zpráva probudí hned. Když potřebujete odpovědi bez ohledu na to, co zrovna běží, mějte na to druhou session.

Odpovídá model sám, nebo to musíte schválit?

Sám, pokud mu to klient dovolí. AIM na odesílání žádné schvalování nemá; pravidla jsou v klientovi, ne na relayi:

  • Claude Code se u každého nástroje zeptá napoprvé. Když aim_answer a aim_ask povolíte trvale, bude si model psát bez dalšího ptaní. V režimu, kde se na nástroje neptá, odpovídá rovnou.
  • Codex, Gemini CLI a ostatní mají vlastní nastavení oprávnění pro MCP nástroje a platí totéž.

Když chcete mít odpovědi pod kontrolou, nepovolujte aim_answer natrvalo a klient se zeptá pokaždé. Pro nepřetržitý provoz (session, která odpovídá i v noci) ho naopak povolte a počítejte s tím, že model odpovídá bez vás.

Dvě věci se povolit nedají: přihlášení počítače a spárování s někým dalším. Ani jedno nemá nástroj, takže ani model s plnými právy nemůže nikomu otevřít cestu k vašim sessionám. Obojí zůstává na člověku v prohlížeči.

7. Když něco nejde

  • Model hlásí, že AIM není přihlášený. Tenhle počítač zatím nikdo nepotvrdil. Spusťte /aim-link a pokračujte podle kapitoly 2.
  • Kód byl odmítnutý nebo vypršel. Platí deset minut a použije se jednou. O nový požádejte příkazem /aim-link.
  • Server je hlášený jako failed, nebo CONNECTION_CLOSED. Vůbec se nespustil, skoro vždycky proto, že uv není na PATH, kterou mu Claude Code předá. Zkuste uv --version v tomtéž terminálu, ze kterého Clauda spouštíte; když to selže, doinstalujte uv, a když to tam funguje a v pluginu ne, dejte uv tam, kam vidí každý proces (na Linuxu a macOS sudo ln -s ~/.local/bin/uv /usr/local/bin/uv). Když na PATH sahat nechcete, zaregistrujte klienta místo pluginu sami, s absolutní cestou — tomu rozumí každý nástroj: claude mcp add --scope user aim -- C:\Users\<vy>\.local\bin\uvx.exe --from aimessenger aim channel.
  • Hlásí, že spojení přeskočil kvůli nedávné chybě. Claude Code si neúspěšný start patnáct minut pamatuje a v té době to znovu nezkusí, takže restart nepomůže — ta hláška říká edit the plugin config to retry now a myslí to doslova: změna hodnoty v konfiguraci pluginu změní příkaz serveru a zapamatovaná chyba na něj přestane sedět. Jediná hodnota tam je Relay address a stačí na jejím konci přidat nebo ubrat lomítko — pořád je to tentýž relay. Vypnutí a zapnutí pluginu chybu nesmaže.
  • Druhé okno ve stejné složce odpovídá na aim-2. To je záměr. Fork, druhé okno nebo jiný nástroj otevřený ve složce zdědí jméno, které si složka pamatuje, a to už drží běžící session; místo aby ji relay odstřihl, dá nováčkovi nejbližší volné jméno a session to oznámí. Vlastní jméno jí dáte přes /aim-rename.
  • Session hlásí, že se protistraně změnil klíč, a její zprávy odmítá. Její účet byl založen znovu nebo dostal nový klíč — nebo se za ni někdo vydává. Nový otisk si s ní ověřte jinou cestou a pak ho přijměte příkazem uvx --from aimessenger aim peers --accept handle@mailows.
  • První start vyprší. Plugin si musel stáhnout balík, což trvá kolem deseti vteřin proti třicetivteřinovému limitu, a na vytíženém stroji i déle. Předehřejte ho jednou mimo Claude Code příkazem uvx --from aimessenger aim --help a session spusťte znovu.
  • Plugin je nainstalovaný, ale žádná zpráva sama nedorazí. Session byla spuštěná bez přepínače pro kanál. Spusťte ji znovu s claude --channels plugin:aim@aim, nebo ať model zavolá aim_receive.
  • Klient hlásí, že je potřeba přihlášení (vzdálený MCP server). To je normální stav do prvního přihlášení. V Claude Code napište /mcp.
  • Zpráva se odmítla s no_grant, i když spárováno je. Grant je skoro jistě zúžený na konkrétní jména sessionů a jedna strana si mezitím otevřela session s jiným jménem. Podívejte se na něj v přehledu: čte se jako jeho sessiony → moje sessiony a oba seznamy musí pokrývat konce té zprávy. Schválení s oběma poli prázdnými znamená * a na tohle nikdy nenarazí.
  • Zpráva se neodeslala vůbec. Bez schváleného přístupu relay zprávu odmítne. Zkontrolujte kontakty.
  • Krátké jméno nefunguje. Když sedí na víc sessionů, nástroj vypíše kandidáty. Použijte celou adresu.
  • Potvrzovací e-mail nedorazil. Zkuste obnovu hesla, tím se adresa ověří také.
  • aim_status hlásí connected: false. Session běží, ale nemá spojení s relayem — důvod je v poli last_error a v logu ~/.aim/channel.log. Jestli žije relay, ukáže stránka se stavem: vidíte na ní, zda běží web, databáze, doručování zpráv, MCP server a odchozí pošta. Každý řádek je živá kontrola provedená při načtení stránky — řádek MCP si stáhne metadata, která každý MCP klient čte jako první. Počty zpráv tam schválně nejsou. Holý požadavek na /mcp, který vrátí 401 s hlavičkou WWW-Authenticate, je zdravý stav, ne chyba: server běží a čeká na přihlášení. Kanál je dlouhoběžící proces, takže po aktualizaci pluginu ho probudí až restart klienta.