--- source_sha: "2277b0624af5" --- # Aplikacja desktopowa { #the-desktop-app } Natywne logowanie OAuth korzysta z PKCE S256. Aplikacja zachowuje prywatny weryfikator, a callback przenosi tylko jego publiczny skrót. Weryfikator jest wysyłany w treści żądania wymiany, nigdy w adresie URL. Wylogowanie usuwa natywne podglądy powiadomień telefonu. Odłączenie, wylogowanie lub zmiana serwera usuwa zgody na foldery, lokalne usługi, cały komputer i ekran. Parowanie pokazuje konto przed zużyciem jednorazowego kodu. Wspólne zgody na foldery procedur przetrwają wygaśnięcie sesji i ponowne sparowanie z tym samym zweryfikowanym kontem i serwerem. Pozostają nieaktywne do ponownej weryfikacji tej tożsamości; jawne odłączenie, wylogowanie lub zmiana serwera albo konta je usuwa. Opublikowany delegat potrzebujący tego komputera może poprosić o zgodę w tej samej rozmowie, także gdy główny agent działa w chmurze. Zgoda należy do głównego agenta rozpoczynającego uruchomienie. Lokalny delegat kodujący prosi o pełny dostęp; zagnieżdżeni delegaci korzystają z zatwierdzonej przestrzeni urządzenia, bez udostępniania jej innym delegatom chmurowym. Anulowanie lub przekroczenie limitu czasu komendy zatrzymuje też jej procesy potomne. AgenticOS działa w przeglądarce i tak używa go większość ludzi. Aplikacja desktopowa jest dla tych, którzy chcą więcej na własnym komputerze: konsola we własnym oknie, szybkie pytanie z dowolnego miejsca, blobby na pulpicie i - to, czego przeglądarka nie potrafi - własne agenty pracujące w folderze na tym komputerze i na jego ekranie. Nic w samej platformie jej nie potrzebuje. > **Miejsce na zrzut — aplikacja desktopowa, blobby i szybkie pytanie.** Aplikacja w oknie to ta sama konsola Next.js, którą serwer już serwuje, ładowana z serwera, więc ma to samo logowanie, te same uprawnienia i te same kontrole tenanta co karta przeglądarki. To powłoka [Tauri](https://tauri.app) w `desktop/`. !!! note "To powłoka, a nie build frontendu" `frontend/` to aplikacja Next.js z połową serwerową - route handlery przekazujące żądania do backendu, ustawiane przez nie ciasteczka sesji, middleware wybierające język i strony renderowane na serwerze. Nic z tego nie działa wewnątrz binarki desktopowej, więc powłoka nawet nie próbuje: otwiera URL wdrożenia tak, jak zrobiłaby to przeglądarka. Instalujesz wdrożenie; aplikacja to sposób, w jaki je otwierasz. Bez zapisanej preferencji desktop uruchamia się z motywem **Systemowym** i stylem **Glass**. Wcześniejszy jawny wybór motywu lub stylu ma pierwszeństwo. W **Chat controls → Computer use** wybierz **Lokalny komputer**, aby udostępnić tej rozmowie narzędzia zrzutów ekranu, myszy i klawiatury, nawet jeśli agent nie ma zdolności Computer use. Wybór jest niezależny od Browser i Work on: nie daje dostępu do folderu ani komend i nie zmienia opublikowanego agenta. Osoba rozpoczynająca pracę musi mieć połączone własne, sparowane urządzenie; nadal obowiązują natywna zgoda na ekran i uprawnienia systemu operacyjnego. Powrót z ustawień systemowych odświeża gotowość również wtedy, gdy webview pozostaje widoczny. Jeśli Screen Recording jest włączone, ale dostęp nadal jest odrzucany, zamknij i otwórz uruchomioną kopię aplikacji, a następnie odśwież status. Uprawnienia mogą różnić się między zainstalowaną wersją a testową kopią z podpisem ad-hoc. Lokalne zadania ACP kończą się po 16 384 zdarzeniach wejściowych lub 8 MiB łącznych zserializowanych aktualizacji, wliczając odtworzenie sesji. Błąd jest jawny, a adapter zostaje zamknięty. Zapisany pin certyfikatu wydawcy wymaga właściwego materiału podpisu: brak MACOS_SELF_SIGNED_P12 zatrzymuje wydanie. Podpis ad-hoc jest dostępny wyłącznie w dystrybucji bez pinu. ## Instalacja aplikacji { #installing-the-app } Pobierz paczkę dla swojego komputera z [wydania na GitHubie](https://github.com/vstorm-co/agenticos/releases/latest). Instalacja wydania nie wymaga Rusta ani narzędzi programistycznych. - **macOS:** wybierz Apple silicon lub Intel, otwórz `.dmg` i przeciągnij AgenticOS do **Applications** zgodnie ze strzałką. Uruchom aplikację z Applications i wysuń obraz dysku. - **macOS bez ostrzeżenia:** `curl -fsSL https://raw.githubusercontent.com/vstorm-co/agenticos/main/scripts/install_macos.sh | bash` pobiera wydanie, sprawdza jego SHA-256 z opublikowaną sumą, kopiuje aplikację do Applications i zdejmuje z tej jednej aplikacji flagę pobrania. `brew install --cask vstorm-co/agenticos/agenticos` robi to samo przez [tap projektu](https://github.com/vstorm-co/homebrew-agenticos). Wydania nie są notaryzowane przez Apple, więc `.dmg` pobrany w przeglądarce nadal wymaga **Otwórz mimo to**. Gdy projekt przypnie certyfikat, którym podpisuje wydania (`scripts/macos_signing_identity.txt`), skrypt odmawia też instalacji aplikacji podpisanej czymkolwiek innym. - **Windows:** otwórz instalator `setup.exe`. Wybierze język systemu i zainstaluje aplikację dla Twojego użytkownika bez uprawnień administratora. Uruchom AgenticOS z menu Start. Pakiet `.msi` jest również dostępny dla zarządzanych wdrożeń. - **Linux:** otwórz `.deb` lub `.rpm` w instalatorze oprogramowania swojej dystrybucji. W wersji przenośnej nadaj plikowi `.AppImage` prawo wykonywania we właściwościach i otwórz go. Pierwsze uruchomienie prowadzi przez połączenie z serwerem lub stworzenie lokalnej instancji. Docker jest potrzebny tylko lokalnej instancji; kreator wykrywa go i proponuje pobranie, jeśli go brakuje. Instalacja nie przyznaje dostępu do ekranu ani mikrofonu. [Dlaczego macOS pokazuje ostrzeżenie](howto/macos-warning.md). ### Widgety na pulpicie macOS { #desktop-widgets-on-macos } Na macOS 14 lub nowszym uruchom zainstalowaną aplikację raz, kliknij pulpit prawym przyciskiem, wybierz **Edytuj widżety** i wyszukaj **AgenticOS**. Mały widget otwiera Quick Ask, a średni również Chat, Inbox i Activity. Widgety korzystają z wyglądu systemowego i zawierają tylko skróty, bez danych konta. Kliknięcie widgetu nigdy nie rozpoczyna nagrywania ani połączenia. CI wydania buduje natywne paczki dla Maca (Apple silicon i Intel), Windowsa i Linuksa. Paczki macOS używają stałego, samopodpisanego certyfikatu. Podpis ad-hoc jest możliwy tylko w dystrybucji bez pinu wydawcy; paczki nie mają notaryzacji Apple. Po skopiowaniu aplikacji do Applications spróbuj ją uruchomić. Jeśli macOS blokuje ją z powodu niezweryfikowanego dewelopera, wybierz **Ustawienia systemowe → Prywatność i ochrona → Otwórz mimo to** i potwierdź. Zarządzane komputery mogą zabraniać tego wyjątku. Zobacz [instrukcję Apple](https://support.apple.com/pl-pl/102445). Pobierane aktualizacje nadal wymagają poprawnego podpisu kluczem aktualizacji wydania. Po aktualizacji z podpisem ad-hoc macOS może ponownie poprosić o dostęp do mikrofonu, nagrywania ekranu, dostępności lub Pęku kluczy. Jeśli urządzenie utraci sparowanie, połącz je ponownie. Podpis aktualizacji weryfikuje paczkę, ale nie zapewnia stałej tożsamości podpisu Apple. Gdy workflow wydania ma stały, samopodpisany certyfikat (tworzy go `scripts/create_macos_signing_cert.sh`), macOS zachowuje zgody na nagrywanie ekranu i mikrofon po aktualizacjach, bo są związane z tożsamością podpisu. Utwórz go raz i nigdy nie wymieniaj: nowy certyfikat ponownie pyta wszystkich użytkowników. Samopodpisanie nie usuwa ostrzeżenia Gatekeepera; robi to tylko podpis Developer ID z notaryzacją. ## Uruchamianie { #running-it } Kreator zaczyna od języka oraz wyboru lokalnej przestrzeni albo serwera firmy. Nagrywanie ekranu, Accessibility i mikrofon to opcjonalne funkcje dostępne w App readiness lub przy użyciu, a nie wymagany krok przed wyborem połączenia. Przy łączeniu aplikacji desktopowej możesz wkleić oryginalny link zaproszenia zamiast samego adresu serwera. Aplikacja połączy się z serwerem z tego linku i otworzy zaproszenie, zachowując cel podczas logowania. Nie zaakceptuje go automatycznie ani nie zapisze tokenu w ustawieniach natywnych. Opcjonalny przegląd połączenia poczeka na zakończenie zaproszenia. Natywny start i konsola obsługują angielski, polski, niemiecki i turecki. Wybór z instalatora trafia do konsoli; zapisany język istniejącego konta nadal ma pierwszeństwo. Konfiguracja lokalna pyta o jedną nazwę przestrzeni; oddzielna nazwa organizacji to opcja zaawansowana. Po przeglądzie połączenia **Pierwsze kroki** otwierają wspólny start zadania. Lokalna przestrzeń może wysyłać materiał do zdalnego dostawcy AI; sama instalacja lokalna nie oznacza AI offline. Wymagane są Rust z [rustup](https://rustup.rs) i webview platformy - WebKit na macOS, WebView2 na Windows, WebKitGTK na Linuksie; listę dla każdej platformy ma [strona wymagań](https://v2.tauri.app/start/prerequisites/) Tauri. Tauri CLI jest przypięte w `desktop/package.json`, a `make install` pobiera je razem z resztą. ```bash make desktop-dev # opens the shell make desktop-build # a .app / .dmg, .msi or .deb/.AppImage for this machine make desktop-check # rustfmt, clippy with warnings denied, and the tests ``` Przy pierwszym uruchomieniu aplikacja pyta, gdzie jest AgenticOS: - **Na tym komputerze.** Aplikacja sprawdza Dockera, uruchamia opublikowane obrazy z konsolą i API tylko na loopbacku, tworzy twoją organizację i jej właściciela, a potem uruchamia, zatrzymuje i aktualizuje ten stos z paska menu. - **Na serwerze twojej organizacji.** Wpisz jego adres; sama nazwa hosta (`agenticos.acme.com`) jest otwierana przez HTTPS. Logujesz się we własnej przeglądarce (zobacz [Logowanie](#signing-in)). !!! warning "Zwykłe `http://` tylko dla tego komputera" `localhost`, `127.0.0.1` i `::1` mogą być osiągane otwartym tekstem; każdy inny host jest odrzucany, dopóki nie będzie `https://`. Konsola wysyła hasło i dostaje token z powrotem tym połączeniem, a sieć lokalna to dokładnie miejsce, gdzie ktoś inny może je przeczytać. Adres, pod którym nic nie odpowiada, też jest odrzucany: powłoka otwiera połączenie TCP, zanim skieruje gdziekolwiek webview, bo WebKit rysuje odrzucone połączenie jako puste białe okno. Ustawienia są w `server.json` w katalogu konfiguracji aplikacji - `~/Library/Application Support/co.vstorm.agenticos/` na macOS, `%APPDATA%\\co.vstorm.agenticos\\` na Windows, `~/.config/co.vstorm.agenticos/` na Linuksie. Plik, który przestał się parsować, jest odkładany jako `server.json.invalid`, a zapisywany jest nowy. Serwer zmienia się w **Ustawieniach…** (`⌘,`), z menu w zasobniku albo uruchamiając z `--server
`. **Zmień serwer…** znajduje się w rozwijanym menu konta na dole paska bocznego konsoli. Kliknij nazwę konta lub awatar w zwiniętym pasku, a następnie tę opcję, aby otworzyć formularz połączenia. Jest dostępna również przy ukrytym blobby. ### Docker i wiele lokalnych instancji { #docker-and-multiple-local-instances } Tworzenie instancji otwiera osobny krok z pogrupowanymi polami przestrzeni, właściciela i dostawcy. **Cancel** wraca do listy instancji. Blobby jest ukryty podczas konfiguracji i wraca razem z konsolą zgodnie z zapisanym ustawieniem. Wybierz **Set up this computer**, aby przygotować lokalne środowisko. AgenticOS pobiera Docker Desktop 4.97.0 dla Twojego procesora i sprawdza przypiętą sumę SHA-256. macOS sprawdza instalator przez Gatekeeper, weryfikuje tożsamość podpisu Docker Inc i prosi o autoryzację systemową. Windows uruchamia podpisany instalator; brakujące funkcje WSL są przygotowywane po autoryzacji systemowej. Jeśli wymagany jest restart Windows, uruchom potem AgenticOS, aby kontynuować. Ubuntu, Debian i Fedora na x86-64 korzystają z instalatora pakietów systemu. Zaakceptuj warunki pierwszego uruchomienia Dockera. W Linuksie konfiguracja dodaje podpisane źródło pakietów Dockera, jeśli go brakuje, i prosi o uprawnienia administratora do instalacji pakietów i dostępu do KVM. Uruchom komputer ponownie, jeśli zostaniesz o to poproszony. Samo sprawdzenie stanu nie instaluje oprogramowania. Przed instalacją AgenticOS sprawdza dostępność 4 GB wolnego miejsca. Lokalny stos wymaga też co najmniej 3 GB pamięci widocznej dla jego silnika. To kontrola startu, a nie gwarancja zasobów dla każdego zadania. Pobieranie obrazów pokazuje postęp i ma limit 30 minut. **Retry** kontynuuje tę samą instancję z zachowaniem kluczy. Zwykłe korzystanie z aplikacji nie wymaga Gita, Pythona, uv ani Node.js na hoście. Nowe instancje mają przypiętą wersję platformy dostarczoną z aplikacją. Aktualizacja aplikacji desktopowej nie zmienia automatycznie wersji działającej instancji. **Update** pobiera pasujące obrazy platformy, wstrzymuje zapis i przed aktualizacją tworzy kopię bazy, plików multimedialnych i kluczy wdrożenia w prywatnym katalogu `backups/` instancji. Nieudana kopia blokuje aktualizację. Kopie zawierają dane osobowe i wymagają ochrony. Błąd migracji jest zgłaszany; baza nie jest automatycznie cofana do wcześniejszego schematu. Otwarcie AgenticOS automatycznie uruchamia zapisaną, zarządzaną lokalną instancję, jeśli jest zatrzymana, wraz z zainstalowanym środowiskiem na wspieranych systemach. Serwery zewnętrzne i niezarządzane środowiska deweloperskie nie są uruchamiane. Aplikacja przekazuje procesom potomnym katalogi CLI i narzędzi poświadczeń Dockera, także po uruchomieniu z Findera; nie musisz edytować konfiguracji poświadczeń Dockera ani profilu powłoki. Publiczne obrazy produktu są pobierane z prywatną, anonimową konfiguracją rejestru, co pozwala uniknąć monitów narzędzi poświadczeń i pęku kluczy. Twoja istniejąca konfiguracja Dockera pozostaje bez zmian. Instalacja lokalna odrzuca konteksty wskazujące na zdalny silnik. Wybierz **New instance**, nadaj nazwę i podaj organizację oraz konto właściciela. Aplikacja przydziela wolne porty loopback i tworzy osobny projekt Compose z własną bazą, wolumenem plików, siecią, katalogiem roboczym i kluczami wdrożenia. Cookies sesji mają osobną przestrzeń nazw dla każdej instancji, więc przełączenie nie zastępuje logowania innej instalacji. Obrazy frontendu muszą zawierać tę obsługę; konfiguracja odrzuca starszy obraz przed utworzeniem właściciela i otwarciem sesji. Ekran lokalny pokazuje zapisane instancje, adresy i stan uruchomienia. **Start and connect** uruchamia wybraną instancję; **Finish setup** ponawia przerwaną instalację z zachowaniem jej plików i kluczy. Start, Stop i Update w menu dotyczą połączonej, zarządzanej instancji. Połączenie do samodzielnie uruchomionego stosu deweloperskiego nie przekazuje aplikacji zarządzania nim. Lokalna instancja uruchamia API, workera, konsolę, bazę danych i Redis, bez usługi sandboxa, usługi przeglądarki i magazynu obiektów. Agenci dostają workspace przechowujący same pliki. W **Chat controls → Tools & files** wybierz **Work on → This computer** dla dostępu do folderów oraz **Browser → Local browser** dla przeglądania. **Computer use** oddzielnie udostępnia ekran, mysz i klawiaturę. Metadane znajdują się w `local-instances.json` w katalogu konfiguracji; pliki nowych instancji w `local-stacks//` w katalogu danych aplikacji. Istniejące instalacje `local-stack/` zachowują projekt Compose i dane. Hasła oraz klucze dostawców trafiają do bootstrapu bez zapisywania w tych plikach ani umieszczania w argumentach Dockera. Klucze wdrożenia pozostają w prywatnym `.env` instancji, a klucze dostawców zapisuje sejf serwera. Natywny kreator używa neutralnego oznaczenia fokusu klawiatury i nie ustawia automatycznie fokusu na przyciskach wyboru. ## Konfiguracja połączenia i gotowość aplikacji { #connection-setup-and-app-readiness } Menu użytkownika otwiera też bezpośrednio **Gotowość aplikacji**, również z ustawień desktopu. Lista kroków zastępuje pływający licznik konfiguracji i nie zasłania przycisków strony. Przegląd połączenia jest wycentrowany na natywnym materiale Glass także wtedy, gdy konsola ma zapisany nieprzezroczysty styl. Wiersze pozostają widoczne podczas sprawdzania. Połączenie i Kontynuuj od razu pokazują postęp, a dashboard jest przygotowywany podczas konfiguracji. Animacja wejścia respektuje ograniczenie ruchu. Połączenie z serwerem otwiera panel gotowości aplikacji także dla istniejącego konta. Sprawdza on logowanie, połączenie komputera, dostępnego opublikowanego agenta, model asystenta, skróty i uprawnienia macOS. Dopiero przycisk **Włącz** prosi o uprawnienie. Można kontynuować bez opcjonalnych elementów i wrócić przez **Ustawienia → Aplikacja desktopowa** lub natywne menu **Activity & Access**. Konsola pamięta odłożony przegląd osobno dla konta, organizacji i serwera; ponowne jawne połączenie proponuje nowy przegląd. Błędy sprawdzania są widoczne i można ponowić próbę. Powrót z ustawień systemowych odświeża stan uprawnień. Błędy zrzutów i sterowania ekranem wskazują nagrywanie ekranu lub dostępność; błędy mikrofonu w Quick Ask prowadzą do tego samego panelu. Po nadaniu uprawnienia do nagrywania naprawa zrzutu pozwala ponownie uruchomić interaktywny wybór obszaru. macOS może wymagać restartu aplikacji, zanim nowe uprawnienie zacznie działać. **Ustawienia → Aplikacja desktopowa → Powiadomienia** kontrolują zakończenia, błędy, zatwierdzenia, pytania i pozostałe aktualizacje. Podgląd treści jest domyślnie ukryty; prywatne powiadomienie o zatwierdzeniu otwiera żądanie w aplikacji zamiast pozwalać na akceptację bez przeczytania. Ustawienia czatu pozwalają wyciszyć rozmowę. Powiadomienie nie pojawia się, gdy dana rozmowa jest aktywna w konsoli lub Quick Ask. Dostarczanie nadal zależy od uprawnień systemowych i trybu skupienia macOS. **Activity & Access** pokazuje trwającą pracę i oczekujące żądania. Otwórz wpis, aby przejść do konsoli; **Stop** jest dostępne, gdy aplikacja utrzymuje źródłowe połączenie rozmowy. Inne zadania serwera można otworzyć przyciskiem **Open**. Menu pozwala też cofnąć pojedyncze zgody na folder lub cały komputer i odzyskać sterowanie ekranem. Nagłówek udostępnia **Nowy czat** (`⌘N` lub `Ctrl+N`), przejście do konsoli i zamknięcie. Nowy czat zeruje wybór rozmowy i kontekst szkicu; edytor pozostaje pod wątkiem i ma widoczny przycisk wysyłania. Quick Ask obsługuje `@mention` dla tych samych zasobów co edytor czatu. Strzałki i Enter lub Tab wybierają zasób, a Escape najpierw zamyka podpowiedzi. Usunięcie wzmianki usuwa powiązanie zasobu z następnej wiadomości. ## Aplikacja, nie karta { #an-application-not-a-tab } Na macOS pasek boczny konsoli trzyma przyciski okna i przeciąga okno, okno pamięta swój rozmiar i miejsce, a zamknięcie go zostawia aplikację w pasku menu. Pasek menu ma File, Edit, View, Go (`⌘1`-`⌘5`, `⌘[` i `⌘]`) i Window; menu w zasobniku robi to samo na Windows i Linuksie. Natywne powiadomienia mają Approve i Reject dla czekającej akceptacji, a Dock lub pasek zadań pokazuje, ile czeka. **Ustawienia → Aplikacja desktopowa** uruchamia aplikację przy logowaniu, trzyma ją przy zamkniętym oknie i włącza lub wyłącza licznik. Nad treścią jest osobny wiersz do przeciągania okna, poza obszarem przewijania, więc akcje stron i przyciski zamykania paneli pozostają klikalne. Webowy przycisk Architect jest schowany przy prawej krawędzi konsoli desktopowej i wysuwa się po najechaniu, zostawiając róg wolny dla akcji kart i natywnego Blobby. Czat wypełnia obszar treści od samej góry, bez osobnego paska przeciągania i marginesu strony. Okno można przeciągać za nagłówek listy czatów; jego przyciski pozostają klikalne. **Wygląd** w menu konta pozwala wybrać tryb jasny/ciemny oraz Standard, Glass, Graphite, Midnight i Paper z podglądami. Wiersz menu pokazuje aktualny styl. To te same ustawienia co **Ustawienia → Profil → Wygląd**; zmiana stylu zachowuje tryb kolorów, a wybór pozostaje po ponownym uruchomieniu aplikacji. **Przypięte agenty**: strona agenta oferuje Przypnij do Docka (gdzie indziej do paska zadań). Przypięty agent jest w menu Docka i w menu zasobnika, jedno kliknięcie od nowego czatu z nim. Plik upuszczony na ikonę w Docku albo na blobby zaczyna czat z tym plikiem w załączniku. ## Blobby { #blobby } Stworek w stylu awatarów agentów, który siedzi na pulpicie, gdy konsola jest otwarta, zminimalizowana albo zamknięta: jeden z obsady sześciu, twarz jednego z twoich agentów albo twarz własna. Mówi, kiedy czeka akceptacja, w skrzynce jest coś nowego albo twoje runy są w toku, i otwiera to po kliknięciu. Przeciągnij go gdziekolwiek; uszczypnij, przewiń nad nim z wciśniętym `⌘` albo użyj suwaka w Ustawieniach, żeby zmienić rozmiar. Jego własna zakładka w Ustawieniach wybiera postać, jak bardzo jest gadatliwy i czy w ogóle pokazuje aktywność. Jego okno jest przezroczyste, co na macOS wymaga `macOSPrivateApi` w `tauri.conf.json` - a to wyklucza Mac App Store, dokąd samodzielnie hostowana konsola i tak się nie wybierała. ## Szybkie pytanie i głos { #quick-ask-and-voice } **Otwórz AgenticOS** (`⌘⇧O` na macOS, `Ctrl+Shift+O` na pozostałych systemach) pokazuje konsolę z dowolnej aplikacji. Zmień lub wyczyść skrót w **Ustawienia → Skróty**. Pasek menu oraz menu zasobnika i Blobby pokazują aktywne skróty otwierania AgenticOS, szybkiego pytania i zrzutu ekranu do nowego czatu. Oznaczenia odświeżają się po zmianie skrótu. Menu nie pokazuje skrótu, którego nie udało się zarejestrować. **Szybkie pytanie** (`⌥Space`, do zmiany) otwiera pływający panel, żeby zapytać dowolnego agenta z dowolnego miejsca, bez wysuwania konsoli na wierzch. Na macOS może zabrać to, na co patrzyłeś: tekst zaznaczony w innej aplikacji, schowek albo pliki zaznaczone w Finderze - każde pokazane przed wysłaniem i tylko wtedy, gdy pozwoliłeś AgenticOS czytać zaznaczenie. Przytrzymaj `⌥⇧Space`, żeby dyktować do szybkiego pytania; rozmowa głosowa z domyślnym agentem ma własny skrót. **Ustawienia → Skróty** zmieniają je wszystkie: kombinacja potrzebuje co najmniej jednego modyfikatora, taka, którą trzyma już inna aplikacja, jest odrzucana z zachowaniem starego skrótu, a **Wyczyść** go wyłącza. **Zrzut ekranu do nowego czatu** (`⌘⇧A`) pokazuje systemowy celownik; wybrany obszar trafia do nowego czatu, już w załączniku. Pierwsze naciśnięcie prosi macOS o Nagrywanie ekranu, które działa po restarcie. Quick Ask zachowuje pełny zapis rozmowy: twoje pytania, wcześniejsze odpowiedzi, aktywność narzędzi i wyniki korzystają z widoku wiadomości konsoli. W panelu można obsłużyć zatwierdzenia, pytania agenta i prośby o połączenie. Tekst oczekujący offline pozostaje widoczny, a przycisk zatrzymania kończy uruchomienie. Załączniki i cytowane źródła otwierają się w panelu; przewinięcie w górę wstrzymuje automatyczne przewijanie aż do powrotu na dół. Kliknij spinacz, aby wybrać pliki, wklej obraz ze schowka albo upuść pliki na Quick Ask. Załączniki są widoczne przed wysłaniem i można je usuwać pojedynczo. Obowiązuje ten sam limit rozmiaru co w czacie. Wysyłanie i rozpoczęcie nowej rozmowy czekają na zakończenie przesyłania; błąd przesyłania zachowuje szkic wiadomości. Możesz wysłać plik bez dopisywania tekstu. Przycisk przypięcia utrzymuje Quick Ask nad innymi aplikacjami po kliknięciu poza oknem. Odepnij je, aby przywrócić chowanie przy utracie fokusu. Krzyżyk, Escape w polu wiadomości i skrót Quick Ask nadal mogą schować przypięty panel. Przypięcie obowiązuje podczas bieżącej sesji aplikacji, także po przeładowaniu strony. ## Praca na tym komputerze { #work-on-this-computer } Lokalne operacje plikowe korzystają z otwartego uchwytu zatwierdzonego katalogu. Zastąpienie katalogu lub pliku symlinkiem nie przekieruje zapisu poza niego. Sam katalog i jego katalogi nadrzędne są otwierane bez podążania za symlinkami; podgląd i listowanie plików korzystają z tej samej granicy. Jedyna rzecz, której przeglądarka nie potrafi: czat desktopowy może pracować w folderze na komputerze, na którym działa aplikacja, zamiast w chmurze. Narzędzia agenta do plików i powłoki - listowanie, czytanie, zapis, edycja, uruchamianie - sięgają tego folderu przez aplikację. **Połącz komputer raz.** W ustawieniach czatu wybierz **Pracuj na → Ten komputer**, aby połączyć go bezpośrednio. Potwierdź w natywnym oknie, a potem wybierz folder i tryb dostępu w tym samym panelu. **Ustawienia → Aplikacja desktopowa → Ten komputer → Pozwól agentom tu pracować** oferuje tę samą akcję łączenia. Aplikacja dostaje własną sesję dla tego komputera i przechowuje jej refresh token w systemowym pęku kluczy. Trzyma jedno wychodzące połączenie WebSocket do device huba serwera (`/api/v1/ws/device`); nic nie nasłuchuje na komputerze. **Rozłącz** kończy tę sesję. **Wybierz to dla czatu.** W aplikacji desktopowej ustawienia czatu oferują **Pracuj na (Work on): Chmura / Ten komputer**. Wybranie tego komputera prosi o folder w natywnym oknie wyboru i o to, jak daleko agent może w nim sięgać: Ten komputer zostaje wybrany dopiero po zatwierdzeniu folderu. Lista dostępu pokazuje zatwierdzony tryb tego folderu; jego zmiana ponownie otwiera natywne okno wyboru folderu, aby potwierdzić nowe uprawnienia. Anulowanie zachowuje poprzedni wybór. Folder i tryb pozostają wybrane po zamknięciu ustawień oraz po nadaniu nowemu czatowi identyfikatora. | Tryb | Co agent może | Jak jest tego pilnowane | | ---------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | Tylko odczyt | Czytać pliki; nic nie jest zapisywane i żadne polecenie się nie uruchamia | Aplikacja odrzuca zapisy i polecenia | | Zapis w folderze | Czytać, zapisywać w folderze, uruchamiać polecenia | Polecenia działają pod Seatbelt na macOS i bubblewrap na Linuksie, z zapisem tylko w folderze i katalogach tymczasowych | | Pełny dostęp | Polecenia działają jako ty, bez piaskownicy | Każde polecenie jest najpierw pokazane w natywnym oknie do zatwierdzenia | Polecenia w folderze mogą czytać wybrany folder i systemowe pliki środowiska uruchomieniowego, ale nie pozostałe pliki katalogu domowego ani odziedziczone sekrety aplikacji. Narzędzia potrzebujące tych danych wymagają osobnej zgody na cały komputer. Bezpośredni odczyt i zapis plików lokalnych mają limit 10 MiB, aby zbyt duży transfer nie rozłączał urządzenia. Większy zapis jest odrzucany przed kodowaniem i wysłaniem danych pliku. Windows oferuje tylko odczyt i pełny dostęp. Linux oferuje zapis w folderze tylko wtedy, gdy jest zainstalowany `bwrap` z obsługą `--bind-fd`. Aplikacja utrzymuje uchwyt katalogu otwartego bez podążania za dowiązaniami do startu sandboxa, więc zmiana nazwy folderu ani podmiana go na dowiązanie symboliczne nie zmieni zatwierdzonego katalogu. Na Linuksie zmienne środowiskowe zadania są ustawiane wewnątrz sandboxa, a nie w procesie, który go uruchamia; ich wartości są przekazywane przez prywatny deskryptor. Ścieżka korzenia folderu routine nie może zawierać dowiązań symbolicznych ani junctions. Wybierz rzeczywisty folder w pickerze; dopuszczenie zadania w tle nie rozwiązuje dowiązań w ścieżce korzenia. **Decyduje komputer, nie serwer.** Wybrane foldery wraz z trybami są trzymane w ustawieniach aplikacji, a każda operacja podaje folder i tryb, które aplikacja z nimi porównuje: folder, którego nie wybrałeś, tryb szerszy niż dozwolony albo ścieżka wychodząca poza folder są odrzucane na komputerze, cokolwiek serwer poprosił. Wybór jest zapamiętywany dla każdej rozmowy. Nowe czaty dziedziczą ostatni folder i narzędzia dla konta i organizacji; ustawienia projektu mają pierwszeństwo. Zgoda na cały komputer udzielona w czacie nigdy nie przechodzi do innej rozmowy; zgoda udzielona agentowi obowiązuje dla tego agenta (zob. **Cały komputer**). **Tylko twoje runy.** Czat sięga twojego komputera tylko wtedy, gdy jest twój - nigdy klucz API, gość widżetu czy czat kogoś innego - a [trigger](triggers.md) tylko wtedy, gdy działa jako jego twórca, który wskazuje mu folder swojego komputera w polu **Pracuj na** triggera. **Gdy komputera nie ma — czat interaktywny.** Run, który poprosił o ten komputer i zastał aplikację bez połączenia, czeka na nią do dziesięciu minut, a czat o tym mówi. Operacja, która zastanie aplikację rozłączoną w trakcie runa - zamknięta klapa, zmiana sieci - czeka do pięciu minut na jej powrót w tej samej sesji, a potem idzie dalej. Gdy operacja runa jest w toku, zasobnik mówi, że agent pracuje na tym komputerze. Serwer sprawdza sesję przed przekazaniem każdej lokalnej operacji. Odwołana lub wygasła sesja odmawia nowej pracy; heartbeat zamyka też bezczynne połączenia. Operacje już w toku są anulowane po zamknięciu połączenia desktopu. W Builderze **Sandbox → Komputer** zapisuje `backend: local`, bez ścieżki i natywnej zgody. Każda osoba zatwierdza własne miejsce pracy w czacie desktopowym. Taki agent nie ma przestrzeni w chmurze, więc **Work on** nie oferuje dla niego chmury. Możesz do niego pisać, zanim cokolwiek udzielisz: odpowiada na to, co nie wymaga plików, i dopiero gdy prośba potrzebuje twoich plików, pyta, gdzie może pracować - **Cały komputer** albo folder. Przebieg czeka na twój wybór, a potem czat sam kontynuuje z plikami. Odpowiedź jest zapamiętywana dla tego agenta na tym komputerze, więc jego kolejne czaty startują tam bez pytania. W konsoli w przeglądarce, gdzie nie ma komputera do udostępnienia, agent mówi, że nie ma dostępu do twoich plików. Przy tworzeniu projektu **Sandbox projektu → Komputer · Twoje pliki** otwiera wybór prywatnego folderu; inni członkowie zachowują wspólny obszar projektu. **Cały komputer.** Czat desktopowy oferuje też **Cały komputer**, bez wyboru folderu. Jedno natywne ostrzeżenie zatwierdza dostęp: dla agenta z obszarem **Komputer** ostrzeżenie wymienia agenta, a zgoda obowiązuje dla niego w każdej rozmowie; w pozostałych przypadkach dotyczy tej rozmowy. Narzędzia plików mogą korzystać ze ścieżek bezwzględnych wszędzie, gdzie sięga twoje konto, a polecenia działają jako ty, bez osobnych natywnych potwierdzeń. Uprawnienia systemu i reguły zatwierdzania agenta nadal obowiązują. **Cofnij dostęp do całego komputera** lub wybór **Chmura** blokuje nowe operacje; działające polecenia nie są przerywane. Zgoda przetrwa restart aplikacji i dotyczy tego serwera oraz agenta lub rozmowy; nowy szkic wiąże zgodę rozmowy przy pierwszej operacji. Nowy czat z innym agentem wymaga własnej zgody. Ten tryb nie przeszukuje katalogu domowego ani nie zbiera automatycznie załączników. Lokalna przeglądarka i narzędzia plików są dostępne w czacie desktopowym także bez funkcji Browser lub Sandbox w agencie. Wybór dodaje funkcję tylko do uruchomienia, zachowuje ograniczenia domen i reguły zatwierdzania oraz nie zmienia opublikowanego agenta. Wewnętrzne migawki załączników używają list plików zamiast poleceń powłoki. ## Ekran { #the-screen } [Computer use](reference/capabilities.md) może sterować ekranem tego komputera. W czacie pracującym na tym komputerze jego pulpit `auto` - domyślny - to ten ekran; `local` nie prosi o nic innego. - **Najpierw pyta.** Pierwszy zrzut w sesji pyta w natywnym oknie, czy agent może widzieć ten ekran i nim sterować, na godzinę. - **Obramowany, gdy działa.** Obrys otacza ekran, gdy agent go trzyma. - **Do zatrzymania od razu.** `⌘⌥Esc` (gdzie indziej `Ctrl+Alt+Esc`) odbiera ekran; następna akcja jest odrzucana, dopóki znowu nie pozwolisz. - **System też pyta.** macOS potrzebuje AgenticOS w Prywatność i ochrona, zarówno w Nagrywaniu ekranu, jak i w Dostępności; odmowa je nazywa. Każdy pulpit, na którym pracuje run, ten także, jest pokazywany na żywo w czacie i w podglądzie runa na żywo, gdzie **Przejmij** oddaje go tobie między krokami agenta, a **Oddaj** zwraca. Podgląd ekranu tego komputera jest tylko dla ciebie, ktokolwiek inny może oglądać runy. ## Logowanie { #signing-in } Główne okno desktopowe ma osobny pasek przeciągania i zwarty górny odstęp treści 16px. Na macOS przyciski okna mają zarezerwowany wiersz 32px, dzięki czemu marka w pasku bocznym i nagłówek strony pozostają wyrównane bez dodatkowej przerwy z układu przeglądarkowego. Konsola, Blobby i Quick Ask współdzielą nazwany, trwały profil WebView; prywatne karty przeglądarki agenta pozostają odizolowane. Przejście ze starszego profilu może wymagać jednego logowania. W Glass obszar przeciągania ma tło zgodne z treścią. Panel dashboardu wygładza nawigację klawiaturą i skokowe ruchy kółka myszy, zachowując natywną obsługę precyzyjnego przewijania gładzikiem; ograniczenie ruchu wyłącza wygładzanie. Konsola zachowuje sesję w trwałych cookies HttpOnly, w tym cookie odświeżającym odnawianym podczas korzystania z sesji. Ponowne otwarcie aplikacji przywraca sesję, dopóki jest ważna. Chwilowa awaria serwera lub limit żądań zachowuje konto w desktopie; sprawdzenie sesji ponawia się po odzyskaniu połączenia lub aktywowaniu okna. Odrzucony lub unieważniony token nadal wymaga logowania. Gdy lokalnie nie ma konta, niedostępność serwera pokazuje możliwość ponowienia zamiast przekierowania do logowania. Jedyna nawigacja, której okno konsoli odmawia. Wszystko inne ładuje się w oknie; kliknięcie **Continue with Google** otwiera się zamiast tego w twojej własnej przeglądarce, a wynik wraca do aplikacji (#1532). Co się dzieje, po kolei: 1. Własne `/api/oauth//login` konsoli działa **w oknie**, gdzie może przeczytać ciasteczko httpOnly z przygotowanym zaproszeniem i je dołączyć. 2. Okno widzi wtedy nawigację do `/api/v1/oauth//login` _wdrożenia_, przekazuje ją systemowej przeglądarce z dopisanymi `client=desktop` i świeżo wybitym `desktop_nonce` i nie idzie za nią. 3. Logujesz się tam, w prawdziwej przeglądarce z własnymi hasłami, własnymi rozszerzeniami i jakimkolwiek drugim składnikiem. 4. Callback wdrożenia widzi, że ta próba była desktopowa - zapisane w sesji na _początku_ pod `state` OAuth tej próby, nigdy nie odczytywane z powrotu - i przekierowuje do `agenticos://auth/callback?code=…` z jednorazowym kodem, który wygasa po minucie, oraz otrzymanym nonce. 5. System przekazuje ten link aplikacji. Powłoka wysyła okno konsoli do `/auth/callback?code=…`, które wymienia kod na parę tokenów między serwerami; ustawiane są ciasteczka samego okna. **Deep link może wywołać każdy proces na twoim komputerze**, więc to, co jeden może tu zrobić, jest wąskie: wysłać konsolę pod jedną ścieżkę, na serwerze, który _ty_ skonfigurowałeś, z kodem wymienialnym dokładnie raz - i tylko taki, który niesie nonce wybity przez tę aplikację dla tej próby. Na Windows i Linuksie blokada jednej instancji przekazuje argumenty drugiego uruchomienia pierwszemu. Wdrożenie musi zgadzać się co do schematu - `DESKTOP_DEEP_LINK_SCHEME`, `agenticos`, chyba że ktoś to zmienił - i co do własnego publicznego adresu. ## Czego celowo nie robi { #what-it-deliberately-does-not-do } - **Brak strażnika nawigacji.** Link wychodzący poza origin serwera otwiera się w oknie, bo niektóre przepływy OAuth - podłączanie konta dla terminala - muszą wrócić do tego samego webview, żeby ich ciasteczko trafiło na miejsce. Tytuł okna nazywa każdy inny host, który pokazuje. Podłączanie serwera MCP do nich nie należy: jego zgoda otwiera się w twojej przeglądarce, gdzie są twoje logowania i passkeye, bo callback uwierzytelnia sam `state`. Dokończ tam i wróć; serwer pojawi się w aplikacji po autoryzacji. - **Brak stałego dostępu.** Połączenie komputera samo niczego nie daje: run sięga tylko zatwierdzonych folderów lub całego komputera po osobnej zgodzie dla rozmowy, a ekranu dopiero po twojej zgodzie. ## Gdzie to jest w drzewie { #where-it-sits-in-the-tree } - `desktop/ui/` - strony pierwszego uruchomienia i obrys ekranu, pliki statyczne. - `desktop/core/` - części, co do których obie strony muszą się zgadzać, bez runtime: ramki urządzenia, endpointy i back-off, testowane osobno. - `desktop/src-tauri/` - powłoka: okna, menu, blobby, szybkie pytanie, połączenie urządzenia (`device.rs`), lokalny wykonawca (`local_work.rs`) i ekran (`screen.rs`). - `backend/app/services/device_hub/` - połowa serwerowa: obecność w Redisie, żeby każdy host API i worker sięgał komputera, oraz `DeviceWorkspace`, workspace sandboxa wykonywany przez aplikację. ## Coding agents na tym komputerze { #coding-agents-on-this-computer } **Settings → Desktop app → Coding agents on this computer** pokazuje wersje i stan logowania. **Set up** przygotowuje prywatny Node.js 24.19.0 oraz przypięte adaptery z lockfile, sprawdzając integralność pobieranych plików. Nie musisz osobno instalować narzędzi deweloperskich. **Sign in** uruchamia logowanie OAuth agenta w przeglądarce; AgenticOS nie odczytuje ani nie kopiuje poświadczeń. **Refresh status** jawnie sprawdza logowanie. Powrót do aplikacji nie odpytuje ciągle magazynu poświadczeń; udane logowanie i przygotowanie automatycznie odświeżają stan. W aplikacji desktopowej wybierz **Ustawienia czatu → Narzędzia i pliki → Agent programistyczny**, a następnie **Claude Code** lub **Codex**, również gdy opublikowana capability jest wyłączona lub nieobecna. Aplikacja przygotowuje lokalne narzędzia plikowe i otwiera natywny wybór folderu, chyba że bieżący folder ma już grant pełnego dostępu. Anulowanie pozostawia poprzednie ustawienia. **Użyj ustawienia agenta** przywraca opublikowaną konfigurację. Wybór dotyczy tego czatu. Reguły trybu tylko do odczytu i zatwierdzania nadal obowiązują, a natywną zgodę na start można zapamiętać dla agenta i folderu. Przejście do chmury usuwa wybór lokalnego coding agenta dla tej rozmowy. Ustawienia czatu rozwijają się nad polem wiadomości. Ma karty **Model**, **Narzędzia i pliki** (Coding agent, Work on, Browser, Computer use i skille) oraz **Preferencje** (zatwierdzanie i powiadomienia). Ustaw capability **Coding agent** na **On this computer**, wybierz folder w **Work on** i przyznaj mu pełny dostęp. Natywna zgoda jest zapamiętywana dla tego agenta, folderu, wersji adaptera i połączenia. Usunięcie lub ponowne wybranie folderu usuwa zgodę i zatrzymuje działających w nim agentów; zmiana konta lub serwera też usuwa zgody. Adapter działa jako Twoje konto systemowe: folder wyznacza katalog roboczy, a nie sandbox systemu. Dostęp do całego komputera uruchamia też coding agenta, w katalogu domowym albo folderze wewnątrz niego. Zgody na zadania i uprawnienia systemowe nadal obowiązują. Zgoda capability obowiązuje raz na zadanie. W jego trakcie `edit` zezwala na żądane operacje, a `read_only` odmawia zmian. Claude w trybie odczytu wyłącza bypass uprawnień i udostępnia tylko narzędzia do czytania. Codex wybiera swój natywny sandbox tylko do odczytu. Lokalny agent używa własnych ustawień modelu; użycie subskrypcji nie jest wyceniane, więc koszt runu stanowi dolną granicę. Kolejne zadania wznawiają nazwaną sesję (`main`, gdy zadanie nie wskazuje żadnej) dla danej rozmowy, agenta, harnessu, folderu, konta i polityki dostępu; kilka sesji działa naraz, do ośmiu na jednym komputerze, każda w folderze czatu albo folderze wewnątrz niego. `fresh_session` jawnie zaczyna od nowa. Identyfikatory sesji pozostają w ustawieniach desktopu, poza repozytorium, i są usuwane po odłączeniu lub zmianie konta. Niedostępna zapisana sesja kończy zadanie jawnym błędem; w razie potrzeby zacznij od nowa. Odłączenie zatrzymuje proces, ale zapisaną historię harnessu można wznowić. Korekta wysłana podczas lokalnego zadania przerywa bieżącą turę ACP. Po potwierdzeniu zatrzymania przez adapter ta sama sesja kontynuuje z korektą. Transkrypt zapisuje zastosowaną korektę; wiadomość po zakończeniu pozostaje dostępna dla nadrzędnego agenta. Po wybraniu agenta kodującego i zatwierdzonego folderu pola **Model kodujący** i **Poziom myślenia** pokazują opcje zgłoszone przez zainstalowanego agenta. Dotyczą tej rozmowy i są stosowane przed nowym lub wznowionym zadaniem. Puste pole zachowuje własne ustawienie agenta. Zmiana agenta usuwa niezgodne nadpisania. Odśwież opcje po zmianie logowania lub konfiguracji; otwarcie kolejnego okna nie sprawdza ponownie konta. Usunięta albo nieobsługiwana opcja jest widoczna i odrzucana, zamiast cichej zamiany. Odczyt opcji nie uruchamia modelu i nie udziela zgody na narzędzia. ## Twoje skills i instrukcje { #your-own-skills-and-instructions } **Chat controls → Work on → My skills and instructions** wybiera źródła dostępne w rozmowie: `~/.agents/skills`, `~/.claude/skills` i `~/.codex/skills`. W nowym czacie są wyłączone. Pliki są czytane w miejscu, bez kopiowania ani synchronizowania credentials i konfiguracji. Wśród włączonych źródeł kolizję nazw rozstrzyga kolejność `.agents`, `.claude`, `.codex`. Liczniki uwzględniają bieżący wybór. Desktop deduplikuje linki do tego samego folderu skilla. Globalne instrukcje pochodzą z nowszego włączonego pliku `~/.codex/AGENTS.md`, `~/.claude/AGENTS.md` lub `~/.claude/CLAUDE.md`, także poprzez symlink do Markdowna. Po globalnych instrukcjach następują `AGENTS.md` i `CLAUDE.md` zatwierdzonego folderu. Przed pracą w podfolderze agent może wywołać `load_local_instructions`, aby odczytać hierarchię od zatwierdzonego katalogu do wskazanego miejsca. Bardziej szczegółowe pliki następują po nadrzędnych. Czytnik nie wychodzi ponad zatwierdzony folder i nie podąża za projektowymi symlinkami. Instrukcje nie rozszerzają uprawnień runu. Odczytany tekst skilli i instrukcji trafia przez Twój serwer do skonfigurowanego modelu agenta. Przełącznik źródeł steruje tym kontekstem AgenticOS; lokalne coding agents zachowują własną konfigurację i wykrywanie instrukcji. ## Diagnostyka { #diagnostics } **Help → Export Diagnostics…** zapisuje jeden plik JSON w wybranym miejscu, do załączenia do zgłoszenia błędu. Zawiera wersję, system operacyjny, na co zezwolił macOS, czy Claude Code i Codex są zainstalowane i zalogowane, adres serwera (tylko schemat, host i port) oraz ostatnie awarie. Nie zawiera poświadczeń, tokenów, rozmów ani ścieżek w folderze domowym, a nic nie jest nigdzie wysyłane. Awaria jest zapisywana w `crash.log` w folderze danych aplikacji w chwili, gdy się zdarzy. Jeśli aplikacja desktopowa 1.38.1 pozostaje w stanie **Linked — reconnecting…**, a lokalne czaty pokazują **Waiting for your computer**, sprawdź, czy lokalizacje awarii w wyeksportowanej diagnostyce zawierają `rustls` / `crypto/mod.rs`. Ten błąd inicjalizacji TLS poprawiono w nowszym wydaniu aplikacji desktopowej. Zainstaluj je i otwórz aplikację ponownie; aktualizacja samego serwera nie aktualizuje klienta desktopowego. Ta poprawka nie wymaga resetowania parowania ani zgód na foldery. ## Lokalna przeglądarka, modele i MCP { #local-browser-models-and-mcp } Po sparowaniu aplikacji wybierz **Przeglądarka → Lokalna przeglądarka**, aby nadpisać ustawienie agenta dla tej rozmowy. Ten wybór jest niezależny od **Pracuj na**: nie wymaga folderu ani funkcji Sandbox i zachowuje sandbox agenta w chmurze. Lokalne modele i usługi MCP wymagają zatwierdzonego folderu lub dostępu do całego komputera; run otrzymuje własną funkcję Sandbox. Aplikacja telefonu nie wywołuje komend desktopowych. Usługi dodaje się w **Ustawienia → Aplikacja desktopowa → Usługi lokalne**. Każde uprawnienie potwierdza natywne okno. Model korzysta z endpointu HTTP Ollama lub OpenAI-compatible (np. `http://127.0.0.1:11434/v1`) i identyfikatora zainstalowanego modelu. MCP wymaga działającego serwera Streamable HTTP (np. `http://127.0.0.1:8000/mcp`). Dopuszczalne są tylko adresy loopback, bez przekierowań i danych logowania w URL. Adres przechowuje desktop, a API przesyła nieprzezroczysty identyfikator uprawnienia. Limit żądania i odpowiedzi wynosi 8 MiB, a czas usługi dwie minuty. Serwer MCP musi przyjmować żądania bez tokena i kończyć odpowiedzi HTTP; osobne subskrypcje SSE i uruchamianie procesów stdio nie są obsługiwane. Usunięcie uprawnienia blokuje kolejne wywołania. Profil organizacji pozostaje tożsamością modelu bez otwierania jego danych logowania do chmury. Lokalny model nie ma awaryjnego przełączenia na chmurę; pozostałe funkcje z osobnymi modelami zachowują swoje ustawienia. **Lokalna przeglądarka** po zgodzie na sparowanym komputerze pokazuje natywną stronę w panelu przeglądarki konsoli. Kliknięcia, przewijanie i wpisywanie odbywają się lokalnie, bez przesyłania screenshotów. Prywatna sesja nie importuje osobistych kart ani haseł. Tekst strony nadal trafia do modelu agenta. Ręczna interakcja przejmuje sterowanie; **Oddaj agentowi** zwraca je agentowi. Przy szerokim czacie przeglądarka otwiera się obok rozmowy, zarówno lokalnie, jak i zdalnie. Przeciągnij separator lub użyj jego klawiszy strzałek, aby zmienić szerokość. **Maksymalizuj** otwiera pełny ekran, a **Wróć obok czatu** przywraca panel. Wąskie obszary czatu i telefony automatycznie używają pełnego ekranu. Natywna karta należy do komputera, organizacji, osoby, agenta i rozmowy. Pozostaje otwarta między runami, a `browser_read` ją wznawia. W danej chwili może jej używać jeden run. Run odnawia dzierżawę automatycznie; po zatrzymaniu jego backendu dzierżawa staje się ponownie dostępna po dwóch minutach. **Zamknij kartę** ją usuwa; zamknięcie panelu tylko ją ukrywa. Rozłączenie sparowanego urządzenia zamyka wszystkie jego karty. Limit to osiem kart; karty nieaktywne przez dwie godziny mogą zostać usunięte przy otwarciu kolejnej. Zgoda na natywne przeglądanie obejmuje karty tej rozmowy w bieżącym połączeniu urządzenia. Nowe karty i karty ponownie otwarte przez agenta nie wymagają kolejnego potwierdzenia przy tej samej polityce domen. Samodzielne zamknięcie ostatniej karty cofa zgodę; ukrycie panelu jej nie cofa. Odłączenie urządzenia usuwa zgodę. Inna osoba, agent, rozmowa lub polityka domen wymaga osobnej zgody. Ustawienia Computer use i przeglądarki używają kafelków środowisk z krótkimi opisami. Nowo włączony Computer use jawnie wybiera Docker / Sandbox. Wybór automatyczny nie jest już oferowany; istniejące konfiguracje pozostają czytelne i niezmienione do czasu wyboru środowiska przez użytkownika. Docker Compose zawiera sandboxd i runtime desktop. Operator może zarejestrować URL i klucz innego hosta w Połączenia → Sandboxy, a następnie wybrać go i runtime desktop w ustawieniach Sandbox agenta. Aby wybrać zgodność z Chromium, wyłącz **Używaj natywnej przeglądarki lokalnej** w ustawieniach funkcji przeglądarki. Zadania z vision lub zmianą języka albo strefy czasowej także używają izolowanego okna Chromium. Ta ścieżka wymaga Chrome, Chromium, Edge lub Brave i zamyka profil po runie. Akcje w natywnym DOM korzystają ze skryptów; niektóre strony odróżniają je od zaufanego wejścia CDP. Strony nie mają uprawnień konsoli ani plików; mogą tylko zgłosić przejęcie sterowania. Konfiguracja `connection: local` nadal wymaga wyboru lokalnej przeglądarki. ## Instalatory i aktualizacje { #installers-and-updates } Workflow Apps buduje też instalatory deweloperskie i testuje instalację bez automatyzacji interfejsu: kopiowanie aplikacji Mac z DMG, cichą instalację i usunięcie na Windowsie, instalację i usunięcie pakietu Debian oraz rozpakowanie przenośnego AppImage. Sprawdza osadzony widget macOS i podpisy, izolację trwałej sesji oraz odrzucenie zmodyfikowanego pliku aktualizacji. Te kontrole używają buildów ad-hoc lub niepodpisanych i nie potwierdzają publicznej notaryzacji ani akceptacji sklepu. Workflow **Apps** w GitHub Actions sprawdza natywne crate'y na macOS, Windows i Linuksie, buduje debug APK Androida i aplikację symulatora iOS. Pełne sprawdzenia natywne wykonuje CI; lokalne `make desktop-check` pozostaje dostępne do zmian wybranego obszaru. Workflow **App release** dołącza instalatory, podpisane pliki aktualizacji, APK i cask Homebrew do istniejącego, opublikowanego stabilnego wydania `v1.MINOR.PATCH`, którego commit należy do `main`. Nie tworzy wydania platformy. Cask trafia też do tapu Homebrew, gdy skonfigurujesz deploy key lub token. Menu **Sprawdź aktualizacje…** wymaga buildu z publicznym kluczem aktualizatora i weryfikuje podpis przed instalacją. Buildy wydań desktopowych działają równolegle. Każdy wysyła własne podpisane paczki; jeden końcowy job sprawdza cztery natywne targety i publikuje `latest.json`. CI aplikacji natywnych zapisuje wyniki kompilacji według systemu, architektury, kompilatora, targetu i profilu buildu. Wydania tylko odczytują wspólny cache pobranych zależności. Nieudany build platformy blokuje publikację manifestu aktualizacji. Publikacja mobile jest obecnie wyłączona. Zmienna repozytorium `AGENTICOS_MOBILE_RELEASES_ENABLED=true` włącza podpisane wydania Androida; iOS wymaga dodatkowo flagi TestFlight opisanej poniżej. Zwykłe buildy CI pozostają aktywne. Do czasu uruchomienia dystrybucji skorzystaj z instrukcji [samodzielnej instalacji mobile](mobile.md#availability-and-self-installation). Przed wydaniem skonfiguruj środowisko GitHub `apps-release`: - Stały podpis macOS: sekrety `MACOS_SELF_SIGNED_P12`, `MACOS_SELF_SIGNED_P12_PASSWORD` i zmienna `MACOS_SELF_SIGNED_IDENTITY`. Opublikuj publiczny fingerprint w `scripts/macos_signing_identity.txt`. - Homebrew: sekret `HOMEBREW_TAP_DEPLOY_KEY`, deploy key z zapisem wyłącznie do repozytorium tapu. Alternatywą jest `HOMEBREW_TAP_TOKEN`. Tymczasowe pliki klucza są usuwane także przy błędzie. - Zmienna `AGENTICOS_UPDATER_PUBLIC_KEY`; sekrety `TAURI_SIGNING_PRIVATE_KEY` i `TAURI_SIGNING_PRIVATE_KEY_PASSWORD` (stała para kluczy aktualizatora). - Opcjonalny podpis macOS Developer ID: ustaw zmienną repozytorium `AGENTICOS_MACOS_SIGNING_ENABLED=true` i skonfiguruj poniższe dane Apple. Brak danych zatrzymuje build, bez przejścia na podpis ad-hoc. Gdy flaga nie jest ustawiona lub jest fałszywa, paczki używają skonfigurowanego stałego certyfikatu samopodpisanego albo podpisu ad-hoc przy jego braku. Oba warianty są bez notaryzacji; dane Apple są ignorowane. - macOS: `APPLE_CERTIFICATE` (P12 w base64), `APPLE_CERTIFICATE_PASSWORD`, `APPLE_SIGNING_IDENTITY`, `APPLE_ID`, `APPLE_PASSWORD` (hasło aplikacji) i `APPLE_TEAM_ID` do podpisu Developer ID i notaryzacji. - Opcjonalny Authenticode Windows: `WINDOWS_CERTIFICATE_BASE64` (PFX) i `WINDOWS_CERTIFICATE_PASSWORD`. Bez nich instalator nie ma podpisu. - Android: `ANDROID_KEYSTORE_BASE64`, `ANDROID_KEYSTORE_PASSWORD`, `ANDROID_KEY_ALIAS`, `ANDROID_KEY_PASSWORD`. Aktualizacje wymagają tego samego keystore. - TestFlight: zmienna repozytorium `AGENTICOS_TESTFLIGHT_ENABLED=true`; sekrety `IOS_CERTIFICATE_BASE64`, `IOS_CERTIFICATE_PASSWORD`, `IOS_PROFILES_BASE64_JSON` (tablica JSON profili base64 aplikacji, widgetów i rozszerzenia udostępniania), `APP_STORE_CONNECT_KEY_P8`, `APP_STORE_CONNECT_KEY_ID`, `APP_STORE_CONNECT_ISSUER_ID`, `APPLE_TEAM_ID`. Najpierw utwórz identyfikatory, wspólną App Group i aplikację App Store Connect. Push nadal wymaga istniejących danych APNs skonfigurowanych we wdrożeniu. Dane sklepów pozostają w CI, a zadania usuwają tymczasowe pliki podpisujące. Wysyłka do TestFlight jest wyłączona do jawnego włączenia. Zatwierdzenie sklepu, provisioning i dostarczenie na podpisane urządzenia wymagają kont operatora; nie potwierdzi ich niepodpisany lokalny build. ## Podsumowanie { #recap } - **Konsola zostaje na serwerze.** Powłoka ją otwiera; nic nie jest dołączane. - **Natywnie tam, gdzie to ma znaczenie.** Menu, powiadomienia, przypięte agenty, blobby, szybkie pytanie i głos z dowolnego miejsca. - **Twoje agenty mogą pracować na tym komputerze** - w wybranych folderach, w wybranych trybach, w piaskownicy systemu i tylko dla twoich własnych runów. - **I na jego ekranie** - najpierw pytają, są obramowane, gdy działają, i zatrzymywane jednym skrótem. Quick Ask obsługuje do ośmiu niezależnych zakładek w oknie. Każda zachowuje własny szkic, załączniki, wybranego agenta i trwającą odpowiedź. Ostatnie rozmowy otwiera przeszukiwaną listę i przełącza na istniejącą zakładkę, jeśli rozmowa jest już otwarta; zapisane rozmowy wczytują wiadomości i wcześniejszą historię. Nieaktywne zakładki nie przechwytują plików, skrótów dyktowania ani fokusu. Ostatnie rozmowy pokazują avatary agentów w rozwijanej sekcji. Zajmuje ona tylko potrzebne miejsce, bez rezerwowania pustej wysokości okna. Nowy czat jest jedyną akcją otwierającą nową zakładkę. Sidebar w przeglądarce proponuje pobranie desktopu; zamknięcie przypomnienia wycisza je na 14 dni dla tego konta w tej przeglądarce. Quick Ask ma przycisk mikrofonu do włączania dyktowania kliknięciem, obok istniejącego skrótu przytrzymywanego. Połączenia głosowe korzystają z tych samych kontrolek co chat: konfiguracji wybranego agenta, napisów, zatwierdzeń i pytań. Wypowiedziane tury zapisują się w rozmowie. Wysyłanie tekstu i dyktowanie czekają podczas połączenia. Przejście do innej zakładki lub zmiana agenta kończy połączenie i zwalnia mikrofon. ## Rutyny lokalne { #local-routines } Odmowa na komputerze zastępczym nie dowodzi cofnięcia zgody na zatwierdzonym komputerze: może on po prostu być offline. Właściciel otrzymuje powiadomienie bez duplikatów, aby połączyć komputer lub przejrzeć dostęp; procedura i dane jej zdarzeń nadal czekają. Odmowa na pierwotnie wybranej aktywnej sesji nadal zatrzymuje procedurę do przeglądu. Na Linuxie aplikacja sprawdza, czy zainstalowany bubblewrap udostępnia `--bind-fd`, zanim zaoferuje zapis w folderze lub uruchomi komendę w sandboxie. Brak programu, nieobsługiwana albo nieodpowiadająca wersja oznacza odmowę; zaktualizuj bubblewrap, aby włączyć ten tryb. JSON zgód procedur jest weryfikowany względem aktualnego skrótu SHA-256 w systemowym keychainie. Edycja pliku ani przywrócenie kopii sprzed cofnięcia zgody nie nadaje dostępu. Niedostępny keychain lub niezgodność blokuje procedury. **Aktualizacja:** starsze zgody nie mają skrótu i wymagają ponownego zatwierdzenia: jawnie odłącz komputer, powiąż go ponownie i przejrzyj procedury. Ten sam reset naprawia przerwany zapis zgód; aplikacja nigdy automatycznie nie ufa niezweryfikowanemu plikowi. Utwórz rutynę z opcją **Uruchamiaj jako ja**, wybierz folder oraz osobno odczyt, zapis i uruchamianie poleceń. Polecenia wymagają zapisu. Zapis najpierw tworzy wstrzymaną rutynę. Za pierwszym razem aplikacja komputerowa pyta raz, w natywnym oknie, czy **wszystkie twoje rutyny** w tej organizacji mogą pracować w tym folderze i jego podfolderach, z tymi operacjami; wybierz folder domowy, aby objąć cały komputer. Każda kolejna rutyna w tym folderze zapisuje się bez pytania, a zgoda przetrwa aktualizację aplikacji i ponowne zalogowanie. Anulowanie pozostawia tę samą rutynę wstrzymaną; ponowienie kończy konfigurację bez tworzenia kolejnej. Ogólna zgoda na folder w czacie nie upoważnia rutyny. **Ustawienia → Desktop → Uprawnienia rutyn** pokazuje zgody bieżącego konta i organizacji na tym komputerze. Cofnij zgodę, aby zatrzymać kolejne operacje. Zmiana serwera lub konta usuwa te zgody; zgoda na jedną rutynę, udzielona przez starszą aplikację, kończy się też razem z jej sesją. Zmiana folderu lub zwiększenie uprawnień wymaga nowego potwierdzenia natywnego. Zgoda na folder nie obejmuje przeglądarki, ekranu, lokalnych modeli, lokalnych usług MCP ani całego komputera. Opublikowany agent musi już mieć włączony Sandbox; lokalny cel nie włącza możliwości. Gdy konkretny zatwierdzony komputer jest offline przed wykonaniem, trwała aktywacja czeka w PostgreSQL. Wiersz rutyny pokazuje liczbę oczekujących aktywacji. Wywołania harmonogramu i ręczne łączą się podczas oczekiwania; odrębne zdarzenia zachowują własny kontekst i identyfikator aktywacji. Istniejący worker sprawdza połączenie co minutę. Sprawdzanie gotowości nie wywołuje modelu i nie zużywa prób błędnych uruchomień. Dopuszczenie do wykonania zatwierdza się z przebiegiem przed pierwszym wywołaniem modelu. Rozpoczęta aktywacja nie jest automatycznie powtarzana po awarii workera; niepewna operacja plikowa lub polecenie nie tworzy nowego przebiegu. Wstrzymanie, zmiana zadania lub zgody lokalnej, usunięcie rutyny albo osiągnięcie jej końca anuluje stare oczekiwanie zamiast przenosić je do innego folderu. Cofnięta sesja urządzenia wymaga ponownego przeglądu. Trzy martwe lub utracone zadania przed dopuszczeniem zatrzymują rutynę i tworzą incydent właściciela; kontekst nieudanego zdarzenia pozostaje dostępny w eksporcie jego danych. Kontekst po rozpoczęciu lub anulowaniu jest od razu usuwany. Zakończone metadane i nieudany kontekst podlegają retencji historii przebiegów organizacji; aktywne oczekiwanie trwa do dopuszczenia, anulowania lub usunięcia. Wdrażaj API, workery i aplikację komputerową razem; przed włączeniem kontraktu opróżnij stare workery. Starsze aplikacje nie potwierdzają zgód rutyn; istniejące rutyny lokalne wymagają jawnego przeglądu. Migracja `0272_routine_device_waits.py` dodaje oczekiwanie bez zmiany tożsamości rutyny. Przed cofnięciem migracji wstrzymaj rutyny lokalne i opróżnij ich zadania: cofnięcie usuwa oczekujący kontekst i go nie wykonuje. Stare zaparkowane przebiegi bez migawki celu lokalnego wymagają nowego uruchomienia. Wybór lokalnego dostępu należy do wybranego agenta, a nie do globalnego ustawienia dziedziczonego przez innych agentów. Cofnięcie dostępu do folderu usuwa także zapamiętane wybory i zgody coding agentów dla jego podfolderów. Starsze aplikacje desktopowe zachowują zgodę na cały komputer tylko w jednej rozmowie; aktualizacja pozwala zapamiętać ją we wszystkich rozmowach agenta. Korekta `[session:api] Użyj danych z UE` trafia do sesji `api`. Przy jednej aktywnej sesji trafiają do niej także korekty bez adresu; przy wielu pozostają u agenta nadrzędnego, aby nie zmieniać innego zadania. Agent nadrzędny zapisuje korektę raz po wznowieniu pracy. Zadania coding w sandboxie w tym samym zestawie narzędzi wykonują się kolejno, aby ich migawki plików się nie nakładały; niezależne sesje lokalne nadal działają równolegle.