SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-13

Jak uzyskać dostęp do agenta Hermes z telefonu

Skonfiguruj zdalny dostęp do agenta Hermes na VPS poprzez sieć mesh, reverse proxy lub SSH. Instrukcja dla wersji v0.20.0 wyjaśnia jak zabezpieczyć połączenie i zarządzać sesjami.

Trzy sposoby uzyskania dostępu do agenta Hermes z poziomu telefonu

Aby uzyskać dostęp do agenta Hermes z telefonu, należy skorzystać z jego panelu internetowego. Kluczową decyzją jest wybór rozwiązania, które będzie znajdować się przed tym panelem. Pierwszą opcją jest prywatna sieć typu mesh, w której panel nasłuchuje wyłącznie na adresie Tailscale, a żaden port nie jest wystawiony do Internetu. Drugą opcją jest publiczny punkt końcowy za reverse proxy z obsługą TLS (transport layer security) i uwierzytelnianiem, gdzie to logowanie stanowi jedyne zabezpieczenie terminala do serwera. Trzecią opcją jest SSH (secure shell) z poziomu aplikacji terminalowej, co wymaga najmniejszej konfiguracji i zapewnia najszerszy dostęp.

Niniejszy przewodnik rozpoczyna się w miejscu, w którym kończy się uruchamianie agenta Hermes na własnym VPS. Agent jest zainstalowany, odpowiada w wierszu poleceń, a teraz użytkownik chce mieć do niego dostęp mobilny.

Poniższe polecenia zostały przygotowane dla tagu v2026.8.3, opublikowanego 3 sierpnia 2026 roku i oznaczonego w informacjach o wydaniu jako v0.20.0. Hermes często publikuje nowe wersje, dlatego należy przypiąć maszynę do konkretnego tagu, zamiast śledzić main. Instalator akceptuje commit:

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --commit 3c27eb6234bf
hermes version

hermes version wyświetla informacje o tym, co jest faktycznie zainstalowane. Należy porównać te dane z tagiem przed zaufaniem jakiejkolwiek fladze na tej stronie.

Co zawiera repozytorium i czego w nim nie ma

W repozytorium Hermes nie ma aplikacji na systemy iOS ani Android. Natywnym klientem jest hermes desktop (alias hermes gui), aplikacja Electron przeznaczona dla systemów macOS, Windows oraz Linux. Może ona łączyć się ze zdalnym agentem zamiast lokalnego: należy ustawić zdalny adres URL na http://<server-address>:9119 w sekcji Gateway w ustawieniach lub wyeksportować zmienną HERMES_DESKTOP_REMOTE_URL=http://<server-address>:9119 przed uruchomieniem aplikacji. Rozwiązuje to problem obsługi drugiego laptopa. Nie zapewnia to jednak żadnej funkcjonalności na telefonie.

Interfejsem dostępnym z poziomu telefonu jest hermes dashboard, czyli panel przeglądarkowy. Zarządza on konfiguracją, sesjami, zadaniami cron, umiejętnościami, logami oraz platformami komunikacyjnymi i zawiera wbudowany terminal: serwer uruchamia hermes --tui wewnątrz PTY (pseudo-terminala) i przesyła wyjście bezpośrednio na stronę. Na wąskim ekranie przełącznik sesji zwija się do panelu wysuwanego, dzięki czemu układ strony zachowuje użyteczność na telefonie.

Domyślnie pulpit nawigacyjny nasłuchuje na 127.0.0.1:9119 i otwiera kartę przeglądarki na samym serwerze, co jest bezużyteczne w przypadku serwera VPS (virtual private server) bez interfejsu graficznego. Należy uruchomić go bez przeglądarki i sprawdzić gniazdo:

hermes dashboard --no-open
ss -lntp | grep 9119

Nasłuchiwanie na 127.0.0.1:9119 jest dostępne wyłącznie z poziomu serwera. Nasłuchiwanie na 0.0.0.0:9119 jest dostępne z każdej sieci, do której podłączona jest maszyna, w tym z sieci publicznej. Ta jedna linijka decyduje o poziomie ekspozycji, dlatego należy ją zweryfikować, zamiast zakładać jej działanie.

Opcja 1: prywatna sieć mesh z Tailscale

