Skip to content

AgentDeck Android v1.0.10

Choose a tag to compare

@github-actions github-actions released this 17 Aug 22:39
· 103 commits to master since this release

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-cli or the Kiro IDE as usual and the daemon correlates the process with
    Kiro's own stores — the v2 app-data SQLite, or the v3 sessions/ 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 reads idle
    a transcript gains its assistant record only once the reply has landed, and
    claiming processing would 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 Reasoning placeholder,
    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 beside state, 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 its agentType, 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.windows also 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:

  1. Download the agentdeck-v*.apk below
  2. Transfer to your Android device
  3. 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