RE:NODE

ChatGPT a Cursor na tvém serveru: sdílené odkazy a přístup

Text: Tým RE:NODE
18 min čtení


Stručně: na záložce Console u serveru RE:NODE je lišta „Work on this server with AI“. Vybereš, k čemu má asistent sloužit, stiskneš Connect AI a panel zkopíruje do schránky soukromý odkaz. Ten vložíš do ChatGPT, Claude nebo jiného asistenta, který umí otevřít URL, a asistent si přečte popis tvého serveru psaný přímo pro něj: runtime, jak se server spouští, co našla kontrola před startem a s čím jsi chtěl pomoct. Ve výchozím stavu je odkaz jen pro čtení. Když zvolíš „Manage this server“, stane se z něj odkaz s právem jednat - spustit, zastavit, restartovat, psát do konzole, upravovat soubory. Nikde se nevytváří ani nekopíruje žádný API klíč. Odkazy žijí, dokud se používají, a když ne, samy zaniknou. Každý odkaz, který jsi vydal, je vypsaný v Account -> Connected AI, kde ho jedním kliknutím odvoláš.

Cursor funguje jinak, protože žije ve tvém repozitáři, ne v okně chatu. Panel umí otevřít pull request, který zapíše pravidla serveru do AGENTS.md, CLAUDE.md a .renode/server.md, a Cursor si je přečte sám. Zbytek článku popisuje, jak každá z cest funguje, kam odkaz dosáhne a kam ne, jak dlouho žije a jak přístup vzít zpět.

Tři způsoby, jak předat server asistentovi#

Existují tři samostatné mechanismy a je dobré vědět, který z nich používáš, než cokoli někam vložíš.

CestaNejlepší proCo zkopíruješ
Share linkChatGPT, jakýkoli chatovací asistentJedna URL
MCP connectionClaude Code, Claude.aiJedna URL, schválená v prohlížeči
Repository contextCursor, Copilot, CodexNic - jen sloučíš pull request

Sdílený odkaz je univerzální. Skoro každý asistent umí otevřít webovou stránku, takže URL je nejmenší společný jmenovatel a je to cesta, kterou potvrzujeme pro ChatGPT. Připojení přes MCP je skutečné připojení nástrojů: asistent dostane pojmenované nástroje, například čtení konzole nebo zápis souboru, místo dokumentu ke čtení. Tuto cestu jsme postavili a otestovali na Claude (Claude Code a vlastní konektory v Claude.ai); jiní klienti s podporou vzdáleného MCP přes Streamable HTTP by ji měli zvládnout také, ale ChatGPT ani Cursor jsme s ní konkrétně netestovali, takže to ber jako vlastní experiment. Repository context je ta tichá varianta: žádný odkaz, jen soubory ve tvém repozitáři, které programátorští asistenti čtou podle konvence.

Můžeš použít víc cest najednou. Běžné rozdělení je odkaz pro čtení vložený do konverzace s ChatGPT, když se ptáš „proč se to nespouští“, a repository context, aby Cursor psal kód, který hned od začátku naváže správný port.

Vytvoření sdíleného odkazu na záložce Console#

Lišta je nad terminálem na záložce Console a také na záložce Startup. Má jednu rozbalovací nabídku, „What the assistant is for“, a jedno tlačítko.

  1. Otevři server a přejdi na záložku Console.
  2. V „What the assistant is for“ vyber účel. Přehled je v tabulce níže.
  3. Stiskni Connect AI. Panel odkaz vytvoří a zkopíruje.
  4. Vlož ho asistentovi spolu s otázkou.
ÚčelCo dostaneš
GeneralOdkaz pro čtení s popisem serveru
Set up a new projectOdkaz pro čtení s promptem pro zprovoznění
Fix my repositoryOdkaz pro čtení s promptem pro opravu
Server won't startPrompt s koncem konzole, ne odkaz
Connect a databaseOdkaz pro čtení s promptem k databázi
Add a domainOdkaz pro čtení s promptem k doméně
Manage this serverOdkaz s právem jednat