Wybierz to rozwiązanie, chyba że masz powody, by postąpić inaczej. Tailscale to sieć VPN (virtual private network) typu mesh oparta na protokole WireGuard. Każde zarejestrowane urządzenie otrzymuje stabilny adres i komunikuje się bezpośrednio z pozostałymi. Twój telefon dołącza do tej samej sieci, więc pulpit nawigacyjny nie wymaga otwierania żadnego publicznego portu.

Na serwerze:

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale ip -4

Zainstaluj aplikację Tailscale na telefonie i zaloguj się na to samo konto. Polecenie tailscale status na serwerze wyświetli listę urządzeń, w tym telefon, wraz z ich nazwami. Teraz powiąż pulpit nawigacyjny z adresem, który zwróciło tailscale ip -4:

hermes dashboard --host 100.101.102.103 --port 9119 --no-open

Powiązanie z adresem sieci mesh, zamiast z 0.0.0.0, sprawia, że gniazdo nasłuchujące istnieje wyłącznie na interfejsie Tailscale. Skanowanie portów Twojego publicznego adresu IP nie wykaże aktywności na porcie 9119, ponieważ nic na nim nie nasłuchuje; tym samym firewall przestaje być jedynym zabezpieczeniem. Potwierdź to ponownie za pomocą ss -lntp | grep 9119.

Adres powiązania decyduje również o uwierzytelnianiu i jest to element często pomijany. Na 127.0.0.1 pulpit nawigacyjny nie wymaga logowania. Na każdym innym adresie brama uwierzytelniania jest obowiązkowa, a przy braku skonfigurowanego dostawcy serwer odmawia uruchomienia. Projekt określa to jako bezpieczne domyślne zamknięcie (failing closed). Uruchom aplikację interaktywnie za pierwszym razem, aby skonfigurować nazwę użytkownika i hasło. Wynik zostanie zapisany w ~/.hermes/.env:

HERMES_DASHBOARD_BASIC_AUTH_USERNAME=you
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD_HASH=scrypt$16384$8$1$...
HERMES_DASHBOARD_BASIC_AUTH_SECRET=a-long-random-string

Wygeneruj ten sekret za pomocą openssl rand -hex 32 i nie modyfikuj go później. Służy on do podpisywania ciasteczek sesji, więc jego zmiana wyloguje wszystkie urządzenia. Ten sam plik przechowuje klucze API modelu, więc zabezpiecz go za pomocą chmod 600 ~/.hermes/.env.

Przed rozpoczęciem pracy sprawdź bramę z innego urządzenia w sieci mesh:

curl -s http://100.101.102.103:9119/api/status | jq '.auth_required, .auth_providers'

true w połączeniu z ["basic"] oznacza, że brama jest aktywna i odpowiada dostawca haseł. Dokumentacja projektu jasno określa przeznaczenie tego dostawcy: jest on przeznaczony do zaufanych sieci lub VPN i nie nadaje się do pulpitów nawigacyjnych wystawionych na publiczny Internet. W sieci mesh sytuacja jest dokładnie taka, jakiej wymaga to rozwiązanie.

Aby uzyskać HTTPS wewnątrz sieci tailnet, przekaż port do Tailscale:

sudo tailscale serve --bg localhost:9119
sudo tailscale serve status

Tailscale kończy połączenie TLS certyfikatem wystawionym dla nazwy MagicDNS urządzenia, dzięki czemu przeglądarka przestaje wyświetlać ostrzeżenia, a ciasteczko sesji otrzymuje flagę Secure. Włącz najpierw MagicDNS oraz HTTPS Certificates na stronie DNS w konsoli administracyjnej Tailscale i zapoznaj się z informacją: nazwy Twoich maszyn oraz nazwa Twojej sieci tailnet są publikowane w publicznym rejestrze przejrzystości certyfikatów, który jest dostępny dla każdego.

Realnym kosztem tego rozwiązania jest serwer koordynujący. Ruch między telefonem a serwerem VPS jest szyfrowany end-to-end i nie przechodzi przez Tailscale, jednak konto decydujące o tym, które urządzenia należą do sieci mesh, nie znajduje się na Twoim sprzęcie. Jeśli ma to znaczenie, uruchom własną płaszczyznę sterowania za pomocą Headscale, samodzielnie hostowanego serwera kontrolnego Tailscale i wskaż go klientom przy użyciu tailscale up --login-server https://headscale.example.com. Jeśli wolisz zrezygnować z sieci mesh i skonfigurować partnerów ręcznie, porównanie między standardowym WireGuard a Tailscale opisuje, z czego w takim przypadku rezygnujesz.

