paymentsnow
GPT-5.5 Codex · checkout-redesign
Waiting for approval
$ pnpm prisma migrate deploy
· Droidtty
See what your coding agents are doing, answer when they need you, and open a terminal only when you have to.
Version 0.6.0 · APK · 9.1 MB · Native Android · Herdr-first · Powered by Ghostty
Agents spend minutes reading, editing and testing. Almost none of it needs you, so Droidtty only notifies you when something does.
1 needs you
2 working3 done
paymentsnow
GPT-5.5 Codex · checkout-redesign
Waiting for approval
$ pnpm prisma migrate deploy
Questions and permission requests arrive as decisions you can make in a tap.
payments Waiting for approval
agent-deck Has a question · 2m
Changed files and diffs get a native view, so you can check the work before it moves on.
droidtty Diff · Done
KT Status.kt+14 −0 ui/model
Mark reviewed Wrap Open file
-98,6 +98,20Status.kt
98 }
99}
100
101+/**
102+ * The home card's status line, or null when it would
103+ * only repeat what the section title, the avatar badge,
104+ * the corner time or the chips already say.
105+ */
106+fun Workspace.cardLine(): String? {
107+ val a = primaryAgent
108+ return when (bucket()) {
109+ Bucket.Working -> a?.task?.activity
110+ Bucket.Done -> a?.task?.result
111+ Bucket.Idle -> if (a == null) "No agents"
112+ else a.execution.label()
113+ else -> statusLine(withElapsed = false)
114+ }
115+}
116+
117/** Contextual default tab (SPEC §8) */
-551,14 +559,13HomeScreen.kt
559 }
551− Spacer(Modifier.height(8.dp))
552− Row(verticalAlignment = CenterVertically) {
553− StatusIcon(kind, size = 13.dp)
554− Spacer(Modifier.width(7.dp))
560+ // The avatar badge carries the state
561+ // icon; this line only adds what it
562+ // doesn't say.
563+ ws.cardLine()?.let { line ->
564+ Spacer(Modifier.height(8.dp))
565 Text(
556− status,
566+ line,
567 style = Herdr.type.label,
568 maxLines = 2,
569 )
570 }
Open the agent’s pane or a shell in the project, drawn by Ghostty’s engine, with sticky modifiers and a draggable arrow pad.
Powered by Ghostty
droidtty Terminal · Done · 38m
Claude Code Shell
d in ~/code/droidtty λ cargo test --test integration
Compiling droidtty v0.1.0 (bridge)
Finished `test` profile in 4.21s
Running tests/integration.rs
running 3 tests
test end_to_end_demo ... ok
test program_status_end_to_end ... ok
test revoke_from_cli_closes_socket ... ok
test result: ok. 3 passed; 0 failed; in 6.87s
d in ~/code/droidtty λ git status --short
M website/src/pages/index.astro
d in ~/code/droidtty λ
Droidtty doesn’t scrape terminal text. The bridge reads Herdr’s agent state, session logs and git, and sends the phone structured events.
Agent semantics
Claude Code · Codexyour agents, running on the host
Herdrworkspaces and agent status
droidtty-cliadds session logs and git
HMP v1 · pinned TLS
Droidttyon your phone
approvals and answers go back through Herdr's API, never typed into a terminal
All twenty-one agents Herdr detects show up with their own mark. Claude Code and Codex also get full timelines and exact approvals.
Early access. The bridge runs next to Herdr, and your phone pairs with it by scanning a code.
On your Mac or Linux machine, install the bridge and start it.
npm install -g @droidtty/cli
droidtty-cli tuimacOS on Apple Silicon, Linux on x64 and arm64. It shows the pairing code; add --demo for a simulated herd.On a Mac, you can use the Droidtty Bridge app instead, with the pairing code, your devices and open at login:
brew install --cask jagenaujagenau/tap/droidttyInstall the app and scan the code.
Yes. The apps and the bridge are free and MIT licensed, and there's no account to create.
Yes. Droidtty is built around Herdr: the bridge reads its workspaces and agent states. To look around first, run droidtty-cli tui --demo for a simulated herd, or tap "Try the demo host" in the app.
Every agent Herdr detects (21 of them) shows up with its state. Claude Code and Codex also get full timelines and exact approvals, and Pi, omp and OpenCode chats show too.
No. There's no cloud relay: the phone connects straight to the bridge on your computer, over TLS pinned to the bridge's certificate. Push notifications, if you set them up, are the only thing that goes through a third party. See Security.
Yes, with Tailscale on the computer and the phone: the phone reaches the bridge at its Tailscale address, wherever you are. To keep the bridge off your local network entirely, bind it to that address.
The bridge runs on macOS (Apple Silicon) and Linux (x64 and arm64). The Android app needs Android 9 or later; the iPhone app needs iOS 26 or later.
Not yet. It's a public beta on TestFlight.
Run droidtty-cli revoke <device> on the computer. The phone's token stops working and its open connections close at once.