~/.config/herdr%APPDATA%\herdr
Przewodnik herdr
Od instalacji na macOS albo Windows, przez konfigurację pod Claude Code i Codex, po stały serwer na VPS, z którym łączysz się z komputera albo telefonu. Krok po kroku, z gotowymi komendami.
Start
Jak działa herdr
herdr to menedżer terminali dla agentów AI, podobny do tmux. Działa jako serwer w tle, więc panele i agenci pracują dalej, gdy zamkniesz okno. Do tego rozpoznaje agentów w panelach i pokazuje ich stan w panelu bocznym. Działa na macOS, Linuksie i Windows.
Od zwykłego terminala do herdr
Agent w zwykłym terminalu. Otwierasz terminal, uruchamiasz
claudei pracujesz. Działa to tak długo, jak otwarte jest okno: zamkniesz je albo zerwie się połączenie SSH, a agent kończy pracę razem z nim. Przy kilku agentach masz kilka okien i klikasz po kolei, żeby sprawdzić, który na ciebie czeka.tmux. Sesja należy do serwera tmux, a nie do okna, więc okno możesz zamknąć, a agent pracuje dalej. Dostajesz też panele i karty. Tylko że tmux widzi w panelach sam tekst: dla niego Claude to jeszcze jeden program i nie wie, czy pracuje, czy czeka na twoją zgodę.
herdr. Robi to samo co tmux, a do tego rozpoznaje agentów w panelach i pokazuje ich stan w pasku bocznym. Obsługujesz go myszką, a agenci mogą nim sterować przez komendy
herdr. Panele trzyma serwer działający w tle, a okno terminala jest tylko widokiem na nie.
| Zwykły terminal | tmux | herdr | |
|---|---|---|---|
| Agent działa po zamknięciu okna | Nie | Tak | Tak |
| Panele i karty | Zależy od terminala | Tak | Tak |
| Widać, który agent czeka | Nie | Nie | Tak |
| Obsługa myszą od pierwszej minuty | Częściowo | Słabo | Tak |
| Agent może uruchomić innego agenta | Nie | Ręcznie, przez skrypty | Wbudowane |
| Pojęcie | Co to jest |
|---|---|
| Sesja | Serwer w tle. Polecenie herdr łączy się z sesją domyślną albo ją uruchamia. |
| Workspace | Kontener na jeden projekt albo zadanie. Zasada: jeden projekt, jeden workspace. |
| Karta | Układ paneli w workspace, np. agents, logs, server. |
| Panel | Prawdziwy terminal. Dzielisz go w prawo albo w dół. Przetrwa odłączenie. |
| Agent | Rozpoznany program w panelu: Claude Code, Codex, Pi i inne. |
Stany agenta w panelu bocznym
Start
Instalacja
Zainstaluj herdr w Terminalu albo iTerm2. Plik trafia do
~/.local/bin/herdr. Możesz też użyćbrew install herdr.Terminalcurl -fsSL https://herdr.dev/install.sh | shSprawdź wersję. Jeśli system nie znajduje polecenia, otwórz terminal ponownie.
herdr --versionUruchom w katalogu projektu. Przy pierwszym starcie przejdziesz onboarding: motyw, powiadomienia i integracje agentów.
cd ~/Developer/moj-projekt herdrAktualizacje robisz jedną komendą. Działające panele zostają. Przy instalacji z Homebrew aktualizujesz przez
brew upgrade herdr.herdr update
Zainstaluj Windows Terminal, jeśli go nie masz (w Windows 11 jest wbudowany). Na nim herdr jest testowany, a stary wiersz poleceń konsoli działa gorzej.
PowerShellwinget install Microsoft.WindowsTerminalZainstaluj herdr w PowerShellu. Instalator dopisuje herdr do PATH.
PowerShellpowershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"Jeśli antywirus albo polityka firmy zablokuje to polecenie, użyj wersji dla wiersza poleceń (cmd):
cmdcurl.exe -fsSLo install.cmd https://herdr.dev/install.cmd && install.cmd && del install.cmdOtwórz nowe okno terminala i sprawdź wersję.
herdr --versionUruchom w katalogu projektu. Przy pierwszym starcie przejdziesz onboarding.
cd $HOME\Projects\moj-projekt herdrAktualizacje robisz jedną komendą. Nowe instalacje są na kanale stable. Jeśli kiedyś instalowałeś wersję preview, przełącz się poleceniem
herdr channel set stable.herdr update
Pobierając herdr-windows-x86_64.zip z GitHuba, rozpakuj cały katalog. Obok herdr.exe leży środowisko ConPTY, bez którego herdr nie działa poprawnie.
Start
Pierwsze kroki
Uruchom agenta w panelu:
claudealbocodex. herdr sam go wykryje i pokaże jego stan w panelu bocznym.Podziel ekran: ctrl+b v w prawo, ctrl+b - w dół. W drugim panelu uruchom testy albo serwer.
Używaj myszy. Kliknięcie przenosi do panelu, przeciągnięcie krawędzi zmienia rozmiar, prawy przycisk otwiera menu, a zaznaczenie tekstu kopiuje go.
Wklejanie w Windows Terminal: ctrl+shift+v. shift + prawy przycisk włącza wklejanie samego terminala.
Odłącz się przez ctrl+b q albo zamknij okno terminala. Agenci pracują dalej. Wracasz poleceniem
herdr.
herdr server stop zamyka wszystkie panele i agentów. Po ponownym starcie wraca układ, a agenci z integracją wznawiają swoje rozmowy.
Start
Skróty 80/20
Na macOS i Windows skróty są takie same. Każdy zaczyna się od prefiksu: naciśnij ctrl+b, puść, potem klawisz akcji. Na macOS to klawisz Control, nie Command.
Najważniejsze
| Skrót | Co robi |
|---|---|
| ctrl+b g | Lista wszystkich agentów i terminali. b pokazuje tylko te, które czekają na ciebie, / szuka, Enter przenosi |
| ctrl+b o | Przenosi do agenta, który właśnie wysłał powiadomienie |
| ctrl+b w | Przełącza workspace, także te z VPS |
| ctrl+b v / - | Dzieli panel w prawo / w dół |
| ctrl+b z | Powiększa panel na cały ekran i z powrotem |
Karty, panele i tekst
| Skrót | Co robi |
|---|---|
| ctrl+b c | Nowa karta |
| ctrl+b 1…9 | Przejście do karty o tym numerze |
| ctrl+b h j k l | Przejście do panelu w lewo / dół / górę / prawo |
| ctrl+b x | Zamyka panel |
| ctrl+b shift+x | Zamyka kartę |
| ctrl+b shift+n | Nowy workspace |
| ctrl+b f | File viewer z diffami (wymaga wtyczki) |
| ctrl+b [ | Tryb kopiowania: / szuka, v zaznacza, y kopiuje |
| ctrl+b q | Odłącza od herdr |
| ctrl+b ? | Lista wszystkich aktywnych skrótów |
Konfiguracja
Plik config.toml
Konfiguracja jest w pliku ~/.config/herdr/config.toml%APPDATA%\herdr\config.toml. Dokładną ścieżkę pokazuje herdr --help. herdr działa bez tego pliku, a błędna wartość nie psuje startu: herdr bierze wartość domyślną i pokazuje ostrzeżenie.
mkdir -p ~/.config/herdr
open -e ~/.config/herdr/config.tomlNew-Item -ItemType Directory -Force "$env:APPDATA\herdr" | Out-Null
notepad "$env:APPDATA\herdr\config.toml"- Pełna konfiguracja domyślna z opisami:
herdr --default-config - Wczytanie zmian bez restartu:
herdr server reload-configalbo ctrl+b shift+r - Przed większą zmianą zrób kopię pliku
Sprawdzona konfiguracja startowa
onboarding = false
[theme]
name = "nord"
[ui]
# agenci wg pilności: blocked → working → done → idle
agent_panel_sort = "priority"
# kształty zamiast samych kolorowych kropek
status_indicators = "symbols"
# nazwa agenta na krawędzi panelu
show_agent_labels_on_pane_borders = true
[ui.toast]
delivery = "system" # powiadomienia systemoweSkrót do wtyczki file viewer dopisujesz po jej instalacji, zob. Wtyczki.
Konfiguracja
Kolory i motywy
Motyw ustawiasz w sekcji [theme]. Wbudowane motywy:
terminal bierze kolory z profilu twojego terminala (iTerm2, Terminal, GhosttyWindows Terminal, WezTerm, Alacritty).
Automatyczny jasny i ciemny tryb
herdr przełącza motyw razem z jasnym lub ciemnym wyglądem terminala.
[theme]
auto_switch = true
dark_name = "catppuccin"
light_name = "catppuccin-latte"Własne kolory na bazie motywu
W [theme.custom] nadpisujesz pojedyncze kolory. Działa zapis hex, nazwy kolorów i rgb(r,g,b). Dostępne pola: sidebar_bg, active_row_bg, selection_bg, panel_bg, accent, text, red, green, blue, yellow.
[theme.custom]
accent = "#88c0d0"
sidebar_bg = "#2e3440"
panel_bg = "reset" # tło paneli = tło terminala
# osobne nadpisania dla trybów, gdy auto_switch = true
[theme.custom.light]
panel_bg = "#eceff4"Konfiguracja
Powiadomienia i dźwięk
Dźwięk gra domyślnie, gdy agent w tle skończy pracę albo czeka na ciebie. Dymki ustawiasz w [ui.toast]:
| delivery | Kiedy wybrać |
|---|---|
system | Powiadomienia systemu (macOS albo Windows). Najlepsze lokalnie |
herdr | Dymek w rogu okna herdr. Dobre na serwerze bez pulpitu |
terminal | Powiadomienie wyświetla terminal. Działa też przez SSH |
off | Bez dymków, sam dźwięk |
Zainstaluj terminal-notifier. Bez niego powiadomienia przychodzą jako „Script Editor” i kliknięcie w nie nie przenosi do terminala.
brew install terminal-notifierDaj zgodę na powiadomienia: Ustawienia systemowe → Powiadomienia → terminal-notifier. Jeśli go tam nie ma, wyślij jedno powiadomienie testowe:
terminal-notifier -title herdr -message test
Nic nie instalujesz. Powiadomienia systemowe i dźwięki mp3 działają w Windows od razu.
Sprawdź zgodę: Ustawienia → System → Powiadomienia. Muszą być włączone dla terminala. Wyłącz też tryb „Nie przeszkadzać”, jeśli chcesz je widzieć w trakcie pracy.
Kliknięcie w powiadomienie przenosi do panelu agenta, o ile okno herdr jest otwarte.
Własne dźwięki (mp3) ustawiasz kluczami [ui.sound] done_path i request_path.
Konfiguracja
Terminal i klawiatura
Claude Code używa ctrl+b do przenoszenia uruchomionego polecenia w tło. Przy domyślnym prefiksie herdr przejmuje ten skrót. Jeśli często z niego korzystasz, zmień prefiks, np. prefix = "ctrl+a" w [keys].
macOS: iTerm2, Terminal, Ghostty
- Skróty z samym alt (Option) nie działają przy domyślnym ustawieniu Option = Normal. Zamiast tego terminal wpisuje znaki specjalne.
- ctrl+alt działa zawsze. Tak budujesz skróty bez prefiksu.
- Jeśli skrót nic nie robi, przechwytuje go macOS albo terminal. Zwolnij go tam albo wybierz inny.
Windows: Windows Terminal
- Polska klawiatura: ctrl+alt to AltGr. ctrl+alt+a wpisuje „ą”, +c „ć”, +e „ę”, +l „ł”, +n „ń”, +o „ó”, +s „ś”, +x „ź”, +z „ż”. Do skrótów bez prefiksu używaj tylko innych liter albo zostań przy prefiksie.
- Wklejanie: ctrl+shift+v. Kopiowanie przez zaznaczenie myszą.
- Migający albo skaczący kursor przy szybkim wypisywaniu to ograniczenie ConPTY w Windows. Jeśli okno podpowiedzi przy pisaniu pojawia się w złym miejscu, ustaw
host_cursor = "native"w[ui]. - PowerShell: po
cdherdr nie zawsze widzi nowy katalog. Nowe panele mogą wtedy otwierać się w starym miejscu. - herdr uruchomiony jako administrator odrzuca zwykłe okna terminala. Uruchamiaj go normalnie.
Opcjonalnie: skróty bez prefiksu
[keys]
focus_pane_left = ["prefix+h", "ctrl+alt+h"]
focus_pane_down = ["prefix+j", "ctrl+alt+j"]
focus_pane_up = ["prefix+k", "ctrl+alt+k"]
focus_pane_right = ["prefix+l", "ctrl+alt+l"]
split_vertical = ["prefix+v", "ctrl+alt+d"]
new_tab = ["prefix+c", "ctrl+alt+c"]
zoom = ["prefix+z", "ctrl+alt+z"][keys]
focus_pane_left = ["prefix+h", "ctrl+alt+h"]
focus_pane_down = ["prefix+j", "ctrl+alt+j"]
focus_pane_up = ["prefix+k", "ctrl+alt+k"]
split_vertical = ["prefix+v", "ctrl+alt+d"]
new_tab = ["prefix+c", "ctrl+alt+t"]
zoom = ["prefix+z", "ctrl+alt+m"]Konfiguracja
Wtyczki
Wtyczki są na GitHubie pod tagiem herdr-plugin. herdr ich nie sprawdza ani nie izoluje: działają z twoimi uprawnieniami. Zanim zainstalujesz wtyczkę, przeczytaj jej herdr-plugin.toml i skrypty, a instalację przypnij do commita, który przeczytałeś.
Działają, ale bez gwarancji. Wiele wtyczek ma tylko skrypty sh/Bash i nie zadziała. Sprawdź w herdr-plugin.toml, czy wtyczka ma akcje z platforms = ["windows"].
File viewer: drzewo plików i diffy
Programy do podglądu: diffy (delta), kod (bat) i markdown (glow).
brew install git-delta bat glowPowerShellwinget install dandavison.delta sharkdp.bat charmbracelet.glowInstalacja przypięta do przejrzanego commita.
herdr plugin install smarzban/herdr-file-viewer --ref <commit>Dopisz skróty do
config.toml, potemherdr server reload-config. Na Windows wtyczka ma osobne akcje z końcówką-windows.config.toml (macOS)[[keys.command]] key = "prefix+f" type = "plugin_action" command = "herdr-file-viewer.open-file-viewer" description = "file viewer (split)" [[keys.command]] key = "prefix+shift+f" type = "plugin_action" command = "herdr-file-viewer.open-file-viewer-tab" description = "file viewer (tab)"config.toml (Windows)[[keys.command]] key = "prefix+f" type = "plugin_action" command = "herdr-file-viewer.open-file-viewer-windows" description = "file viewer (split)" [[keys.command]] key = "prefix+shift+f" type = "plugin_action" command = "herdr-file-viewer.open-file-viewer-tab-windows" description = "file viewer (tab)"
herdr plugin list
herdr plugin action list --plugin herdr-file-viewer
herdr plugin updateClaude i agenci
Integracje agentów
Integracja to hook w ustawieniach agenta. Dzięki niej herdr dokładnie zna stan agenta i po restarcie serwera wznawia jego rozmowę.
herdr integration install claude
herdr integration install codex
herdr integration statusNa Windows integracje obsługują węższą grupę agentów niż na macOS: m.in. Claude Code, Codex, Pi i OpenCode.
Jeśli agent pokazuje zły stan albo nie jest wykryty, sprawdź herdr agent list, a potem herdr agent explain <panel> --json.
Claude i agenci
Skill herdr dla Claude
Oficjalny skill uczy Claude komend herdr: dzielenia paneli, uruchamiania innych agentów, czytania ich wyników i czekania na zmiany stanu. Działa tylko wtedy, gdy Claude pracuje w panelu herdr (zmienna HERDR_ENV=1).
Zainstaluj skill z binarki herdr. Bez pobierania z internetu, zawsze w wersji zgodnej z twoim herdr.
Terminalmkdir -p ~/.claude/skills/herdr herdr --skill > ~/.claude/skills/herdr/SKILL.mdPowerShell (zapis w UTF-8 bez BOM)New-Item -ItemType Directory -Force "$HOME\.claude\skills\herdr" | Out-Null [IO.File]::WriteAllLines("$HOME\.claude\skills\herdr\SKILL.md", (herdr --skill))Po każdym
herdr updatepowtórz drugą linię, żeby skill pasował do nowej wersji.Wywołuj go wprost. Skill włącza się, gdy w prośbie pada słowo „herdr”. Przykłady znajdziesz w sekcji Gotowe prompty.
Claude i agenci
Zasady w CLAUDE.md
Skill mówi Claude, jakich komend użyć, a te zasady mówią, jak to robić porządnie. Wklej je do globalnego pliku ~/.claude/CLAUDE.md%USERPROFILE%\.claude\CLAUDE.md (wszystkie projekty) albo do CLAUDE.md w konkretnym repozytorium.
## herdr — praca w panelach (gdy HERDR_ENV=1)
Szczegóły komend: skill `herdr`. Te zasady mówią, JAK z nich korzystać.
**Nazewnictwo**
- Każdy uruchamiany agent dostaje nazwę roli: `herdr agent start <rola> --kind claude|codex --pane <id>`.
Role: `impl-<zadanie>`, `review`, `test`, `codex-review`, małymi literami.
- Panel z procesem bez agenta (serwer, testy, logi) podpisz: `herdr pane rename <pane_id> "dev server"`.
- Nowa karta = jeden etap pracy, od razu nazwana: `herdr tab rename <tab_id> "etap 2"`.
**Układ**
- Pracuj w bieżącej karcie i katalogu. Nowy workspace, kartę lub worktree tylko na moją prośbę
albo gdy zadania równolegle dotykają tych samych plików.
- Szeroki panel dziel w prawo, wąski w dół. Maksymalnie 3–4 panele w karcie.
- Zawsze `--no-focus`: nie zabieraj mi fokusu.
- ID bierz z JSON-a odpowiedzi, nigdy nie zgaduj.
**Koordynacja**
- Prompt z `--wait --timeout <ms>`, wynik czytaj: `herdr agent read <nazwa> --source recent-unwrapped`.
- `blocked` = agent pyta o zgodę: pokaż mi pytanie, nie odpowiadaj za mnie.
- Timeout nie oznacza, że prompt nie doszedł: najpierw przeczytaj panel, potem ponawiaj.
- Po długim zadaniu: `herdr notification show "<tytuł>" --body "<co dalej>" --sound done`.
**Sprzątanie**
- Zamykaj tylko panele i karty, które sam utworzyłeś, po zakończeniu ich pracy. Moich nigdy.
- Nie uruchamiaj `herdr server stop` i nie ubijaj procesu herdr.Ustaw show_agent_labels_on_pane_borders = true w [ui]. Nazwy ról, takie jak review czy impl-auth, pojawią się wtedy na krawędziach paneli.
Claude i agenci
Gotowe prompty
Wpisujesz je w Claude Code uruchomionym w panelu herdr. Słowo „herdr” w prośbie włącza skill. Działają tak samo na macOS i Windows.
codex-review i poproś go o recenzję bieżącego diffa. Pokaż mi tylko konkretne uwagi.impl-api, impl-ui), a po skończeniu daj ich zmiany do recenzji agentowi review.~/projects/<repo> agenta Claude nazwanego nocna-zmiana z zadaniem z pliku TODO.md i wyślij mi powiadomienie, gdy skończy.VPS i zdalnie
Wdrożenie na VPS
Na VPS-ie z Linuksem herdr działa 24/7, więc agenci pracują nawet przy wyłączonym komputerze. Łączysz się z nim z macOS, Windows albo telefonu. Działające sesje nie przenoszą się z komputera: na serwerze stawiasz herdr od nowa i klonujesz repozytoria.
herdr działa jako proces użytkownika dev pod kontrolą systemd. Nie zobaczysz go w docker ps ani w panelu Dockera. Agenci w kontenerze nie mieliby dostępu do twoich repozytoriów i narzędzi.
Najszybciej: jeden prompt dla Claude
Wklej ten prompt do Claude Code na swoim komputerze. Claude znajdzie VPS przez Hostinger MCP, dobierze komendy do twojego systemu i przeprowadzi całe wdrożenie. O hasła i logowania poprosi ciebie, a przed każdą ryzykowną zmianą zapyta o zgodę.
Potrzebujesz: Claude Code z podłączonym Hostinger MCP (plugin hostinger) albo, bez MCP, adresu IP serwera. Na samym komputerze herdr musi być już zainstalowany.
Wdróż herdr na moim VPS-ie, żebym mógł łączyć się z nim z lokalnego herdr.
VPS znajdź przez Hostinger MCP (bez MCP zapytaj mnie o adres).
Dopasuj komendy do mojego systemu. Mów krótko, po polsku.
1. Rozpoznanie (tylko odczyt): co działa na serwerze, czy ktoś loguje się hasłem.
Nie ruszaj Dockera ani działających usług.
2. Osobny użytkownik dev bez sudo i bez dostępu do Dockera, logowanie kluczem,
u mnie alias SSH "herdr-vps".
3. Zabezpieczenia: logowanie do SSH tylko kluczem i firewall ufw.
Najpierw pokaż plan i poczekaj na moje "tak".
4. Dla dev: Node LTS, Claude Code, Codex, herdr i integracje herdr dla claude i codex.
5. herdr jako usługa systemd --user, działająca 24/7 także po restarcie serwera,
z konfiguracją jak u mnie lokalnie.
6. Podepnij serwer: herdr machine add herdr-vps --label vps i sprawdź połączenie.
Jako podsumowanie zwróć krótką tabelę, co zrobiłeś i sprawdziłeś, oraz co zostało
dla mnie (logowanie claude i codex na serwerze, dostęp do GitHuba).To jedyne kroki, które mogą odciąć cię od serwera, więc decyzja należy do ciebie. Gdyby coś poszło nie tak, zostaje konsola przeglądarkowa w panelu Hostingera. Szczegóły tych kroków, np. zapasowe połączenie i automatyczne wycofanie ufw, znajdziesz w rozdziale SSH i firewall.
Krok po kroku, ręcznie
Na swoim komputerze wygeneruj klucz dla serwera i wyświetl jego część publiczną.
Terminalssh-keygen -t ed25519 -C "herdr-vps-dev" -f ~/.ssh/id_ed25519_herdr_vps cat ~/.ssh/id_ed25519_herdr_vps.pubPowerShell (OpenSSH jest wbudowany w Windows 10/11)ssh-keygen -t ed25519 -C "herdr-vps-dev" -f "$HOME\.ssh\id_ed25519_herdr_vps" Get-Content "$HOME\.ssh\id_ed25519_herdr_vps.pub"Na serwerze jako root załóż użytkownika
dev, bez sudo i bez grupy docker. Grupa docker to w praktyce dostęp roota.VPS, rootadduser --disabled-password --gecos '' dev install -d -m 700 -o dev -g dev /home/dev/.ssh nano /home/dev/.ssh/authorized_keys # wklej klucz .pub chown dev:dev /home/dev/.ssh/authorized_keys chmod 600 /home/dev/.ssh/authorized_keys loginctl enable-linger dev # usługi dev działają bez logowaniaNa swoim komputerze dodaj alias SSH w pliku
~/.ssh/config%USERPROFILE%\.ssh\configi sprawdź logowanie:ssh herdr-vps..ssh/configHost herdr-vps HostName <adres-IP-VPS> User dev IdentityFile ~/.ssh/id_ed25519_herdr_vps IdentitiesOnly yes ServerAliveInterval 30 ServerAliveCountMax 3Zapis
~/.ssh/...działa też w OpenSSH na Windows. Plik zapisz bez rozszerzenia, nie jakoconfig.txt.Jako
devzainstaluj narzędzia w katalogu domowym. Node bierzesz z oficjalnej paczki LTS z nodejs.org, rozpakowanej do~/.local/node(sprawdź sumę SHA-256).VPS, devecho 'export PATH="$HOME/.local/bin:$HOME/.local/node/bin:$PATH"' >> ~/.bashrc source ~/.bashrc npm config set prefix "$HOME/.local" npm install -g @openai/codex curl -fsSL https://claude.ai/install.sh | bash curl -fsSL https://herdr.dev/install.sh | sh herdr integration install claude herdr integration install codexUruchom herdr jako usługę systemd, żeby wstawał sam po restarcie serwera.
~/.config/systemd/user/herdr.service[Unit] Description=herdr headless server (default session) After=network-online.target [Service] Type=simple WorkingDirectory=%h/projects Environment=PATH=%h/.local/bin:%h/.local/node/bin:/usr/local/bin:/usr/bin:/bin Environment=SHELL=/bin/bash ExecStart=%h/.local/bin/herdr server Restart=on-failure RestartSec=5 [Install] WantedBy=default.targetVPS, devmkdir -p ~/projects systemctl --user daemon-reload systemctl --user enable --now herdr.service systemctl --user status herdr.serviceZaloguj agentów na serwerze:
claude, potemcodex login. Logowanie robisz sam, bo wymaga twoich danych.
Konfiguracja herdr na serwerze
onboarding = false
[theme]
name = "nord"
[terminal]
new_cwd = "~/projects"
[ui]
agent_panel_sort = "priority"
status_indicators = "symbols"
[ui.toast]
delivery = "herdr" # serwer nie ma pulpitu
[experimental]
pane_history = true # zawartość paneli przetrwa restartVPS i zdalnie
SSH i firewall
Agenci z dostępem do powłoki na serwerze z produkcją wymagają porządnie zabezpieczonego wejścia. Zrób te dwa kroki przed pierwszym uruchomieniem agentów. Wszystkie komendy wykonujesz na serwerze, więc są takie same niezależnie od twojego systemu.
Logowanie tylko kluczem
Przed zmianą sprawdź w logach, czy ktoś loguje się hasłem: zgrep "Accepted password" /var/log/auth.log*. Plik z prefiksem 00- wygrywa z ustawieniami cloud-init, bo w sshd liczy się pierwsza znaleziona wartość.
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
PermitEmptyPasswords no
MaxAuthTries 4sshd -t && systemctl reload sshPrzeładowanie sshd nie zrywa otwartych połączeń. Dopóki nie potwierdzisz w nowym oknie, że logowanie kluczem działa, trzymaj stare połączenie otwarte.
ufw z automatycznym wycofaniem
Timer wyłączy ufw po 3 minutach, gdybyś stracił dostęp. Gdy wszystko działa, zatrzymaj go.
systemd-run --unit=ufw-rollback --on-active=180 /usr/sbin/ufw --force disable
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment "SSH (tylko klucze)"
ufw allow 80/tcp comment "HTTP"
ufw allow 443/tcp comment "HTTPS"
ufw allow in on tailscale0 comment "Tailscale" # jeśli używasz
ufw --force enable
# test nowego logowania w osobnym oknie, potem:
systemctl stop ufw-rollback.timerPorty wystawione przez Dockera na 0.0.0.0 są otwarte mimo reguł ufw. Chroń je firewallem w panelu dostawcy albo przypisz w konfiguracji kontenera do 127.0.0.1.
VPS i zdalnie
Agenci a kontenery
Na serwerze działają dwa oddzielne światy. Produkcja żyje w Dockerze roota. herdr i agenci działają jako użytkownik dev, który nie ma dostępu do Dockera.
VPS
├── Docker (root) # produkcja: twoje aplikacje, reverse proxy
└── użytkownik dev # bez sudo, bez grupy docker
├── herdr.service # herdr i agenci
└── ~/projects/<repo> # klony repozytoriów, na nich pracują agenciDlaczego bez dostępu do Dockera
- Grupa
dockerto w praktyce root. Kto może uruchomić kontener, może zamontować cały dysk serwera i zmienić w nim wszystko. - Agent popełnia błędy jak każdy. Źle zrozumiane polecenie albo prompt injection z czytanej strony nie powinny móc zatrzymać produkcji ani skasować bazy.
- Oddzielenie ułatwia sprawdzanie. Każda zmiana przechodzi przez gita, więc widzisz diff, zanim trafi na produkcję.
Na czym pracują agenci
VPS jest dla agentów osobnym środowiskiem pracy, takim jak twój laptop, tylko działającym 24/7. Klonujesz repozytoria do ~/projects, agenci zmieniają kod, uruchamiają testy i wypychają zmiany do gita. Do kontenerów zmiany trafiają tą samą drogą co z laptopa.
Agent pracuje na klonie w
~/projects/<repo>: edytuje, testuje, robi commit na osobnej gałęzi.Wypycha gałąź i otwiera PR. Serwer potrzebuje do tego klucza z dostępem tylko do wybranych repozytoriów.
Wdrożenie idzie twoją zwykłą drogą, np. przez CI po scaleniu PR-a.
Pliki .env i dane z produkcji trzymaj w katalogu produkcyjnym roota, nie w ~/projects. Agent nie potrzebuje produkcyjnych haseł, żeby pisać kod i uruchamiać testy.
VPS i zdalnie
Podpięcie remote
Na swoim komputerze zapisz serwer jako maszynę. Robisz to raz.
Terminalherdr machine add herdr-vps --label vps herdr machine status vpsUruchom
herdrlokalnie. Połączenie z serwerem zestawia się samo w tle, a w panelu bocznym pojawia się sekcja „vps” z jej workspace'ami.Przełączaj się przez ctrl+b w i Enter na workspace z „vps”. Nowe karty i panele powstają wtedy na serwerze.
| Sposób | Kiedy |
|---|---|
herdr machine add | Komputer i VPS w jednym oknie. Działają lokalne skróty, motyw i wklejanie obrazków |
herdr --remote herdr-vps | Tylko sesja z serwera, w lokalnym oknie |
ssh herdr-vps, potem herdr | Telefon albo cudzy komputer. Interfejs dopasowuje się do wąskiego ekranu |
Na Windows herdr korzysta z wbudowanego klienta OpenSSH. Nie współdzieli jednego połączenia jak na macOS, więc pierwsze połączenie po starcie trwa chwilę dłużej. Klucz z hasłem dodaj najpierw do agenta: ssh-add $HOME\.ssh\id_ed25519_herdr_vps (wymaga włączonej usługi „OpenSSH Authentication Agent”).
Gdy maszyna pokazuje „Attention”, uruchom herdr machine status vps, a przy problemie z logowaniem herdr machine reconnect vps.
Pomoc
Na co uważać
| Objaw | Przyczyna i rozwiązanie |
|---|---|
| „plugin not found” przy skrócie | Skrót jest w konfiguracji, ale wtyczka nie jest zainstalowana. Sprawdź herdr plugin list |
| Brak powiadomień | terminal-notifier nie ma zgody. Ustawienia systemowe → Powiadomienia |
| Brak powiadomień | Wyłączone powiadomienia terminala albo włączone „Nie przeszkadzać”. Ustawienia → System → Powiadomienia |
| Skrót nic nie robi | Przechwytuje go macOS albo terminal. Z samym alt nie zadziała, użyj ctrl+alt |
| Skrót wpisuje polską literę | ctrl+alt to AltGr. Wybierz literę bez polskiego znaku albo skrót z prefiksem |
| „herdr” nie jest rozpoznawany | Otwórz nowe okno terminala, żeby wczytał nowy PATH |
| Agent ma stan „unknown” | Brak integracji albo stara wersja: herdr integration status |
| Po restarcie agenci jako zwykłe terminale | Agent nie zgłosił sesji. Wymaga aktualnej integracji |
| Różne wersje herdr na komputerze i VPS-ie | herdr update po obu stronach. Restartu serwera nie potwierdzaj w trakcie pracy agentów |
- Logi:
~/.config/herdr/%APPDATA%\herdr\, plikiherdr-server.logiherdr-client.log - Stan klienta i serwera:
herdr status - Dokumentacja: herdr.dev/docs, osobno herdr na Windows