Opcja 2: publiczny punkt końcowy HTTPS i związane z nim zagrożenie

Czasami sieć typu mesh nie jest dostępna. Służbowy telefon może nie pozwalać na instalację klienta VPN. Wówczas panel sterowania umieszcza się za odwrotnym proxy. Należy pozostawić panel na interfejsie loopback i pozwolić Caddy zarządzać certyfikatem:

hermes.example.com {
  reverse_proxy 127.0.0.1:9119
}

Caddy samodzielnie pobiera i odnawia certyfikat, a jego reverse_proxy przekazuje aktualizacje WebSocket bez dodatkowych dyrektyw, co jest niezbędne dla wbudowanego terminala panelu. W przypadku nginx konieczne jest samodzielne dodanie nagłówków Upgrade oraz Connection, a kwestię TLS opisano w wydawaniu certyfikatu Let's Encrypt za pomocą Certbot na nginx. Należy wskazać Hermesowi jego publiczną nazwę, aby wywołania zwrotne logowania kierowały na właściwy host:

dashboard:
  public_url: "https://hermes.example.com"

Teraz pułapka. Mechanizm uwierzytelniania opiera się na adresie powiązania (bind address), a nie na adresie, z którego nadeszło żądanie. Panel powiązany z 127.0.0.1 za proxy widzi interfejs loopback, uznaje, że logowanie nie jest wymagane i obsługuje każdego, kogo przepuści proxy. Należy sprawdzić, co faktycznie zostało opublikowane:

curl -s https://hermes.example.com/api/status | jq '.auth_required'

Jeśli polecenie to zwróci false, dostęp do terminala na serwerze z Internetu wymaga jedynie wpisania adresu URL. Nie jest to wynik exploita i dzienniki nie wykażą żadnych błędów. Istnieją dwa rozwiązania i należy zastosować przynajmniej jedno z nich. Można umieścić uwierzytelnianie w samym proxy, korzystając z Authentik jako samodzielnie hostowanego dostawcy SSO poprzez forward auth, lub skonfigurować własnego dostawcę OIDC (OpenID Connect) w panelu:

HERMES_DASHBOARD_OIDC_ISSUER=https://auth.example.com/application/o/hermes/
HERMES_DASHBOARD_OIDC_CLIENT_ID=hermes-dashboard
HERMES_DASHBOARD_OIDC_SCOPES="openid profile email"

Nawet przy poprawnej konfiguracji, ta opcja posiada minimalny poziom ryzyka, którego nie da się wyeliminować. Publiczna strona logowania jest dostępna dla każdego, kto może przeprowadzić atak, a za nią znajduje się powłoka systemowa na VPS. Nazwa użytkownika i hasło stanowią słabą ochronę, dlatego dokumentacja zaleca stosowanie OAuth lub OIDC w przypadku publicznych powiązań. Należy ograniczyć częstotliwość prób logowania (rate limit), zadbać o to, aby ufw blokował wszystko poza portami proxy i SSH, oraz okresowo przeglądać dziennik dostępu.

Opcja 3: SSH i mosh z terminala mobilnego

Najmniej wymagająca metoda: zainstaluj aplikację terminala na telefonie, wczytaj do niej klucz SSH i korzystaj z interfejsu tekstowego agenta.

ssh you@vps.example.com
tmux new -A -s phone
hermes --tui

tmux new -A -s phone łączy się z sesją o nazwie phone lub tworzy ją, jeśli jeszcze nie istnieje, dzięki czemu agent działa dalej po zerwaniu połączenia, a użytkownik wraca do tego samego miejsca. Schemat jest identyczny z tym, który opisano w obsłudze Claude Code z telefonu.

Zwykłe połączenie SSH przez sieć komórkową jest niewygodne, ponieważ sesja wygasa przy każdej zmianie adresu IP telefonu lub przejściu urządzenia w stan uśpienia. Mosh rozwiązuje ten problem. Działa on w oparciu o protokół UDP (user datagram protocol) i synchronizuje stan terminala zamiast strumienia bajtów, dzięki czemu sesja pozostaje aktywna podczas przełączania się między Wi-Fi a siecią komórkową:

sudo apt install -y mosh
sudo ufw allow 60000:61000/udp

