{"slug": "heeler-open-source-ios-app-for-herdr", "title": "Heeler: Open-Source iOS App for Herdr", "summary": "Heeler, an open-source native iOS app for the herdr coding-agent manager, launched on the App Store and TestFlight, letting users monitor and steer coding agents running on macOS, Linux, and native Windows hosts over plain SSH. The app renders each agent's live terminal via libghostty, supports drafting with the full iOS keyboard, stages attachments up to 64 MiB over SFTP, and delivers end-to-end encrypted push notifications and Live Activities when an agent goes Blocked or Done. It requires herdr 0.7.5 or later on macOS/Linux (Node >= 20) and herdr 0.9.3 or later on native Windows, with no server changes or extra packages.", "body_md": "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.\n\n| Agent Console | Direct Input + Terminal keyboard | Live terminal | \n|---|---|---|\n\n| Changes | File diff | Terminals | \n|---|---|---|\n\n| Skills | Hosts | Live Activity | \n|---|---|---|\n\n- **Console** — every Agent on every machine in one status-sorted list\n(Blocked first), filterable by Host, updated live.\n- **Attach** — the Agent's real terminal rendered by libghostty: native\nscrollback, momentum touch scrolling that also drives full-screen TUIs,\nlong-press selection, takeover of a stale terminal owner, and quietly\ncollected web links to open later.\n- **Composer** — draft locally with the full iOS keyboard (autocorrect, IME,\ndictation), then Send once; the tools keyboard adds Agent control keys,\nAgent Skills, reusable Snippets, and terminal appearance.\n- **Terminal** — open a plain shell in the Agent's directory, with Text and\nKeys modes and one reused tab per Workspace.\n- **Attachments** — stage a photo or a file up to 64 MiB onto the Host over\nSFTP and insert its path into the draft.\n- **QR pairing** — scan a Pairing Code to add a machine; keys are generated\non device, private keys stay in the Keychain, and the code pins the host\nkey fingerprint.\n- **Notifications + Live Activities** — end-to-end encrypted pushes when an\nAgent goes Blocked or Done, and a lock-screen / Dynamic Island banner\ntracking Agents in real time; the relay can never read the content\n([PRIVACY.md](https://github.com/ZingerLittleBee/Heeler/blob/main/PRIVACY.md) ).\n- **Worktrees** — start an Agent on a clean checkout of the workspace's repo.\n- **Appearance** — System, Light, or Dark; 30 terminal themes with separate\nLight and Dark slots; bundled JetBrains Mono and IBM Plex Mono; pinch to\nzoom.\n- **Jump Host** — reach unroutable machines through an SSH jump, with keys\nverified at both hops.\n\nOn macOS and Linux Hosts, Heeler speaks herdr's JSON API over SSH: each request opens a\ndirect-streamlocal channel onto `herdr.sock`, one long-lived channel carries\nthe event stream, and interactive terminals run `herdr agent attach --takeover` on an SSH PTY. The only prerequisites are SSH access and a\nrunning herdr — no server changes, no extra packages. The SSH server must\nallow stream-local forwarding (the OpenSSH default); onboarding calls it out\nwhen it's disabled.\n\nNative Windows Hosts (herdr >= 0.9.3) connect over SSH and are added manually.\n\nUnroutable machines can sit behind an SSH Jump Host:\n\nInstall Heeler from the [App Store](https://apps.apple.com/us/app/heeler-for-herdr/id6797263135)\nor [TestFlight](https://testflight.apple.com/join/aXSxRn4r).\n\n- **macOS / Linux:** Install[herdr](https://herdr.dev/docs/install/) , enable SSH,\nthen follow the pairing steps below.\n- **Native Windows:** Follow the[Windows setup guide](https://github.com/ZingerLittleBee/Heeler/blob/main/docs/guides/windows-setup.md) .\n\nOn a macOS or Linux machine running herdr (Node >= 20, herdr >= 0.7.5, OpenSSH server on —\nmacOS: **System Settings > General > Sharing > Remote Login**):\n\n```\nherdr plugin install ZingerLittleBee/Heeler/plugin --ref main --yes\nherdr plugin action invoke heeler.pair\n```\n\nScan the Pairing Code QR it shows and the machine is added as a Host — the\ncode carries the addresses, the host key fingerprint, and SSH key enrollment.\nThe same [plugin](https://github.com/ZingerLittleBee/Heeler/blob/main/plugin/README.md) delivers the encrypted notifications once\nyou enable them for the Host in the app.\n\nAnother app can open an Agent in Heeler with a link:\n\n```\nheeler://agent?host=my-mac&session=work&pane=w1%3Ap1\n```\n\n- `host` names a saved Host on that session: its address, or its name when\nno Host on the session has that address. Case is ignored.\n- `session` is the herdr session name. Leave it out, or pass`default` , for\nthe default session.\n- `pane` is herdr's pane id. Leave it out to open the Console.\n\nPercent-encode each value, with `%20` for a space: a `+` stays a plus sign,\nso form encoding (such as JavaScript's `URLSearchParams`) misses a name like\n`Build Box`. When no saved Host on that session matches, or more than one\ndoes, the link opens the Console.\n\n- SwiftUI, iOS 18+, iPhone and iPad. iPad support is restored in 0.1.8 with Magic Keyboard shortcuts, multiwindow, and drag and drop.\n- The repository-local `Packages/HeelerSSH` (libssh2 + OpenSSL) for SSH\n- [libghostty-spm](https://github.com/lakr233/libghostty-spm) for terminal emulation and Metal rendering\n\nSee `docs/adr/` for why — the transport story in particular is not obvious.\n\nIssues and PRs are welcome — see [CONTRIBUTING.md](https://github.com/ZingerLittleBee/Heeler/blob/main/CONTRIBUTING.md) for\nlayout, build/test, and conventions.\n\nReleased on the [App Store](https://apps.apple.com/us/app/heeler-for-herdr/id6797263135).\nIt is not yet available in every country or region; where it is missing, the\n[TestFlight](https://testflight.apple.com/join/aXSxRn4r) build stays available.\nBuilt for personal use first and shaped by daily driving, so expect rough edges and\nfast iteration. Not affiliated with the herdr project.", "url": "https://wpnews.pro/news/heeler-open-source-ios-app-for-herdr", "canonical_source": "https://github.com/ZingerLittleBee/Heeler", "published_at": "2026-10-09 16:02:31+00:00", "updated_at": "2026-10-09 16:24:45.178286+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Heeler", "herdr", "libghostty", "App Store", "TestFlight", "ZingerLittleBee", "OpenSSH", "JetBrains Mono"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/heeler-open-source-ios-app-for-herdr", "markdown": "https://wpnews.pro/news/heeler-open-source-ios-app-for-herdr.md", "text": "https://wpnews.pro/news/heeler-open-source-ios-app-for-herdr.txt", "jsonld": "https://wpnews.pro/news/heeler-open-source-ios-app-for-herdr.jsonld"}}