Přejít na obsah
en – Switch to English

AgentBar

Všichni tvoji AI coding agenti v jedné ikoně v menu baru — nebo v Dynamic Islandu pod notchem. Vidíš, co dělají, schvaluješ oprávnění, odpovídáš na otázky a odklepáváš plány bez přepínání do terminálu. Celé to jede na obyčejných souborech.

Sólový projekt — koncept, Swift/AppKit, hook protokol, design2026Open source (MIT) · v1.56.0
SwiftAppKitmacOSNode.js hooksClaude Code hooksLinux CLIHomebrew
Režim menu baru
Režim Dynamic Islandu

AgentBar je malá nativní macOS aplikace, která ukazuje, co zrovna dělají tvoje coding sessions. Deset agentů na jednom místě: Claude Code a Claude Cowork, Codex, Cursor CLI, Gemini CLI, Qwen Code, OpenCode, GitHub Copilot, Google Antigravity a Devin. Bydlí v menu baru, jako Dynamic Island pod notchem, nebo obojí. Každý agent má svého maskota (krab Clawd pochoduje barem, dokud Claude pracuje) a nahoře je vždycky ta session, která na tebe nejvíc čeká.

Ze schvalování oprávnění na dálku se stalo odpovídání na všechno, aniž bys sáhl na terminál. Permission prompt s diffem přímo v menu. Otázky s možnostmi jako průvodce, kde jen klikáš. A když Claude doplánuje, celý plán si přečteš jako Markdown a rovnou ho schválíš, nebo pošleš přepracovat. Uvnitř je to schválně co nejhloupější: hook skripty zapíšou JSON soubor, aplikace hlídá složku a kreslí. Žádné sockety, žádní démoni, žádná síť. A ty samé soubory pohání i CLI na Linuxu a nativní Windows port.

10
agentů v jedné ikoně
0
socketů, démonů a síťových volání
3
platformy — macOS, Linux CLI, Windows port
74
releasů od vydání

problém

Když pouštíš víc agentů najednou, nejčastěji ti to nespadne. Ono se to jen zasekne. Session běží v tabu na pozadí, narazí na permission prompt a čeká. Zjistíš to za dvacet minut, když se tam přepneš a dojde ti, že se od tvého posledního pohledu nestalo vůbec nic.

Se třemi nebo čtyřmi sessions najednou je najednou tvoje hlavní práce obcházet terminály a kontrolovat, jestli něco nečeká.

Co existovalo, mi nestačilo. Buď appka pro každého agenta zvlášť, takže máš v baru čtyři ikony místo jedné. Nebo notifikace, kterých je tolik, že je za den přestaneš vnímat. Nebo prostě alt-tab každých pár minut. Chtěl jsem jedno místo, kam mrknu a hned vidím, kdo na mě čeká. A u toho nejčastějšího vyrušení, u permission promptu, chtěl jsem odpovědět rovnou tam a nevypadnout z toho, co dělám.

jak to funguje

Celé to jsou soubory. Malé hook skripty zapisují jeden JSON na session do ~/.agentbar/state.d/ a frontendy tu složku hlídají a kreslí. Claude Code a Cowork hlásí úplně všechno: prompt, nástroje, oprávnění, otázky, plány, stop. Codex, Cursor CLI, Gemini CLI, Qwen Code a OpenCode se hlásí přes svoje vlastní hooky. Antigravity má pozorovací můstek a hlídače transkriptů. Jenom Copilot pořád žádné veřejné event API nemá, takže ho z menu aspoň spustíš. Maskota má připraveného.

Protokol ví, na čem se pracuje. Každý stavový soubor nese i to, co session zrovna dělá: prompt, model a kdy začala. Řádek pak neříká jen jméno repa, ale třeba „fix the auth bug in middleware · 28m“. Schvalování jsou další dvě složky stejného protokolu. Blokující hook zapíše žádost do requests.d/, frontend odpověď do answers.d/ a hook jede dál. Co je nahoře, řídí priorita: kdo čeká na oprávnění, jde před tím, kdo pracuje, a ten před tím, kdo nedělá nic. Spadlý tah svítí červeně a nikdy se neschová pod zelenými Done řádky. A když na řádek klikneš, skočíš na přesný tab nebo pane terminálu, kde session běží — spárováno přes tty (iTerm2, Terminal.app, WezTerm).

$the-protocol
claude · cowork ──┐
codex · cursor    │   one JSON per session
gemini · qwen     ├─▶ ~/.agentbar/state.d/
opencode · antigr ┘           │
                              │ watch
                              ▼
         menu bar · island · linux cli · windows