Z poziomu telefonu uruchom mosh you@vps.example.com. Mosh inicjuje mosh-server w ramach istniejącego logowania SSH, a następnie przenosi sesję na protokół UDP w zakresie portów od 60000 do 61000. Z tego powodu zakres ten musi być otwarty.

Koszt bezpieczeństwa jest oczywisty. Sesja SSH to powłoka, a powłoka daje dostęp do wszystkich uprawnień danego konta. W takiej sytuacji monity o zatwierdzenie działań agenta stanowią ostatnią linię obrony między skradzionym, odblokowanym telefonem a Twoimi plikami. Używaj do tego celu dedykowanego konta bez uprawnień root, loguj się wyłącznie kluczem i wykonaj kroki opisane w zabezpieczaniu SSH na VPS przed umieszczeniem klucza na urządzeniu mobilnym.

Co przestaje działać w sieciach mobilnych

Cztery kwestie, z których żadna nie jest błędem możliwym do usunięcia poprzez konfigurację.

Panel sterowania wylogowuje użytkownika podczas bezczynności. Tokeny dostępu mają czas życia (TTL) wynoszący 15 minut, a obecny kontrakt API nie przewiduje tokenów odświeżania. Gdy token wygasa, strona otrzymuje odpowiedź 401 i przekierowuje użytkownika do /login. Po otwarciu panelu, schowaniu telefonu do kieszeni na dwadzieścia minut i powrocie, użytkownik zastaje ekran logowania, a wpisywane dane zostają utracone. Nie jest to awaria. Należy zalogować się ponownie.

Wbudowany terminal nie przetrwa przejścia karty w tło. Serwer uruchamia TUI (tekstowy interfejs użytkownika) za pośrednictwem PTY i kończy proces po zamknięciu karty, a ponowne otwarcie inicjuje nową sesję. Przeglądarki mobilne usuwają karty działające w tle w celu odzyskania pamięci, więc przełączenie się na inną aplikację na dłuższy czas kończy działanie terminala. Historia czatu pozostaje bezpieczna, ponieważ sesje są przechowywane na serwerze, a hermes sessions list nadal je wyświetla. Do samego terminala nie można ponownie dołączyć. Jeśli wymagana jest sesja odporna na rozłączenia, należy użyć tmux przez SSH.

Bezczynne połączenia są zrywane bez powiadomienia. Operatorzy sieci mobilnych zrywają bezczynne połączenia TCP, aby zwolnić wpisy w tablicy NAT (network address translation), a telefon niemal całkowicie przestaje obsługiwać sieć po wygaszeniu ekranu. WebSocket, który pozostawał nieaktywny przez pewien czas, jest zazwyczaj nieaktywny w momencie odblokowania urządzenia, a strona nawiązuje połączenie ponownie dopiero po interakcji użytkownika. Dlatego mosh jest odczuwalny jako lepsze rozwiązanie niż SSH na telefonie: nie posiada on połączenia, które mogłoby zostać zerwane.

Brak powiadomień push. Ani panel sterowania, ani sesja SSH nie są w stanie wybudzić telefonu. Na urządzeniu nie ma aplikacji Hermes, więc nie istnieje ścieżka do usługi powiadomień platformy. Długotrwałe zadanie agenta kończy się, a użytkownik dowiaduje się o tym dopiero przy następnym sprawdzeniu.

Powiadomienia docierają przez bramkę komunikacyjną

Rozwiązaniem ostatniego problemu jest bramka, która stanowi zupełnie inny sposób komunikacji z agentem. hermes gateway łączy agenta z platformami komunikacyjnymi, takimi jak Telegram, Discord, Slack, WhatsApp, Signal oraz poczta elektroniczna. Komunikacja z agentem odbywa się wewnątrz aplikacji, która posiada już skonfigurowany kanał powiadomień push na telefonie, obsługuje dostarczanie w tle oraz radzi sobie z przerwami w łączności sieciowej.

hermes gateway setup
hermes gateway install
hermes gateway status

hermes gateway install rejestruje bramkę jako usługę systemd, dzięki czemu uruchamia się ona ponownie po restarcie systemu. Instalator Hermes nie tworzy automatycznie jednostek usług, więc hermes dashboard nie uruchomi się samodzielnie po restarcie. Należy utworzyć jednostkę dla każdego używanego komponentu, a artykuł pisanie usług i timerów systemd na VPS zawiera szczegółowe informacje na temat samego pliku.

