Skip to content

Releases: Ozymandes/TENDRIL

TENDRIL v0.2.1 — The Edge Is Yours

Choose a tag to compare

@Ozymandes Ozymandes released this 14 Oct 14:11

TENDRIL v0.2.1 — The Edge Is Yours

Interaction + Installation Polish. v0.2.1 is the release where TENDRIL stops feeling like a collection of working pieces and starts behaving like one product. Physically certified end to end on a Galaxy S21 Ultra — including a real uninstall → reinstall cycle and a real in-place production update (RC 169 → 170).

The product contract

install → pair → operate → update

  • Host: tendril install
  • Phone / Termux: tendril install
  • Host: tendril --pair — scan the QR in TENDRIL Link
  • Grant the two Android prompts (notifications, Termux commands) — done.

What's new

  • Pairing v3 — one-shot trust flow: QR enrollment, host-key fingerprint pinning, one-shot SSH enrollment of the phone's key.
  • Zero-config notifications — the host provisions a private ntfy identity during install; the pairing code carries it to the phone. No topics, no manual setup.
  • Permissions at the right moment — Link asks for POST_NOTIFICATIONS and Termux RUN_COMMAND during pairing, then re-probes immediately.
  • tendril install everywhere — one idempotent install/repair command on host and phone; the phone takes its installer from its paired host.
  • Truthful Android package state — absent / installed / older / newer / unknown. A failed probe (transaction errors, INTERACT_ACROSS_USERS denials) is UNKNOWN and never read as installed or absent; a cached APK is never install evidence.
  • Production-signed TENDRIL Link + staged update channel — pinned production signer, manifest/SHA-256/package-identity checks, the lime HOME update indicator, the About update flow, and a physically verified in-place update preserving pairing and data.
  • A more truthful HOME — active-session card, NEEDS YOU first, recently-completed dossier state.
  • Dynamic Capacity discovery — including OpenAI/Codex, with explicit unavailable/stale states.
  • Terminal comfort — native touch scrolling for Herdr in Termux, plus a guaranteed keyboard-recovery key while mouse tracking is active.
  • Exact-session notification deep links, hardened installer/reinstall paths, refreshed README.

Compatibility

  • Host — Linux: full feature set (systemd user session, Herdr 0.9.3+, Python 3.9+).
  • Host — macOS: terminal/SSH use where dependencies work; no systemd scheduler/guardian.
  • Phone — Android 8+: full experience, certified (Termux F-Droid + TENDRIL Link).
  • iPhone / iPad: full terminal-native TENDRIL over SSH/Mosh today; native Link experience coming later.

See CHANGELOG.md for the complete list.

Attach: tendril-link.apk (v0.2.1, versionCode 170, production-signed) + tendril-link.json (release manifest).

TENDRIL v0.2.0 — The Edge Is Yours

Choose a tag to compare

@Ozymandes Ozymandes released this 13 Oct 07:18
f50d621

TENDRIL Link: HOME, LIVE and CAPACITY

v0.1 got you into your agent sessions from a phone. v0.2.0 is the release where TENDRIL understands them.

TENDRIL is now a handheld control plane for persistent AI agents: you can see what every agent and subagent on your machine is doing, how much provider capacity is left, what's scheduled next and what needs you. You can recover the runtime when it falls over and jump into the exact pane that matters, all from your phone, on top of the Herdr, SSH, Mosh, Tailscale and Termux you already use.

What's new

  • TENDRIL Link, the Android control surface: HOME, LIVE, CAPACITY and SCHEDULE, plus session detail (context, output, cost), NEEDS YOU, diagnostics and QR pairing.
  • Live sessions and subagents. A new snapshot (v3) carries every workspace, agent and subagent, with honest working / idle / failed / needs-input states, renameable session titles and a topology view.
  • Scheduling. Queue work for a new session or an agent that's already running, triggered at a time, at a provider's next reset, or as soon as capacity returns. State lives on the host and is crash-safe: an interrupted task is never launched twice.
  • Capacity. Claude Code, Codex and Pi usage from your local transcripts (no network), plus opt-in usage APIs for Claude, Codex and Z.AI: windows, resets, pressure and spend.
  • Notifications that land exactly. Agent finished, needs input, task started or failed, Herdr down or back: each one opens the exact pane it's about.
  • Diagnostics and Herdr recovery. "Host reachable, Herdr down" is its own state. A guardian notifies once per outage and never restarts anything behind your back. Revive Herdr is one verified, rate-limited restart, and an intentional tendril herdr stop stays respected.
  • Pairing. tendril --pair prints a QR code that carries the host and your notification settings.
  • Trusted in-app updates. The host stages pinned builds. Link discovers them by itself and shows a lime mark. Update TENDRIL downloads and verifies the APK, re-verifies it in the app, and hands it to Android's installer, which still asks you to confirm.
  • Selector ↔ Link round trip. Press L in the terminal selector and you're back in TENDRIL Link, over SSH or Mosh.