permission / question / plan ─▶ requests.d/
✓ Allow · ✕ Deny · answer · plan ─▶ answers.d/
claude code mod (observes only) ─▶ mods.d/
(no sockets, no daemons, no network — just files)
každý stav, který Claude session hlásí, tak jak ho ukáže Clawd — vykreslené z kódu aplikace

vzdálené allow/deny

Session, která čeká na oprávnění, se ukáže žlutě jako needs approval. A pod tím vidíš přesně to, co schvaluješ: u Edit mini-diff −staré/+nové, u Bash celý příkaz, u Write náhled souboru.

✓ Allow pustí tenhle jeden případ. ✓ Always pustí i všechny další stejné — nabídne se jen tehdy, když Claude Code sám navrhne pravidlo, a vždycky ho uvidíš čitelně jako Bash(git push:*), ne jako syrový JSON. ✕ Deny zamítne. Nebo prompt vrátíš do terminálu. A když nechceš ani otvírat menu, je tu volitelná zkratka ⌥⌘A / ⌥⌘D.

Odpověď se vrací přes PermissionRequest hook, takže se v terminálu žádný prompt ani neukáže. Stejný pruh tlačítek mají i permission dialogy Antigravity. Codex a Copilot hooky na rozhodování nemají, takže jejich řádky nabízejí poctivě označený pokus: přepnout na terminál a odklepnout to za tebe. Chce to oprávnění Accessibility.

Jedna věc mi určila celý zbytek: aplikace tě nikdy nesmí držet v šachu. Prompt v terminálu žije celou dobu a vyhrává, kdo odpoví dřív — druhá odpověď se v klidu zahodí. Když AgentBar neběží, spadne uprostřed čekání, nebo si ho prostě nevšimneš, prompt vyskočí v terminálu úplně stejně, jako by AgentBar vůbec neexistoval. Prošel jsem si všechny způsoby, jak se to může rozbít, a každý z nich končí obyčejným promptem v terminálu.

celá smyčka, každý snímek vykreslený vlastními views aplikace

ostrůvek pod notchem

Od verze 1.10 může AgentBar bydlet jako Dynamic Island: malý ostrůvek pod notchem s maskotem pracujícího agenta a jeho úkolem. Najedeš na něj a rozbalí se do panelu se sessions. To, co na tebe čeká, vede jako velká karta, zbytek jsou tiché řádky pod ní. Panel se nikdy neotevře sám, nikdy ti nesebere fokus z editoru a na displejích bez notche se z něj stane plovoucí pilulka.

V ostrůvku se z odpovídání stalo víc než schvalování. Když se Claude ptá, možnosti vidíš jako karty, na které klepneš. Ze čtyř otázek najednou je průvodce po jedné otázce, s tichým „2/4“ a tlačítkem zpět. Když Claude doplánuje, celý plán se vykreslí jako Markdown — nadpisy, odrážky, kód — a dole máš Keep planning, které ho pošle přepracovat, a Approve plan. Hotová session řekne, co dodělala: jeden řádek závěrečných slov agenta pod zeleným Done. V patičce tiše svítí spotřeba kvóty, čtená z lokálních souborů CLI — žádná síť, žádná keychain, nic neopouští počítač. A k tomu volitelné zvuky: čtyři malé syntetizované retro motivy pro momenty, kdy tě session potřebuje.

Uvítací okno AgentBaru: menu bar, Dynamic Island nebo obojí, na kterém displeji ostrůvek bydlí a jakou barvu má značka
první spuštění: menu bar, ostrůvek, nebo obojí — nic se nerozhodne za tebe

klíčová rozhodnutí