Zaplanowane zadanie może wysłać wynik w ten sam sposób, bez konieczności prowadzenia konwersacji:

hermes send -t telegram -s "Backup report" -f /home/you/report.txt

Autoryzacja działa tutaj w trybie domyślnej odmowy. Jeśli lista dozwolonych (allowlist) nie jest skonfigurowana, a GATEWAY_ALLOW_ALL_USERS pozostaje nieustawione, każdy użytkownik otrzymuje odmowę dostępu, co jest właściwym punktem wyjścia. Należy wskazać konta, które mają otrzymać dostęp, w ~/.hermes/.env:

TELEGRAM_ALLOWED_USERS=123456789
GATEWAY_ALLOWED_USERS=123456789

Można również włączyć parowanie oparte na kodzie zamiast wklejania identyfikatorów numerycznych, ustawiając unauthorized_dm_behavior: pair w ~/.hermes/config.yaml. Nieznane konto, które wyśle wiadomość do agenta, otrzyma ośmioznakowy kod i żadne inne działanie nie zostanie podjęte do momentu jego zatwierdzenia:

hermes pairing list
hermes pairing approve telegram ABC12DEF
hermes pairing revoke telegram 123456789

Kody wygasają po godzinie, użytkownik może żądać nowego kodu co dziesięć minut, a pięć nieudanych prób powoduje zablokowanie danego konta.

Ograniczanie skutków kradzieży telefonu

Telefon, który ma dostęp do agenta, może wykonywać polecenia na serwerze, a telefony bywają gubione. Należy już teraz ustalić, jakie uprawnienia posiada osoba, która wejdzie w jego posiadanie.

Pozostaw włączone zatwierdzanie poleceń. approvals.mode domyślnie ustawia smart, co zleca pomocniczemu modelowi ocenę ryzyka i automatyczne zatwierdzanie tylko poleceń o niskim stopniu zagrożenia. Ustawienie off jest równoznaczne z uruchamianiem wszystkiego z flagą --yolo, a HERMES_YOLO_MODE=1 wymusza to poprzez zmienne środowiskowe. Nie należy używać telefonu komunikującego się z agentem w takim stanie. Skonfiguruj approvals.cron_mode: deny, aby zaplanowane zadania nie mogły zatwierdzać się automatycznie podczas Twojej nieobecności.

approvals:
  mode: smart
  cron_mode: deny

Ogranicz środowisko, w którym działa agent. terminal.backend: docker uruchamia polecenia w kontenerze, który odrzuca wszystkie uprawnienia Linux capabilities poza krótką listą, ustawia no-new-privileges oraz ogranicza liczbę procesów, dzięki czemu kontener staje się granicą bezpieczeństwa, a nie sam wiersz poleceń. terminal.cwd blokuje katalog roboczy. HERMES_WRITE_SAFE_ROOT ogranicza write_file oraz patch do wskazanych katalogów, a każda próba zapisu poza nimi jest blokowana bez możliwości obejścia przez zatwierdzenie.

export HERMES_WRITE_SAFE_ROOT=/home/you/projects:/home/you/.hermes

Hermes domyślnie blokuje zapis do ~/.ssh, ~/.aws, ~/.kube oraz /etc/sudoers, odmawia zapisu plików .env w dowolnym miejscu na dysku i odrzuca listę destrukcyjnych poleceń niezależnie od ustawień zatwierdzania. Traktuj to jako absolutne minimum, a nie jako plan bezpieczeństwa. Uruchamiaj agenta jako zwykły użytkownik, nigdy jako root. To samo rozumowanie dotyczy każdego agenta programistycznego pozostawionego bez nadzoru, a bezpieczne uruchamianie Claude Code na VPS omawia to zagadnienie bardziej szczegółowo.

Przygotuj procedurę unieważnienia dostępu, zanim będzie potrzebna. Usunięcie urządzenia w konsoli administracyjnej Tailscale natychmiast przerywa dostęp do sieci mesh. Zmiana HERMES_DASHBOARD_BASIC_AUTH_SECRET i restart unieważniają wszystkie sesje panelu na każdym urządzeniu, ponieważ ta wartość służy do podpisywania plików cookie sesji. Usunięcie klucza publicznego telefonu z ~/.ssh/authorized_keys kończy dostęp SSH. hermes pairing revoke telegram <user-id> usuwa konto komunikatora. Jeśli urządzenie posiadało dostęp do kluczy dostawcy, usuń je za pomocą hermes auth logout <provider> i wygeneruj nowe u dostawcy.

