# Heeler
Heeler is an agent console: a native dashboard of every coding agent running on your machines, sorted by who needs you. Open an Agent to read and steer its live terminal, draft with the full iOS keyboard in a native Composer, and Send the complete message once — all over plain SSH.
| Agent Console | Live terminal | Chat |
|---|---|---|
![]() |
![]() |
![]() |
| Keyboard | Changes | Terminals |
|---|---|---|
![]() |
![]() |
![]() |
| Skills | Hosts | Live Activity |
|---|---|---|
![]() |
![]() |
![]() |
| Usage | Widgets | Lock Screen widgets |
|---|---|---|
![]() |
![]() |
![]() |
On macOS and Linux Hosts, Heeler speaks herdr's JSON API over SSH: each request opens a
direct-streamlocal channel onto herdr.sock, one long-lived channel carries
the event stream, and interactive terminals run herdr agent attach
--takeover on an SSH PTY. The only prerequisites are SSH access and a
running herdr — no server changes, no extra packages. The SSH server must
allow stream-local forwarding (the OpenSSH default); onboarding calls it out
when it's disabled. On Fedora, RHEL, and their derivatives, SELinux can deny the
socket open even when forwarding is allowed — see SELinux on a Fedora or RHEL
Host.
Native Windows Hosts (herdr >= 0.9.3) connect over SSH and are added manually.
For Tailscale, ZeroTier, or EasyTier access, follow the Overlay Network setup guides. They cover macOS installation, Tailscale without a VPN on the Mac, Heeler configuration, and connection checks. Heeler joins these networks inside the app without an iOS VPN configuration; you need a Heeler version with Settings > Overlay Networks.
View the Heeler setup screenshots for Tailscale, ZeroTier, and both EasyTier modes.
Unroutable machines can sit behind an SSH Jump Host:
A Host can have several routes, such as its LAN address at home and an overlay network or Jump Host elsewhere: Reach a Host on several routes.
Install Heeler from the App Store or TestFlight.
On a macOS or Linux machine running herdr (Node >= 20, herdr >= 0.7.5, OpenSSH server on — macOS: System Settings > General > Sharing > Remote Login):
herdr plugin install ZingerLittleBee/Heeler --ref plugin --yes
herdr plugin action invoke heeler.pair
Scan the Pairing Code QR it shows and the machine is added as a Host — the code carries the addresses, the host key fingerprint, and SSH key enrollment. The same plugin delivers the encrypted notifications once you enable them for the Host in the app. For every step, the popup's keys, and troubleshooting, see the pairing guide.
Another app can open an Agent in Heeler with a link:
heeler://agent?host=my-mac&session=work&pane=w1%3Ap1
host names a saved Host on that session: its address, or its name when
no Host on the session has that address. Case is ignored.session is the herdr session name. Leave it out, or pass default, for
the default session.pane is herdr's pane id. Leave it out to open the Console.Percent-encode each value, with %20 for a space: a + stays a plus sign,
so form encoding (such as JavaScript's URLSearchParams) misses a name like
Build Box. When no saved Host on that session matches, or more than one
does, the link opens the Console.
Packages/HeelerSSH (libssh2 + OpenSSL) for SSHSee docs/adr/ for why — the transport story in particular is not obvious.
Issues and PRs are welcome — see CONTRIBUTING.md for layout, build/test, and conventions.
Released on the App Store. It is not yet available in every country or region; where it is missing, the TestFlight build stays available. Built for personal use first and shaped by daily driving, so expect rough edges and fast iteration. Not affiliated with the herdr project.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|