AgentBar je clean-room přepis staršího notifikátoru pro jednoho agenta. Postavil jsem ho znovu kolem jedné myšlenky: čím hloupější přenos dat, tím líp. Stav jsou obyčejné JSONy ve složce. Celý protokol se dá odladit přes ls a cat, přežije pád na obou stranách a přidat agenta znamená napsat skript, co zapíše soubor. Dneska je sepsaný jako normativní, na OS nezávislý spec — docs/protocol.md — a macOS appka, linuxové CLI a Windows port jsou jen tři frontendy nad stejným kontraktem.

  • Otázka není totéž co schválení. Když se tě Claude na něco ptá (AskUserQuestion, typicky výběr z možností nebo dotaz k plánu), session dostane modrou tečku a text otázky. Ne falešné žluté „needs approval“. Jiná naléhavost si zaslouží jinou barvu.
  • Nejčastější druh chyby jsou závody mezi hooky. Proto každý fakt zapisuje přesně jeden skript a každé mazání si ověří, že soubor pořád patří jemu. Verze 1.2.1 opravila sessions visící na „needs approval“, protože starý hook přepsal čerstvý stav. Verze 1.12.0 chytila hook, který po sobě smazal soubor svého nástupce.
  • Terminál nikdy nepřijde o slovo. Průvodce v terminálu žije i ve chvíli, kdy AgentBar ukazuje tu samou žádost. Vyhrává, kdo odpoví dřív, druhá odpověď se v klidu zahodí. A odpověď na dálku může říct jen to, co žádost sama nabídla.
  • Instalace, kterou můžeš pustit kolikrát chceš. První spuštění přidá hooky do ~/.claude/settings.json a nechá tam všechno ostatní, jak to bylo. Do configů Codexu, Cursoru, Gemini, Qwenu nebo OpenCode sáhne jen u nástrojů, které fakt používáš. Instalátor napřed vypíše, co změní, a teprve pak to udělá.
  • Oprávnění, která přežijí update. macOS si pamatuje TCC granty podle podpisové identity a ad-hoc podpis je pokaždé nová identita. Buildy se proto podepisují stabilní identitou, takže Accessibility a Automation přežijí rebuild i upgrade přes cask.
  • Maskoti jsou sprity kreslené přímo v AppKitu. Krab Clawd za Claude, který ve dvanácti pixel-art scénách hraje, co session zrovna dělá: čte knížku, buší kladivem do příkazu, zvedne ruku, když čeká na tebe, a usne, když se nic neděje. Pózy jsou nakreslené jako text přímo ve zdrojáku. Každý agent ve svých barvách. K tomu černobílý režim, který splyne se zbytkem menu baru, a slovesa, co se během práce střídají.
  • Nic navíc. Žádná ikona v docku, žádná okna, žádné odpočty, žádné zvuky, dokud si je nezapneš. Jeden proces, skoro nic to nežere.
Clawd hraje, co session zrovna dělá — každý snímek vykreslený z kresby přímo v aplikaci

pravidla, která sis napsal sám

Šest releasů platilo jedno pravidlo absolutně: každé rozhodnutí vzejde z kliknutí. Verze 1.28 ho vědomě mění. Pravidlo, které si sám napíšeš v Settings ▸ Approvals, může odpovědět na žádost o oprávnění za tebe. Nikdy ale nevznikne z Always allow, které nabízí Claude Code — ten návrh totiž píše zrovna ta věc, kterou hlídáš. Karta ti napsání pravidla nabídne, až když jsi na stejný dotaz pětkrát odpověděl stejně a ani jednou jinak.

Za ty dva měsíce se bar posunul od sledování k jednání. Cloudoví agenti — Devin, Cursor cloud, úlohy v Codex cloudu — nemají lokální proces, pid ani tty, na co se zavěsit, takže jim řádky dává malý poller a kliknutí otevře běh tam, kde skutečně žije, ne terminál. V patičce ostrůvku se kreslí, kolik kvóty zbývá, ne kolik se utratilo. Notifikace nesou Allow a Deny přímo na banneru a jsou vypnuté, dokud si je nezapneš. A ⌥⌘N založí novou úlohu ve vybraném repu rovnou i se zadáním.

co za tebe odpovídá uvnitř claude code

Claude Code 2.1.287 přinesl mody: pluginy, jejichž kód běží přímo v jeho procesu, vidí každé volání nástroje a můžou ho schválit dřív, než se kohokoli zeptá. To je nový způsob, jak za tebe může něco odpovědět, a AgentBar do toho neviděl. Verze 1.38 proto přináší vlastní AgentBar mod. Je vypnutý, dokud si ho nezapneš, a jenom se dívá: každý hook vrátí Claude Code jeho vlastní výsledek beze změny a CI hlídá, co smí volat, aby si potichu nepřibral nějakou schopnost. Zapisuje jeden soubor na session do mods.d/, tedy stejný protokol jako všechno ostatní.

Výsledkem je stránka Answered without you: co Claude Code pustil nebo zamítl sám, podle tvého pravidla, podle permission módu, přes hook nebo jiný mod. Od verze 1.40 i to, co auto mode pustil místo toho, aby se tě zeptal. Ukáže i pluginy, které za tebe umí odpovědět, a řekne, co spočítat neumí: zamítnutí od auto mode se vrací jako příkaz, který selhal, takže ho nepočítá a karta to přizná. Příkaz, který drží jiný mod — třeba rm -r, který blast-radius nepustí, dokud neodpovíš — se teď ukáže jako waiting on you, ne jako práce. A ten samý mod po každém tahu předá živou Claude kvótu a řádek dostane čip ctx 82%, jakmile kontextové okno přeleze 70 %.