„Server won't start“ je záměrně výjimka. Nejužitečnější důkaz u padajícího serveru je poslední obrazovka výstupu konzole, takže místo odkazu panel zkopíruje hotový prompt, který tento výstup už obsahuje. Použij ho ze záložky Console, aby se konec konzole připojil. Je to nejrychlejší způsob, jak získat druhý pár očí na smyčku pádů; co si zkontrolovat nejdřív sám, popisuje průvodce smyčkami pádů.

Samotný odkaz se zobrazí jen jednou. Panel ukládá pouze jeho hash, stejně jako se ukládá heslo, takže si ho z panelu už nikdo nepřečte - ani my. Když ho ztratíš, vytvoř nový. Pokud prohlížeč blokuje přístup ke schránce, panel odkaz zobrazí v poli, abys ho mohl zkopírovat ručně.

Odkaz vypadá takto:

code
https://panel.renode.space/ai/rnai_<48 random characters>

Odkaz s právem jednat má navíc adresu MCP, což je stejná URL s /mcp na konci. Víc o tom níže.

Odkazy pro čtení a odkazy s právem jednat#

Rozdíl mezi oběma druhy odkazů je celý bezpečnostní model, takže stojí za to být přesný.

Odkaz pro čtení dosáhne na kontext serveru (runtime, pořadí startu, nálezy kontroly před startem, které proměnné existují), na prompty k úkolům, konec konzole a výpisy adresářů. Na obsah souborů nedosáhne. To je záměrná hranice: odkaz pro čtení přežije týden bez použití a lidé ho vkládají do historie chatů, soubor .env je místo, kde žijí tajné údaje, a raději necháme asistenta, ať tě požádá o vložení souboru, než aby ho týden starý odkaz četl sám.

Odkaz s právem jednat - účel „Manage this server“ - dosáhne na vše, na co odkaz pro čtení, a navíc na:

  • spuštění, zastavení, restart a násilné ukončení;
  • psaní příkazů do konzole;
  • čtení a úpravy souborů.

Některé věci nejsou dostupné přes žádný odkaz, ani jednoho druhu: mazání a přejmenování souborů, přeinstalace, změna spouštěcího příkazu nebo proměnných, databáze a jejich hesla, zálohy, plánované úlohy, uživatelé, údaje k SFTP a API klíče. Odkaz nevypíše tvoje další servery ani seznam odkazů. Zápisy jsou jen textové, nejvýše 1 MB na soubor, a nikdy nikam pod .git/, protože .git/hooks je kód, který se spustí při dalším fetchi.

Odkaz s právem jednat je klíč k serveru po celou dobu, kdy žije. Kdokoli, kdo drží URL, může server restartovat a upravovat jeho soubory - bez hesla, bez druhého faktoru.

To není konstrukční chyba, to je smysl: vkládáš ho do programu, který nic z toho nemá. Je to také důvod, proč odkaz s právem jednat žije bez použití den, ne týden (viz část o expiraci). Zacházej s ním jako s heslem k SFTP: vkládej ho do konverzace, kterou ovládáš, ne do sdíleného kanálu, a po dokončení práce ho odvolej.

Oprávnění se kontrolují dvakrát při každém volání. Odkaz musí danou akci povolovat a ten, kdo odkaz vytvořil, musí mít na tom serveru to oprávnění pořád, právě teď. Poduživatel, který smí používat jen konzoli, nemůže vytvořit odkaz, který restartuje server. Když poduživateli oprávnění odebereš, jeho odkazy o ně přijdou při dalším volání. To dobře zapadá do poduživatelů s nejmenšími oprávněními: dej kolegovi přístup jen ke konzoli a odkazy, které vytvoří, budou také jen ke konzoli. Stránka rolí a týmů je v průvodci.

Každá akce provedená přes odkaz se zapíše do protokolu aktivity serveru jako akce toho, kdo odkaz vytvořil, a označí se jako akce z AI odkazu. Restart, o který požádal asistent, se počítá jako restart, o který jsi požádal ty, takže se nezapočítává do limitu restartů hlídače pádů.

Limity na odkaz

LimitHodnota
Požadavky na odkaz60 za minutu
Akce na odkaz20 za minutu
Power akce na odkaz6 za minutu

Asistent uvízlý ve smyčce „restartuj a zkontroluj“ narazí na limit power akcí dávno předtím, než udělá škodu, a dostane čitelnou chybu, kterou ti může oznámit.

Sdílený odkaz s ChatGPT#

