AgentDeck Android v1.0.10
AgentDeck Android v1.0.10
One round, cut across five channels from the same commit, so the entries are
grouped by what they change rather than by which artifact carries them.
Kiro observation
- Observe Kiro sessions without being asked to manage them. Users run native
kiro-clior the Kiro IDE as usual and the daemon correlates the process with
Kiro's own stores — the v2 app-data SQLite, or the v3sessions/JSON plus
messages.jsonl— read through a query-only handle that never touches auth or
telemetry tables (#198,
#202) - Fill the Kiro timeline from Kiro's own transcript, because nothing else ever
will. Kiro's global standalone hooks load and then fire for no CLI chat turn
at all (measured on kiro-cli 2.18.1: a live turn produced zero hook markers
while a hand-POSTed hook produced a timeline row normally), so both daemons
poll the transcript instead. Two consequences are by design: a Kiro session
appears seconds late rather than instantly, and it always readsidle—
a transcript gains its assistant record only once the reply has landed, and
claimingprocessingwould be inventing a state
(#218) - Draw Kiro as Kiro, or as nothing — never as Claude. The surfaces that bucketed
agents with a deny-list dressed every agent they predated as the bucket's
owner, so Kiro sessions swam as Claude octopuses and took Claude's glyph and
OpenCode's palette. Those buckets are allow-lists now, pinned by tests on the
polarity rather than on the membership, so a future agent renders as neutral
instead of as somebody else
(#216) - Give Kiro its name, mark, colour and terrarium creature across the dashboard,
the decks and the ESP32 boards
(#205,
#206,
#217) - Capture Kiro's spoken reply instead of its redacted
Reasoningplaceholder,
and keep the subject in a tool label rather than just the tool name
(#200,
#204) - Count one Kiro chat as one session, tell an unreadable transcript apart from
one nobody has typed into, and read the store from the sandboxed macOS app too
— through a user-granted directory bookmark in Settings → Integrations, so
with no grant it observes nothing rather than guessing
(#202,
#207,
#220) - Add
agentdeck diag kiro [--json], a daemon-free probe that is safe to paste
into an issue: content-free, with report-scoped opaque keys for cwd and
session identity (#198)
Sessions, turns and subagents
- Count subagents at the hook and report them as
SessionInfo.subagents
(active/peak/completed). A parent whose turn closed is genuinely
idle while its children work, so this is a second axis besidestate, not a
correction to it. Deriving it from timeline rows read near zero in exactly the
fan-outs it describes — siblings of one workflow emit byte-identical rows in
the same millisecond and were deduped to one, and eviction shed the dispatch
row first. Measured on a real workflow session: 72 completions, peak 8
concurrent, and zero surviving dispatch rows
(#219) - Say which company answered, without calling it a different agent. A Claude
Code session pointed at another provider's endpoint is still Claude Code —
same binary, hooks and transcript — so it keeps itsagentType, and the fact
that its weights came from somewhere else rides a separate signal that is set
only when both sides are known and disagree
(#219) - Recover turns whose Stop hook never arrived, in observed sessions as well as
managed ones — the previous release wired the watchdog only to PTY bridges,
which covered none of the real traffic. Recovery re-enters the real Stop path
rather than reimplementing it
(#194) - Tell a turn that never owed a Stop apart from one that lost it. A user cancel
emits no hook at all, so counting it as a dropped Stop inflated the loss
ratio with events that were never due; ESC cancels are now their own bucket
and stay out of that ratio, detected both while the marker is still the
transcript tail and on the commoner cancel-then-retype shape
(#195,
#213)
Daemon
- Ask which user owns a daemon before adopting its token or shutting it down. On
a shared host every same-machine privilege reached every account on the box:
starting a CLI daemon shut down every colleague's macOS app, and a port scan
registered one user's sessions with whoever answered first. Ownership is now a
three-valued question answered at the point a peer is discovered; unproven
ownership stays permissive, because refusing there is what breaks a whole
paired fleet's authentication (#215) - Give the CLI daemon a preferred port and make it wait for that port. A daemon
bumped to a fallback had no record of the port it wanted, so a 14-second
kernel hold on 9120 became permanent until someone restarted it by hand. The
intent is persisted and only the user writes it (agentdeck daemon port <n>);
the outcome never is, since recording the fallback would make it preferred
forever after (#212) - Make the daemon port window overridable, so a throwaway daemon can exist
alongside the real one (#211) - Surface the network posture in the macOS app as Settings toggles, matching the
CLI's two axes, and tighten loopback mode's ADB reverse to USB transports
only — a cable-carried tunnel terminates on the host's own loopback, but a
wireless-debugging transport would carry it over the LAN
(#203) - Generate the Swift daemon's state-transition table from the shared TypeScript
source. A row present in one daemon and absent in the other is a session that
wedges on one platform and recovers on the other, with nothing in either log
saying why (#196)
OpenClaw
- Make an OpenClaw approval something the user can read and answer, rather than
a prompt that renders without its question
(#214) - Say why an OpenClaw turn failed, and let the failed turn close its task
instead of leaving it open — an open task is never judged
(#209)
macOS app — Apple 1.0.7
- Hide the Dock icon while no AgentDeck window is open, so a menu-bar-only user
gets a menu-bar-only app. The rule is an allow-list of scene ids rather than a
window count:NSApp.windowsalso holds the menu-bar panel and AppKit
internals, so a count never reaches zero and the rule silently never fires
(#222)
Stream Deck plugin — 1.0.6
- Show up to four usage keys on 15-key and larger devices (Claude 5h and 7d,
Fable, Codex 7d) instead of stopping at the first two
(#225)
Devices — ESP32 1.0.5
- Carry Kiro's colour, glyph and creature onto the boards
(#217) - Clamp Pixoo creatures above the active Usage HUD rows, so idle sprites stay
visible instead of being drawn under the gauges
(#225)
E-ink dashboard app for monitoring coding agent sessions.
Install
From Google Play (recommended) —
AgentDeck on Google Play.
Same app, same build, with automatic updates.
From the APK below — for devices without Play services (many e-ink readers)
or when you want this exact version pinned:
- Download the
agentdeck-v*.apkbelow - Transfer to your Android device
- Open the APK to install (enable "Install from unknown sources" if prompted)
Then launch AgentDeck and pair — over USB, by scanning the daemon's QR code, or
with a pairing code on a reader that has no camera. AgentDeck for Android is a
companion dashboard: keep the daemon running on a Mac, Windows, or Linux machine
on the same network.
Full changelog: https://github.com/puritysb/AgentDeck/blob/master/CHANGELOG.md