{"id":48889228,"url":"https://github.com/physercoe/termipod","last_synced_at":"2026-04-26T10:01:04.635Z","repository":{"id":349798705,"uuid":"1203713297","full_name":"physercoe/termipod","owner":"physercoe","description":"A mobile-first tmux and ssh client. Control your terminal sessions from your phone/pad.","archived":false,"fork":false,"pushed_at":"2026-04-24T00:16:04.000Z","size":104658,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T01:38:15.338Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"moezakura/mux-pod","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/physercoe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"moezakura"}},"created_at":"2026-04-07T09:52:38.000Z","updated_at":"2026-04-24T00:16:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"301d9afc-048c-4cd5-9eff-df729e506c6e","html_url":"https://github.com/physercoe/termipod","commit_stats":null,"previous_names":["physercoe/mux-pod","physercoe/termipod"],"tags_count":118,"template":false,"template_full_name":null,"purl":"pkg:github/physercoe/termipod","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/physercoe%2Ftermipod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/physercoe%2Ftermipod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/physercoe%2Ftermipod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/physercoe%2Ftermipod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/physercoe","download_url":"https://codeload.github.com/physercoe/termipod/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/physercoe%2Ftermipod/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32292958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-16T07:00:56.982Z","updated_at":"2026-04-26T10:01:04.607Z","avatar_url":"https://github.com/physercoe.png","language":"Dart","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/logo/logo.svg\" alt=\"TermiPod logo — chevron prompt with twinkling 4-point sparkle\" width=\"140\" height=\"140\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eTermiPod\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eMobile control plane for a fleet of AI agents.\u003c/b\u003e\u003cbr\u003e\n  \u003csub\u003eDirect agents from your phone. A steward turns your goal into a plan, a fleet executes across your own hardware, you ratify and review.\u003cbr\u003eAndroid, iOS, iPadOS — open source, self-hosted, Apache 2.0.\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/physercoe/termipod/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/physercoe/termipod?style=flat-square\u0026color=00c0d1\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/physercoe/termipod?style=flat-square\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Android-3DDC84?style=flat-square\u0026logo=android\u0026logoColor=white\" alt=\"Android\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/iOS-000000?style=flat-square\u0026logo=apple\u0026logoColor=white\" alt=\"iOS\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/iPadOS-000000?style=flat-square\u0026logo=apple\u0026logoColor=white\" alt=\"iPadOS\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Flutter-3.24+-02569B?style=flat-square\u0026logo=flutter\u0026logoColor=white\" alt=\"Flutter\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.zh.md\"\u003e中文\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## What makes it different\n\nEvery other \"Claude Code on your phone\" tool is a 1:1 bridge to a single local session. TermiPod is a 1:N control plane over a fleet:\n\n- **Multi-agent** — coordinate Claude Code, Codex, Aider, or any CLI, each with its own pane, profile, and budget. One inbox for all of them.\n- **Multi-host** — a steward on a $5/mo VPS can delegate work to a GPU box at home behind NAT, via A2A over a reverse-tunnel relay. Nothing else spans hosts cleanly.\n- **Director, not operator** — write a natural-language goal. The steward decomposes it into a plan. You ratify. You don't author DAGs, you don't babysit terminals.\n- **Governance built-in** — budget caps, policy overrides, per-agent usage, immutable audit log, team roles. No other mobile agent tool has these.\n- **Offline-first** — SQLite snapshot cache shows last-known-good lists on every screen when the hub is unreachable. Subway-safe.\n- **Vendor-agnostic, self-hosted** — Apache 2.0 Go hub you run yourself. No account gating, no cloud relay, no vendor lock-in.\n\n**30-second demo.** Type `ablation sweep on nanoGPT, tell me which optimizer scales better` on your phone. Your VPS steward returns a 6-step plan; you tap Approve. Six training runs spawn on your home GPU box. Three hours later, a briefing document with loss curves lands on your **Me** tab. You ratify it on the train home.\n\nSee [docs/positioning.md](docs/positioning.md) for the full thesis, ICP, and competitive analysis.\n\n---\n\n## Screenshots\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eDashboard\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eAgent Commands\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eKey Palette\u003c/b\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cimg src=\"docs/screens/dashboard_dark.png\" width=\"240\" alt=\"Dashboard — recent sessions, one-tap reconnect\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"docs/screens/bolt_menu_dark.png\" width=\"240\" alt=\"Claude Code slash commands with dropdowns\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"docs/screens/key_palette_dark.png\" width=\"240\" alt=\"Profile sheet with key group grid\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eTerminal\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eVault (Keys \u0026 Snippets)\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eInsert Menu\u003c/b\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cimg src=\"docs/screens/terminal_dark.png\" width=\"240\" alt=\"Terminal with action bar and compose bar\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"docs/screens/vault_dark.png\" width=\"240\" alt=\"SSH keys, snippets, command history\"\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"docs/screens/insert_menu_dark.png\" width=\"240\" alt=\"Insert menu — file transfer, image, direct input\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Why TermiPod?\n\nAI agents produce ten times more output than any human can review. The moment you run **more than one** agent, or span **more than one machine**, the existing mobile tools fall apart — session-bridge apps (Claude Code Remote Control, Happy, Tactic Remote) give you one session in your pocket; messenger-bridge agents (OpenClaw, Hermes, Claude Code Channels) give you one chat-style assistant across your chat apps. Neither is a cockpit for a fleet. TermiPod is built on a different axiom: the human is a **director**, not an operator.\n\n| Dimension | Remote Control / Happy / Tactic | TermiPod |\n|---|---|---|\n| Topology | 1 phone ↔ 1 session ↔ 1 host | 1 director ↔ N agents ↔ M hosts |\n| Agent count | One active at a time | Fleet; steward spawns more |\n| Host span | Single local machine, keep it awake | VPS + GPU + laptop, coordinated via A2A |\n| Agent vendor | Claude Code (+ Codex) | Agent-agnostic — any CLI that takes a pty |\n| Authoring model | You type messages | You write a goal; steward decomposes it |\n| Governance | None | Policies, budgets, audit log, team roles |\n| Data ownership | Cloud relay or laptop-only | Hub holds names/events; hosts hold bytes |\n| Offline | Needs live relay | SQLite snapshot cache — last-known-good on every list |\n| Open source | Happy: yes; others: no | Apache 2.0, self-hosted Go hub |\n\n### Who is this for?\n\n| | |\n|---|---|\n| **Solo ML researchers** | Nightly sweeps across a VPS + home GPU box — kick off from the phone, review briefings in the morning |\n| **Indie AI hackers** | Multiple agent CLIs across projects — unified inbox, attention queue, per-pane profiles |\n| **Autonomy-focused startups (1–5 eng)** | Budget caps, policy overrides, audit log, team roles — no other mobile agent tool has these |\n| **Open-source maintainers** | Run triage / review agents overnight; approve agent PRs from bed |\n| **Homelab / self-hosters** | Pull work off the laptop onto the phone without exposing raw SSH to the internet |\n\n### When *not* to use TermiPod\n\nBe honest: if you run exactly one Claude Code session on one machine and your laptop is always on, use [Anthropic's Remote Control](https://code.claude.com/docs/en/remote-control) or [Happy](https://happy.engineering/). TermiPod's governance, multi-host, and self-hosting features have a setup cost. You shouldn't pay it unless you need what they buy.\n\n---\n\n## Features\n\n### SSH \u0026 Connectivity\n- **Ed25519 / RSA keys** — generate on-device (RSA 2048 / 3072 / 4096) or import, stored in Android Keystore / iOS Keychain with optional passphrase, one-tap public-key copy\n- **SSH ProxyJump** — connect through bastion/jump hosts to internal machines\n- **SOCKS5 proxy** — route through corporate proxies, VPNs, or Shadowsocks/Clash\n- **Raw PTY mode** — direct shell access for servers without tmux, with a one-tap shortcut from any tmux connection card\n- **Connection testing** — verify SSH + tmux before saving\n- **Auto-reconnect with exponential backoff** — up to 5 retries; commands you type while disconnected are queued and flushed automatically once the link is back\n- **Latency indicator** — live ping in the header (color-coded: green \u0026lt; 100 ms, red \u0026gt; 500 ms) so you know whether the lag is your fingers or the network\n- **Adaptive polling** — refresh rate ramps from 50 ms (active) down to 500 ms (idle) to save battery\n- **Background connection service** — Android foreground service keeps SSH alive while the app is backgrounded; optional keep-screen-on for long sessions\n\n### tmux Session Management\n- **Dashboard** — recent sessions sorted by last access with relative timestamps (\"Just now\", \"5 min ago\"); one tap reconnects and restores the last window + pane\n- **Visual navigation** — breadcrumb header: tap Session \u003e Window \u003e Pane to switch\n- **Pane layout view** — accurate proportional split visualization, tap any pane to focus\n- **Two-finger swipe** between panes\n- **Pinch to zoom** the terminal (50%–500%) for quick readability bumps\n- **Copy / scroll mode** — toggle to select text without the screen jumping; updates buffer until you exit and copy lands in the system clipboard\n- **Create / rename / close** sessions and windows\n- **Bell / Activity / Silence alerts** — tmux window flags monitored across all connections; tap any alert to jump straight to that window and pane (alert auto-clears)\n- **256-color ANSI** terminal rendering with auto-extend scrollback\n\n### Input UX (Mobile-Optimized)\n\n| Component | What it does |\n|-----------|-------------|\n| **Action bar** | Swipeable button groups per profile — ESC, Tab, Ctrl+C, arrows, one tap away |\n| **Compose bar** | Multi-line text field with send button. Multi-line input ships as **one bracketed paste** so AI agents and shells see the block intact, not N separate commands. Long-press send to omit Enter |\n| **Direct Input mode** | Real-time keystroke streaming with a live indicator — every tap goes straight to the pty, ideal for vim, less, htop, REPLs |\n| **Custom keyboard** | Flutter-native QWERTY with Ctrl/Alt/Esc/arrows. Built-in **live key strip** (Home / End / PgUp / PgDn / Del + pulse indicator) replaces the wasted compose-row gap. Arrow row auto-hides when nav pad / joystick is on. Toggle off entirely for CJK / voice input |\n| **Navigation pad** | D-pad, joystick, or gesture surface for arrow keys + action buttons |\n| **Snippets** | Slash commands with dropdowns for enums, text fields for free-form args. **Long-press the bolt key** to stash the current compose text as a draft snippet |\n| **Modifier keys** | Ctrl / Alt as toggle buttons — tap to arm, double-tap to lock |\n\n**4 built-in profiles** — Claude Code, Codex, General Terminal, tmux — each with optimized button groups. Create custom profiles for any CLI. Each pane remembers its profile and auto-detects from `pane_current_command`.\n\n### File Transfer\n- **SFTP upload/download** with progress tracking and remote directory browser\n- **Image transfer** with format conversion, resize presets, and path injection\n\n### Termipod Hub (optional)\n\nOpt-in coordination layer for teams running multiple AI agents across machines. Paste a hub URL + bearer token in **Settings → Hub** and the five-tab IA — **Projects · Activity · Me · Hosts · Settings** — comes alive.\n\n**Research-demo workflow:** write a project directive on the phone → a steward agent decomposes it into a plan → workers on GPU hosts execute runs in parallel via cross-host A2A → a briefing agent summarizes overnight into a reviewable document. Every step surfaces on the phone; you ratify, not operate. Templates for ablation sweeps, paper reproductions, and benchmark comparisons ship with the hub.\n\n**Me** (center, default) — your personal triage: pending approvals, urgent tasks, recent activity digest, and a Vault shortcut. Tap a pending approval to Approve / Reject inline.\n\n**Projects** — project inventory; tap any row for the Project Detail surface with Overview, Tasks, Plans, Runs, Reviews, **Outputs** (run-produced checkpoints / curves / reports), Documents, Blobs, Channels, Schedules, and an Agents section walking `agent_spawns` for a parent→child org chart. FAB spawns workers via YAML with template picker, host picker, and saved presets; the Steward gets its own spawn flow. Metrics digests from **trackio / wandb / TensorBoard** auto-surface as inline sparklines on Run Detail. Project name / goal / template / docs root / budget are all editable inline.\n\n**Activity** — team-wide audit feed (audit_events promoted): policy changes, template edits, agent lifecycle, channel posts, run state transitions — all in one filterable timeline.\n\n**Hosts** — host-runner check-ins with last-seen timestamps; hosts behind NAT publish agent-cards to the hub directory and accept peer A2A calls via a **reverse-tunnel relay** so steward agents on a VPS can invoke workers on GPU machines end-to-end.\n\n**Team** screen (header icon on Projects) — Members, Policies, team-scope channels (including the `#hub-meta` steward room, reachable from the AppBar chip), and Team Settings with cron **Schedules**, per-agent **Usage / budget** rollups, an **Audit log**, and the **Templates** browser for team-wide agent / prompt / policy YAML. Everything that drives behaviour — project templates, agent skills, launcher commands — is data you can edit on disk; no code changes required to add a new agent kind.\n\nThe hub itself ships as a separate Go daemon under `hub/` — install with `go install` or run from source. See [docs/hub-mobile-test.md](docs/hub-mobile-test.md) for setup and tab-by-tab verification.\n\n### Other\n- **Data export / import** — full JSON backup of connections, keys, snippets, history, and settings; restore on a new device or migrate from the legacy MuxPod app\n- **Built-in file browser** — manage SFTP downloads and app storage from Settings, share or delete files in place\n- **Update checker** — Settings → Check for updates queries GitHub releases and links to the latest APK\n- **Help \u0026 onboarding** — cheat sheet for action bar + tmux keybindings, 4-card walkthrough\n- **Deep linking** — `termipod://connect?server=\u003cid\u003e\u0026session=\u003cn\u003e\u0026window=\u003cn\u003e\u0026pane=\u003ci\u003e` opens a specific server / session / window / pane from external apps. Each connection has a stable **Deep Link ID** (set in Edit) so URLs survive renames; pairs with [claude-telegram-notify](https://github.com/launch52-ai/claude-telegram-notify) to tap a Telegram alert straight into the right pane. Legacy `muxpod://` URLs still resolve\n- **Tablet \u0026 foldable** adaptive layout\n- **i18n** — English and Chinese, follows system locale\n\n---\n\n## How TermiPod Compares\n\nAgainst mobile **agent control** tools (session-bridge category):\n\n| Feature | TermiPod | Claude Code Remote Control | Happy Coder | Tactic Remote |\n|---|---|---|---|---|\n| **Multi-agent fleet** | Yes | One session | One per CLI wrapper | One session |\n| **Multi-host (A2A)** | Yes — VPS + GPU + NAT via relay | No | No | No |\n| **Agent-agnostic** | Yes — any CLI | Claude Code only | Claude Code + Codex | Claude Code + Codex |\n| **Director / steward model** | Yes — steward decomposes goals | No | No | No |\n| **Governance (budget, audit, policy)** | Yes | No | No | No |\n| **Self-hosted hub** | Yes (Go daemon) | Cloud relay (Anthropic API) | Relay server | Cloudflare Tunnel |\n| **Offline snapshot cache** | Yes (SQLite) | No | No | No |\n| **Platform** | Android + iOS + iPad | iOS + Android + Web | iOS + Android + Web | iOS only |\n| **Pricing** | Free, Apache 2.0 | Claude Max ($100+) | Free, open source | Paid trial |\n\nAgainst **messenger-bridge agents** (different thesis, overlapping user question):\n\n| Feature | TermiPod | OpenClaw | Hermes Agent | Claude Code Channels |\n|---|---|---|---|---|\n| **UI surface** | Purpose-built mobile app | Existing messengers (WhatsApp, Telegram, Slack, Signal, iMessage, Discord, 15+) | Telegram / Discord / Slack / WhatsApp / Signal | Telegram + Discord |\n| **Primary use case** | Fleet cockpit + research ops | Personal assistant across messengers | Personal assistant + self-improving skills | Remote Claude Code via chat |\n| **Agent topology** | Director → steward → fleet | One agent, cross-platform memory | One self-improving agent | One local Claude Code session |\n| **Multi-host / A2A** | Yes | No | No | No |\n| **Plan ratification** | Structured plan + Approve | Conversational | Conversational | Conversational |\n| **Governance UI** | Budgets, policy, audit | None (chat only) | None (chat only) | None |\n| **Rich UI (plots, kanban, runs)** | Native | Text only | Text only | Text only |\n| **Offline snapshot** | Yes | No | No | No |\n| **Open source** | Apache 2.0 | MIT | Open | Plugin repo |\n| **Vendor lock-in** | None | None | None | Requires Claude Pro/Max |\n\n**When to pick which:** Use a messenger bridge when you want a personal agent answering in the apps you already use 20 hours/day. Use TermiPod when you're directing a **fleet** across your own infrastructure and need purpose-built screens for plans, runs, reviews, governance. The two coexist happily on the same phone.\n\nAgainst mobile **SSH clients** (TermiPod also covers this layer — breakglass, not product):\n\n| Feature | TermiPod | Termux | JuiceSSH | Termius | ConnectBot |\n|---|---|---|---|---|---|\n| **Platform** | Android + iOS + iPad | Android | Android | Multi | Android |\n| **tmux integration** | Native visual | Manual CLI | None | None | None |\n| **AI agent profiles** | Claude Code + Codex, per-pane | None | None | None | None |\n| **SSH jump host** | Built-in | CLI | CLI | Built-in | None |\n| **SOCKS5 proxy** | Built-in | CLI | None | None | None |\n| **File transfer** | SFTP with UI | Local FS | None | SFTP | None |\n| **Custom keyboard** | Flutter-native | None | None | None | None |\n| **Open source** | Yes (Apache 2.0) | Yes | No | No | Yes |\n\n---\n\n## Quick Start\n\n### Install\n\n**Android:** Download the latest APK from [**Releases**](https://github.com/physercoe/termipod/releases) and install.\n\n**iOS / iPadOS:** Build from source with Xcode (see below). TestFlight is on the roadmap.\n\n### Build from source\n\n```bash\ngit clone https://github.com/physercoe/termipod.git\ncd termipod\nflutter pub get\n\n# Android\nflutter build apk --release\n\n# iOS / iPadOS (requires macOS + Xcode)\nflutter build ios --release\n```\n\n### Connect\n\n1. **Add a server** — Tap + on Servers tab, enter host / port / username\n2. **Authenticate** — Password or SSH key (generate in Vault \u003e Keys)\n3. **Optional** — Configure jump host or SOCKS5 proxy in the connection form\n4. **Navigate** — Expand server \u003e session \u003e window \u003e pane\n5. **Interact** — Action bar for quick keys, compose bar for commands, [+] for snippets and file transfers\n\n---\n\n## Requirements\n\n| Component | Requirement |\n|-----------|-------------|\n| **Device** | Android 8.0+ (API 26), iOS 13.0+, iPadOS 13.0+ |\n| **Server** | Any SSH server (OpenSSH, Dropbear, etc.) |\n| **tmux** | Any version (tested 2.9+) — optional with raw PTY mode |\n| **Network** | Direct SSH, or via jump host / SOCKS5 proxy |\n\n---\n\n## Roadmap\n\nTermipod's MVP is the **research demo** described in `docs/blueprint.md` §9 Phase 4:\nuser writes a directive → steward decomposes → fleet executes runs across hosts →\nbriefing agent summarizes overnight → user reviews on phone.\n\nThe demo path is shipped end-to-end: built-in project templates (ablation-sweep,\nreproduce-paper, benchmark-comparison, write-memo) as YAML overlays, a concrete\nsteward decomposition recipe, a briefing agent with cron scheduling, cross-host\nA2A via reverse-tunnel relay for NAT'd GPU hosts, and metric digests from\ntrackio / wandb / TensorBoard surfaced as inline sparklines on the run detail\nscreen. Every hub CRUD surface on mobile is also reachable from the steward as\nan MCP tool, so the phone is a ratify/review surface on top of what the\nsteward has already authored.\n\nStill open:\n\n- **iOS TestFlight / App Store distribution** — Android APK ships; iOS builds\n  are local-only today. TestFlight is the next distribution step.\n- **Activity feed on projects / channels tabs** — the reframed v1.0.160 hub\n  screens demote \"+ New\" into overflow menus; surfacing a unified recent-\n  activity stream (runs, docs, attention, schedule fires) on landing is the\n  follow-up that makes the ratify/review posture feel right.\n- **A2A peer auth** — per-agent tokens on the reverse-tunnel relay so cross-\n  team calls can be authenticated end-to-end.\n\nSee [docs/research-demo-gaps.md](docs/research-demo-gaps.md) for the live gap list\nand [docs/blueprint.md](docs/blueprint.md) §9 for the full phase plan.\n\n---\n\n## Attribution\n\nTermiPod is a derivative work of [MuxPod](https://github.com/moezakura/mux-pod) by [@moezakura](https://github.com/moezakura) (Copyright 2025 mox), licensed under the [Apache License 2.0](LICENSE). The original MuxPod provided SSH connectivity and basic tmux session viewing for Android. TermiPod has since diverged substantially with cross-platform support, input UX redesign, agent profiles, SFTP, ProxyJump, SOCKS5, custom keyboard, and more. TermiPod is an independent project, not affiliated with the original author. See [NOTICE](NOTICE) for full attribution.\n\n## Feedback\n\nFound a bug or have a feature request? [Open an issue](https://github.com/physercoe/termipod/issues) or send feedback from **Settings \u003e About** in the app.\n\n## License\n\n[Apache License 2.0](LICENSE)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eBuilt with Flutter. Designed for mobile. Made for developers who live in the terminal.\u003c/sub\u003e\n\u003c/p\u003e\n","funding_links":["https://github.com/sponsors/moezakura"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphysercoe%2Ftermipod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphysercoe%2Ftermipod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphysercoe%2Ftermipod/lists"}