U ChatGPT je sdílený odkaz celé nastavení. Nic se neinstaluje a nevytváří se žádný klíč.

  1. Vytvoř odkaz pro potřebný účel, obvykle General nebo Fix my repository.
  2. Začni konverzaci a vlož odkaz s jednoduchou žádostí: „Přečti si tohle a řekni mi, proč server po startu skončí.“
  3. Nech ho stránku otevřít. Stránka začíná hlavičkou, že jde o server RE:NODE, že v ní není nic tajného a kde hesla doopravdy jsou, pak následují údaje o serveru a nakonec prompt k úkolu.

Co ChatGPT s odkazem zvládne, závisí na tom, jaké nástroje má v dané konverzaci. Otevření webové stránky je požadavek GET a u odkazu GET nikdy nic nemění - takže náhledy odkazů a crawlery, které URL stáhnou, server restartovat nemohou. Jednání na serveru vyžaduje požadavky POST nebo připojení přes MCP. Asistent, který umí jen prohlížet, přečte i odkaz s právem jednat a pak ti řekne, co máš udělat, místo aby to udělal sám. To je často přesně to, co chceš.

Pokud asistent říká, že odkaz neotevře, otevři ho ve vlastním prohlížeči: je to obyčejná stránka v markdownu a její text můžeš vložit do konverzace. Otevření tebou se také počítá jako použití, takže prodlouží životnost odkazu.

Odkaz s právem jednat popisuje své vlastní „dveře“ na konci dokumentu, v části „Acting on this server“: adresu MCP a koncové body HTTP, které tento konkrétní odkaz smí používat, s příklady curl. Odkaz pro čtení místo toho uvádí, že je jen pro čtení. Strana HTTP vypadá takto:

bash
$ curl -s -X POST -H 'Content-Type: application/json' \    -d '{"signal":"restart"}' \    https://panel.renode.space/ai/rnai_.../api/power

Odpovědi přicházejí jako {ok, result} nebo {ok: false, error: {status, message}}, takže skript i asistent poznají úspěch od odmítnutí bez hádání.

Úprava souboru .env bez jeho odhalení

Asistenti si s .env soubory nerozumějí z konkrétního důvodu: panel ve všem, co vydává, skrývá tajné hodnoty, takže asistent, který .env přečte, změní jeden řádek a zapíše celý soubor zpět, by nahradil každé heslo zástupným textem. Odkaz s právem jednat proto má samostatný nástroj jen pro zápis k souborům .env*. Přijímá názvy klíčů k nastavení nebo odebrání, provede změnu na straně panelu, zachová každý ostatní bajt a vrací jen názvy klíčů. Asistentovi můžeš říct „nastav DATABASE_URL na tuto hodnotu“ a nic o ostatním obsahu souboru se nevrátí. Obecná pravidla, co do toho souboru patří, jsou v článku proměnné prostředí a tajné údaje.

Cursor: kontext v repozitáři a odkazy#

Cursor je editor s agentem uvnitř. Pracuje s kódem ve tvém repozitáři a užitečné pro něj není ani tak popis běžícího serveru jako pravidla serveru: který port navázat, jak se server spouští, jakou verzi runtime používá.

Pokud se tvůj server nasazuje z GitHubu (jen aplikační řady, viz nasazení aplikace Node z GitHubu), zapni na záložce GitHub volbu „Keep AI context in the repository“. GitHub App panelu pak otevře pull request, který přidá:

  • .renode/server.md, soubor, který panel vlastní a výslovně to v něm uvádí;
  • označený blok v AGENTS.md;
  • označený blok v CLAUDE.md.

Cursor, Claude Code, Copilot i Codex tyto soubory čtou samy, takže agent otevřený v repozitáři ví, jak server běží, aniž by cokoli kdo vkládal. V AGENTS.md a CLAUDE.md se nahrazuje jen text mezi značkami a vše, co sis napsal kolem, zůstane beze změny:

AGENTS.md
Your own notes for agents stay here.<!-- renode:start -->(the panel's block - replaced on each refresh)<!-- renode:end -->

Pár vlastností, které je dobré znát:

  • Panel nikdy nepushuje do tvé větve pro nasazení. Commituje jen do vlastní větve renode/ai-context a otevře pull request; sloučíš ho ty. Pushe do této větve nikdy nespouštějí nasazení.
  • Veřejný repozitář dostane pravidla, ale žádné podrobnosti: žádnou adresu, hostitele databáze, uživatelská jména, domény ani hodnoty proměnných. Cokoli, co GitHub výslovně nehlásí jako soukromé, se považuje za veřejné.
  • Obnovuje se nejvýše jednou za deset minut a jen když se obsah skutečně změnil, takže tě nezahlcuje pull requesty. Update now na záložce GitHub vynutí obnovení.
  • Vypnutí zavře pull request a smaže větev. Nikdy se nedotkne toho, co už jsi sloučil.

Sdílený odkaz můžeš do chatu Cursoru vložit stejně jako u jakéhokoli jiného asistenta. Agent v Cursoru umí spouštět příkazy v terminálu, takže s odkazem s právem jednat může použít příklady curl z dokumentu odkazu - a Cursor se před spuštěním příkazu zeptá, pokud mu neřekneš, aby to nedělal. Nech toto potvrzování zapnuté. Důvod je stejný jako v našich poznámkách o AI agentech a serverech: agent navrhne, ty příkaz přečteš, a teprve pak se spustí.

Nastavení bez klíče: žádný API klíč ke kopírování#

Panel stále má klasické API klíče (druh ptlc_ v Account -> API Keys) a na koncovém bodu MCP pořád fungují. Klíč se ale musí vytvořit, zkopírovat, vložit a pak žije, dokud si někdo nevzpomene ho smazat. Žádná z cest pro AI ho nepotřebuje.

  • Sdílený odkaz je sám o sobě pověření, omezené na jeden server a jeden účel, a samo vyprší.
  • Repository context nepotřebuje na straně asistenta žádné pověření.
  • Připojení přes MCP se přihlašuje pomocí OAuth.

Koncový bod MCP je https://panel.renode.space/api/client/mcp. Přidej holou URL do asistenta, který podporuje vzdálené MCP - u Claude Code je to jediný příkaz:

bash
$ claude mcp add --transport http renode https://panel.renode.space/api/client/mcp

Asistent otevře v prohlížeči stránku panelu se souhlasem (anglicky nebo gruzínsky podle jazyka tvého účtu). Jednou ji schválíš a vybereš dvě věci: které servery (všechny tvoje, nebo výběr) a úroveň. Files povoluje čtení a úpravy souborů a konzoli. Manage přidává spuštění, zastavení a restart. Žádná z úrovní nedosáhne na databáze, zálohy, plánované úlohy, uživatele, nastavení spouštění ani nastavení účtu. „All my servers“ znamená servery, které vlastníš nebo na nichž jsi poduživatelem s platným přístupem.

Poté si asistent svůj přístup udržuje sám. Přístupové tokeny platí hodinu a obnovují se na pozadí; obnovovací token platí 30 dní a posouvá se s používáním, takže asistent, který používáš jednou za měsíc, se znovu neptá. Pokud se někdy znovu použije už spotřebovaný token - znamení ukradené kopie - celé oprávnění se odvolá.

Odkaz s právem jednat má vlastní adresu MCP, tedy URL odkazu s /mcp na konci, kterou lze vložit do Claude.ai jako vlastní konektor tak, jak je:

bash
$ claude mcp add --transport http renode-link https://panel.renode.space/ai/rnai_.../mcp

Rozdíl: připojení přes OAuth je vázané na tvůj účet a servery, které jsi vybral, a trvá, dokud se používá; adresa MCP odkazu je vázaná na jeden server a zaniká spolu s odkazem.

Klouzavá expirace a rotace#

Dobu platnosti sdíleného odkazu nikdo nevolí a na serveru není seznam, který by bylo třeba uklízet. Odkaz se udržuje naživu používáním a když se nepoužívá, zaniká.

OdkazZaniká po nečinnostiPevný strop
Read7 dní90 dní od vytvoření
Can act24 hodin30 dní od vytvoření

Každé úspěšné použití - otevření stránky, volání HTTP, volání MCP - posune expiraci znovu na plné okno nečinnosti. Strop se nikdy nehýbe, takže i odkaz v neustálém provozu nakonec skončí a vytvoříš nový. Odkaz s právem jednat je krátký záměrně: pověření, které přežije konverzaci, pro kterou vzniklo, je to, které někdo najde v logu chatu o měsíc později, a to, které se pořád používá, je z definice stále v té konverzaci.

Rotace nahrazuje mazání. Vytvoření nového odkazu pro stejný server a stejný účel odvolá tvůj předchozí odkaz v tomtéž kroku, takže opětovným stisknutím Connect AI nahradíš odkaz, který jsi vložil někam, čeho lituješ. Jako pojistka za tím stojí stropy: nejvýše pět aktivních odkazů na server, z toho nejvýše dva s právem jednat. Vytvoření šestého, nebo třetího s právem jednat, vyřadí nejstarší.

Odkaz také přestane fungovat ve chvíli, kdy ten, kdo ho vytvořil, ztratí přístup k serveru. Odeber poduživatele nebo nech vypršet jeho časově omezený přístup a každý odkaz, který vytvořil, zanikne spolu s ním - nikdo si nemusí pamatovat, že ty odkazy existují. Pozastavený server neodpovídá přes žádný odkaz.

Každé odmítnutí vypadá stejně: obyčejné 404. Vypršel, přesáhl strop, odvolán, nahrazen, server pozastaven, tvůrce odebrán - asistent nepozná který z důvodů a nepozná to ani nikdo, kdo drží uniklou kopii. Hlavička stránky asistenta upozorňuje, že odkaz při nečinnosti zaniká, takže slušný asistent ti řekne, že odkaz vypršel, a nebude vymýšlet důvod.

Stránka Connected AI a odvolání přístupu#

Account -> Connected AI (/account/ai) je jediné místo, které ukazuje vše, co jsi vydal. Má dva seznamy.

Connected assistants vypisuje každého asistenta, kterého jsi schválil přes OAuth: jeho název (a u některých klientů hostitele, který ho publikoval), kdy jsi ho schválil, kdy byl naposledy použit, které servery pokrývá a na jaké úrovni. Každý má tlačítko Disconnect. Odpojený asistent o přístup přijde okamžitě; abys ho mohl používat znovu, připojíš ho znovu a schválíš v prohlížeči.

Share links you made vypisuje každý aktivní odkaz, který jsi vytvořil, na kterémkoli serveru: server, zda je „Read only“ nebo „Can act“, kdy vyprší, kolikrát byl otevřen a kolik akcí provedl a kdy byl naposledy použit. Každý má tlačítko Revoke. Odvolaný odkaz přestane fungovat okamžitě ve všech „dveřích“ - na stránce, na své adrese MCP i v rozhraní HTTP API.

Odvolání nevyžaduje na samotném serveru žádné oprávnění. Pokud byl tvůj přístup k serveru omezen, ale tvůj odkaz je stále vypsaný, můžeš ho pořád odvolat: vzít zpět, co jsi vydal, může přístup jedině snížit.

Kdy to použít:

  1. Vložil jsi odkaz s právem jednat do konverzace, která se může sdílet nebo exportovat. Odvolej ho.
  2. Počet „opened“ je vyšší, než čekáš. Odvolej ho a vytvoř nový - čerstvý odkaz stejně nahradí starý.
  3. Přestal jsi asistenta používat. Odpoj ho, místo abys čekal 30 dní, než vyprší.
  4. Někdo odešel z týmu. Odebrání poduživatele už jeho odkazy zabije, ale zkontroluj seznam i na svém vlastním účtu.

Varování pod lištou to říká zkráceně: odkaz s právem jednat přestane fungovat, pokud se den nepoužívá, a můžeš ho odpojit dřív v Account -> Connected AI.

Co asistent nikdy neuvidí#

Každý bajt, který odchází přes odkaz, prompt nebo koncový bod MCP, projde redaktorem o třech vrstvách. Podle názvu: každá proměnná nazvaná třeba TOKEN, PASSWORD, KEY, SECRET, AUTH nebo SALT má zadrženou hodnotu. Podle tvaru: klíče GitHub, Slack, OpenAI a AWS, JWT, hesla uvnitř URL a dlouhé náhodně vypadající řetězce se zadrží, ať se jmenují jakkoli. Podle hodnoty: skutečná tajemství serveru a hesla k databázím se shromáždí a z hotového výstupu se vymažou, což zachytí heslo vložené do proměnné nazvané NOTES. Hesla k databázím se do výstupu nedostanou vůbec.

Poctivě řečeno: hesla a tokeny jsou zadržovány, ne že by asistent nikdy nemohl vidět tajný údaj. Redakce je síť, ne příslib. Pokud tajný údaj vypíšeš do konzole v nějakém formátu, který nikdo nečekal, nebo ho uložíš v souboru, který odkaz s právem jednat otevře, počítej s tím, že se k asistentovi může dostat. Tajné údaje drž v proměnných prostředí a v .env a nikdy je nevypisuj do logů. Průvodce konzolí a čtení konzole stojí za pročtení, pokud tvá aplikace při startu vypisuje svou konfiguraci.

Řešení potíží#

Odkaz vrací 404. Vypršel, narazil na strop, byl odvolán, byl nahrazen novějším odkazem pro stejný účel, server je pozastavený, nebo jsi ztratil přístup. Vytvoř nový z lišty; starý nelze oživit a 404 záměrně neříká, který z důvodů nastal.

Asistent říká, že odkaz otevřel, ale popisuje špatný server nebo si vymýšlí podrobnosti. Možná stránku vůbec nestáhl a odpovídal z domněnek. Požádej ho, ať ocituje první řádek stránky. Pokud nemůže, otevři odkaz sám a vlož text.

Asistent čte soubory na jednom serveru, ale na jiném ne. Odkaz pro čtení nikdy nevrací obsah souborů a u každého odkazu se kontrola oprávnění provádí vůči tomu, kdo ho vytvořil. Pokud odkaz vytvořil poduživatel, který nemá přístup k souborům, nemá ho ani odkaz.

Akce je odmítnuta chybou limitu. Odkaz narazil na 60 požadavků, 20 akcí nebo 6 power akcí za minutu. Počkej minutu a zamysli se proč: asistent, který restartuje server šestkrát za minutu, nic neopravuje.

Zápis souboru je odmítnut. Zkontroluj, že jde o text, má méně než 1 MB a není pod .git/. Mazání a přejmenování nejsou přes žádný odkaz dostupné vůbec; dělej je ve správci souborů.

Cursor jako by pravidla serveru neznal. Pull request s kontextem musí být sloučen do větve, kterou má Cursor otevřenou. Zkontroluj na GitHubu pull request z renode/ai-context a stiskni Update now na záložce GitHub, pokud ses v posledních deseti minutách něco změnil.

FAQ#

Může ChatGPT restartovat můj server přes sdílený odkaz?

Jen když v dané konverzaci umí posílat požadavky POST nebo se připojit přes MCP. Otevření odkazu je čtení a nic nemění. Asistent, který umí jen prohlížet, přečte odkaz s právem jednat a řekne ti, co máš spustit, místo aby to spustil.

Musím pro to vytvářet API klíč?

Ne. Sdílené odkazy, připojení přes OAuth i repository context fungují bez něj. Klasické API klíče ptlc_ na koncovém bodu MCP pořád fungují, pokud je preferuješ, ale pak je tvým úkolem klíč po dokončení smazat.

Jak dlouho sdílený odkaz platí?

Odkaz pro čtení platí 7 dní po posledním použití, nejvýše 90 dní od vytvoření. Odkaz s právem jednat platí 24 hodin po posledním použití, nejvýše 30 dní. Použití vynuluje časovač nečinnosti; strop nevynuluje nic.

Může odkaz smazat moje soubory nebo databázi?

Ne. Žádný odkaz nemůže mazat ani přejmenovávat soubory, přeinstalovat server, sahat na databáze a jejich hesla, měnit zálohy, plánované úlohy, uživatele ani nastavení spouštění, ani číst údaje k SFTP nebo API klíče.

Co se stane s mými odkazy, když odeberu kolegu?

Každý odkaz, který vytvořil, přestane při dalším použití fungovat, protože každé volání kontroluje, zda tvůrce má k serveru pořád přístup. Jeho připojení přes OAuth o tento server ze stejného důvodu přijdou.

Provozuje RE:NODE AI model?

Ne. Žádný model neprovozujeme. Panel jen sestavuje stránku, nástroje a pravidla přístupu, které používá tvůj vlastní asistent.

Pomohlo vám to?