Install / upgrade

New host (Linux, Herdr 0.9.3+):

git clone https://github.com/Ozymandes/TENDRIL.git && cd TENDRIL
./install --doctor && ./install
tendril --pair --manual     # one command to paste into Termux on the phone

Existing host: tendril --upgrade. Existing phone, in Termux: tendril --upgrade.

The README has the five-step quick start.

Notes

  • The full feature set is Linux with a systemd user session. macOS hosts get the selector, attach and notifications, but not the scheduler or guardian timers. macOS and iOS/Blink still lack a real-device sign-off.
  • TENDRIL Link is distributed through your host in this release. A host-staged build installs through the Termux setup script or tendril --upgrade. Public builds of the app aren't published yet; the host, the Termux console, the CLI and notifications all work without it.
  • First in-app update: Android asks you once to allow TENDRIL Link to install apps.
  • Physically certified end to end on a Galaxy S21 Ultra (F-Droid Termux) against a Linux host. CI is green on Ubuntu and macOS (Python 3.9 and 3.13, plus the stock Xcode CLT Python).

Full details: CHANGELOG · Security model: SECURITY.md

The edge is yours.

TENDRIL v0.1.1

Choose a tag to compare

@Ozymandes Ozymandes released this 25 Sep 01:49

TENDRIL v0.1.1 — bugfix release.

Real-world Android Termux testing showed Alt+D is unreliable over SSH/Mosh:
the ESC prefix of an Alt sequence can arrive split from d, and Herdr only
honours Alt shortcuts when the sequence lands as one unsplit burst.

  • reliable Android/Termux Herdr detach via Ctrl+] — a single control byte
    (0x1D) that cannot be split across transports; Alt+D retained as the
    desktop-friendly alternative, prefix+d as the universal fallback
  • installer now merges/preserves the full detach set (prefix+d, alt+d,
    ctrl+]) in the user's Herdr config: never duplicates, never touches
    unrelated bindings, only claims ctrl+] when no other action uses it,
    with timestamped backup + config check validation + live reload
  • mobile help screen, attach hints and docs updated to match verified
    behavior (Ctrl+] primary, Alt+D desktop)

Verified on-device: attach → Ctrl+] → detach → menu returns → workspaces,
panes and agents stay alive → reattach restores exact state.

TENDRIL v0.1.0

Choose a tag to compare

@Ozymandes Ozymandes released this 24 Sep 21:38

TENDRIL v0.1.0 — initial release.

A thin mobile control plane for persistent AI agents: Android Termux connects over Tailscale and Mosh/SSH into a live Herdr workspace console, while a watcher pushes agent state changes to the phone via ntfy.

  • remote-agents — live Herdr workspace console for narrow terminals: per-agent lifecycle chips, numeric attach, new-workspace wizard, project launcher, host status, mobile key reference (?)
  • herdr-notify — 8 s snapshot watcher: pushes Task complete (working → idle/done) and Input required (→ blocked) via ntfy; silent baselining on start/after outages, per-pane dedup
  • Protocol-verified Herdr client selection — PATH/mise/versioned candidates probed; incompatible clients rejected with reasons
  • install — interactive user-local installer (no sudo) with --dry-run preview and read-only --doctor; optional ntfy configuration with generated private topic (chmod 600); optional user-level systemd watcher
  • Herdr Alt+D detach binding — offered with timestamped backup, config check validation, live reload-config (never a server restart)
  • phone/agent — Termux launcher: Mosh preferred, clean SSH fallback, no hardcoded host/user
  • Docs — Android guide, security model, architecture notes

The phone is the control surface. The work stays on the host.