Weryfikuj wyniki, zamiast zakładać ich poprawność. Poniższe polecenia należy uruchomić na własnej maszynie, a ich wynik zależy od konfiguracji:

tailscale status
hermes pairing list
hermes logs gateway -n 100
hermes status --deep

Dzienniki znajdują się w ~/.hermes/logs/. Przeglądaj je po wystąpieniu incydentu oraz okresowo, nawet gdy nie odnotowano żadnych problemów.

FAQ

Czy istnieje oficjalna aplikacja mobilna Hermes na systemy iOS lub Android?

Nie. Repozytorium Hermes dostarcza interfejs wiersza poleceń, panel webowy oraz desktopowego klienta Electron dla systemów macOS, Windows i Linux. Nie ma oficjalnej wersji na systemy iOS ani Android. Z poziomu telefonu należy korzystać z panelu webowego w przeglądarce, klienta SSH lub platformy komunikacyjnej połączonej przez hermes gateway. Istnieją klienci mobilni firm trzecich, jednak jest to oprogramowanie zewnętrzne, które przechowuje dane uwierzytelniające do Twojego agenta, dlatego przed instalacją należy zapoznać się z kodem źródłowym.

Dlaczego panel Hermes wylogowuje mnie na telefonie?

Tokeny dostępu mają czas życia (TTL) wynoszący 15 minut, a obecny kontrakt API nie przewiduje tokenów odświeżania. Po wygaśnięciu tokena strona otrzymuje błąd 401 i przekierowuje do /login. Przeniesienie przeglądarki w telefonie do tła sprawia, że jest to odczuwalne, ponieważ dwadzieścia minut w innej aplikacji wystarczy do przekroczenia tego czasu. Ustaw HERMES_DASHBOARD_BASIC_AUTH_SECRET na stabilną, losową wartość, aby klucz podpisywania sesji pozostawał niezmienny po restartach, co eliminuje drugą przyczynę wylogowywania.

Czy mogę bezpiecznie udostępnić panel Hermes w publicznym Internecie?

Tylko z uwierzytelnianiem, które samodzielnie zweryfikowano. Mechanizm autoryzacji aktywuje się w zależności od adresu powiązania (bind address), więc panel powiązany z 127.0.0.1 za reverse proxy nigdy nie będzie wymagał logowania z Internetu. Uruchom curl -s https://your-host/api/status | jq '.auth_required' i sprawdź wynik. Użyj OAuth lub OIDC zamiast nazwy użytkownika i hasła, ponieważ dokumentacja projektu wskazuje, że dostawca haseł jest przeznaczony dla zaufanych sieci i VPN. Prywatna sieć typu mesh całkowicie eliminuje ten problem, dlatego jest to zalecane rozwiązanie domyślne.

Czy potrzebuję konta Tailscale, czy mogę samodzielnie hostować płaszczyznę sterowania?

Możesz ją hostować samodzielnie. Headscale to otwarta implementacja serwera koordynacyjnego Tailscale, a oficjalni klienci Tailscale łączą się z nim za pomocą tailscale up --login-server https://headscale.example.com. Wówczas samodzielnie zarządzasz listą urządzeń dopuszczonych do sieci mesh. Kosztem tego rozwiązania jest konieczność utrzymywania i tworzenia kopii zapasowych tego serwera; w przypadku jego awarii nie można rejestrować ani ponownie uwierzytelniać urządzeń.

Jak otrzymywać powiadomienia na telefon po zakończeniu zadania przez agenta?

Użyj bramki komunikacyjnej. Panel oraz SSH nie mają możliwości wybudzenia telefonu, ponieważ na urządzeniu nie ma aplikacji Hermes, która mogłaby odebrać powiadomienie push. Połącz agenta z Telegram, Signal, Discord lub inną wspieraną platformą za pomocą hermes gateway setup, a następnie pozwól aplikacji danej platformy dostarczyć powiadomienie. Zadanie cron może również wysłać pojedynczą wiadomość za pomocą hermes send -t telegram -s "Job done" -f /path/to/report.txt, co zostanie zrealizowane bez wywoływania modelu.