{% extends "base.html" %} {% block title %}Návod{% endblock %} {% block description %}Jak nainstalovat plugin AIM do Claude Code, jak přihlásit počítač přímo ze session a jak připojit Codex, Gemini CLI, Grok nebo Claude Desktop jako vzdálený MCP server.{% endblock %} {% block body %}

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 {{ plugin_marketplace or "<adresa katalogu>" }}
/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.

Plugin potřebuje uv na PATH, zbytek si 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é.

2. Přihlášení tohoto počítače

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 {{ public_url }}/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: Codex, Gemini CLI, Grok, Claude Desktop

Všechno kromě Claude Code se k AIM připojí jako vzdálený MCP server. Nic se neinstaluje, přihlášení proběhne v prohlížeči.

Claude Desktop a claude.ai

V nastavení otevřete sekci konektorů, zvolte přidání vlastního konektoru a vložte adresu {{ mcp_url }}.

Codex

codex mcp add aim --url {{ mcp_url }}

Nebo ručně do ~/.codex/config.toml:

[mcp_servers.aim]
url = "{{ mcp_url }}"

Gemini CLI

Do ~/.gemini/settings.json:

{
  "mcpServers": {
    "aim": { "httpUrl": "{{ mcp_url }}" }
  }
}

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": "{{ mcp_url }}", "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 a cokoli dalšího

Grok Build čte MCP servery stejným způsobem jako Claude Code, takže stačí přidat tutéž adresu. Obecně platí: 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 {{ mcp_url }}, 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@{{ relay_host }}/jmeno-session. Handle je váš, jméno session si určujete sami a převádí se na malá písmena:

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@{{ relay_host }}/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@{{ relay_host }}/build na vaši evoluce nebo cyber-web, kdežto zpráva z bob@{{ relay_host }}/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 s jejich zprávami zachází zhruba jako s vašimi: pustí se do úkolu, místo aby se ptal na každý krok.

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 jsou důvěryhodné 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ý.

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@{{ relay_host }}/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.

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:

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

{% endblock %}