Settings ▸ Claude Code: Answered without you — dnes 36 puštěno, 2 zamítnuté, rozpad podle pravidel Claude Code, auto mode, permission módu a jiného modu; přepínač pro řádek o čekajících agentech nad promptem Claude Code; blast-radius jako mod, který umí zadržet nebo zamítnout Bash příkazy
Settings ▸ Claude Code — vykreslené vlastními views aplikace, čísla jsou vymyšlená

take a break

Verze 1.41 je ta nevážná a drží se stejného pravidla jako ty vážné. Joystick vedle ⋯ v ostrůvku otevře Space Bugs, malou hru ve stylu Galaxianu: Clawd jako loď, formace brouků, co se houpou a střemhlav na tebe slétají, dvojnásobek bodů za toho, co zrovna útočí, tři lodě, čím dál rychlejší vlny a nejlepší skóre uložené na tomhle Macu. Otevře se jen tím kliknutím a pozastaví se, jakmile klikneš jinam. A hlavně uhne ve chvíli, kdy tě agent potřebuje: hra se zastaví, ostrůvek ukáže žádost a Back to the break tě vrátí zpátky i se skóre, do patnácti minut.

Zvuky hraje jen se zapnutými Sounds, při Reduce Motion hvězdy stojí a když je zavřená, neběží z ní vůbec nic. Ten samý den přibyl i nudný, ale užitečný protějšek: release notes přímo v aplikaci, v Settings ▸ What's New. Co se změnilo od tvého posledního pohledu, a když čeká update, co přinese, ještě než se nainstaluje. Samo se nic neotevře.

hra uhne práci — každý snímek vykreslený vlastními views aplikace, hraje autopilot

bug hunt

Verze 1.42 přidala druhou hru a joystick teď nabízí obě, tu naposledy hranou první. Bug Hunt se hraje podle pravidel starého lovu se světelnou pistolí, jen nakreslený pixely AgentBaru: pes je náš, bígl v Clawdově oranžovém obojku. Přijde, očichá to a skočí do trávy, ze které pak vylétají brouci po jednom (Game A) nebo po dvou (Game B).

Na každý let máš tři rány. Trefený brouk ztuhne, spadne do trávy a pes vyskočí a ukáže ho. Třikrát mineš nebo moc dlouho čekáš a brouk uletí — obloha se změní a pes se ti vysměje. Kolo má deset brouků, lišta dole ukazuje, kolik jich musíš trefit, ze začátku šest, nakonec všech deset, a každé kolo je rychlejší. Míříš myší a klikáš, nebo posouváš zaměřovač šipkami a střílíš mezerníkem. Pravidla má stejná jako Space Bugs: otevře se jen na tvoje kliknutí, zastaví se, když klikneš jinam, a uhne ve chvíli, kdy tě agent potřebuje.

Bug Hunt, první kolo — každý snímek vykreslený vlastními views aplikace, hraje autopilot

stav a co dál

AgentBar je open source pod MIT, aktuálně v1.56.0. 74 releasů: od první verze s víc agenty přes schvalování na dálku, Dynamic Island, průvodce otázkami a review plánů až po cloudové agenty, měřáky kvót a vlastní schvalovací pravidla, která nejdřív jen sledují, a schvalování z telefonu až po Claude Code mod, který se jen dívá, a dvě hry, které uhnou práci. Nainstaluješ ho jedním curl příkazem, přes Homebrew cask, nebo ten příkaz hodíš do coding agenta a on si to udělá sám. Pak se aktualizuje sám, ve chvíli, kdy na tebe nic nečeká. CLI agentbar je na Linuxu plnohodnotný parťák menu bar appky (status, watch s allow/deny z klávesnice, modul pro waybar) a AgentBar for Windows je nativní system-tray verze nad stejným protokolem.

Dál je potřeba míň kódu a víc toho, aby se AgentBar dostal k lidem, pro které je. Plán je veřejně v roadmapě. Na produktu: ověřit schvalování přes klávesy na skutečných promptech Codexu a Copilotu, nativní Allow/Deny pro Antigravity, až začne fungovat jeho rozhodovací hook, schvalování na dálku pro Qwen Code, až si ověřím jeho rozhodovací kontrakt, a sessions z novějších buildů Claude Coworku, které běží ve VM a na hostu po sobě nenechávají nic ke čtení. Notarizovaný build počká, až stažení ukážou, že o něj lidi stojí. Do té doby se buildy podepisují stabilní lokální identitou, takže oprávnění přežijí update, a instalační návod vysvětlí hlášku Gatekeeperu, která se při ručním stažení objeví.

$try-it-in-60-seconds
# one line — downloads the latest release, installs the hooks
curl -fsSL https://raw.githubusercontent.com/michalstrnadel/AgentBar/main/Scripts/install.sh | bash

# or via Homebrew
brew install --cask michalstrnadel/tap/agentbar

# then open a NEW Claude Code session and watch the bar