You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
thinr with no arguments now launches the interactive dashboard
directly when stdout is a TTY (and a configuration exists), so the
fleet view is one keystroke away. Non-TTY contexts (pipes, scripts)
fall back to --help. First-time users still get the auth flow,
then drop straight into the dashboard.
TUI dashboard: alarms panel on the overview tab, with rule- and
instance-level views, severity colouring and live updates over the
same event stream the rest of the dashboard already uses.
thinr device delete <deviceId> — remove a device record from the
platform. Interactive confirm by default, --yes to skip in
scripts, idempotent on a missing device. Useful after re-provisioning
an agent under a new hostname leaves the old ip-… record offline.
MCP: thinr_device_delete — same operation for AI clients.
MCP: thinr_push and thinr_pull — upload a local file to a
device and download a remote file to local disk, respectively.
Rounds out filesystem parity with the CLI so an agent can move
binary or large payloads that don't fit inline in thinr_write.
MCP: alarms tools (thinr_alarm_instances, thinr_alarm_instance_get, thinr_alarm_instance_stats, thinr_alarm_instance_update, thinr_alarm_instance_delete, thinr_alarm_rules, thinr_alarm_rule_read, thinr_alarm_rule_write, thinr_alarm_rule_delete) — list, inspect and manage alarm
instances and rules from AI clients, with state/severity parsing
shared with the dashboard.
MCP: product profile config tools (buckets, properties, API
resources) and access-token tools (user-level and device-level).
thinr product exec <productId> <command...> — run a shell command
in parallel on every active device of a product, with bounded
concurrency (-c, --concurrency, default 10), per-device timeout
(--timeout, default 30 s), --fail-fast, asset-group filter
(-g, --group) and an -a, --all switch to include offline
devices. Live progress shows a single spinner with done/total
counters; the final render uses a cli-table3 table per device
plus a compact Output: section and a one-line totals bar.
thinr_product_exec MCP tool — the same fan-out as the CLI
subcommand, returning a consolidated text report so an AI agent
can roll out a change across a whole fleet in a single call
instead of looping thinr_exec per device.
lib/concurrency.js#runPool — tiny helper used by both entry
points; keeps at most N workers in flight and returns a parallel
results array. runPool plus an internal try/catch in each worker
keeps fleet-wide errors localised per device.
Changed
Unified filesystem verbs across CLI, MCP and playbooks so the same
eight nouns mean the same thing everywhere: read / write
(inline content) · push / pull (local ↔ remote file transfer)
· ls · mkdir · rm · mv.
CLI: thinr device cat is now thinr device read (cat kept as
a hidden alias). New thinr device write <deviceId> <path> [content] accepts the payload as an argument or on stdin.
MCP: thinr_delete renamed to thinr_rm, thinr_move renamed to thinr_mv. No backwards-compatibility aliases.
Playbook actions: delete → rm, move → mv. The write
action now only accepts inline content; use the new push
action to upload a local file (source, destination). New pull action downloads a remote file to the local disk.
cli-table3 added as a direct dependency to render the
product-exec summary.
Removed
thinr dashboard subcommand. The dashboard is now the default for
bare thinr; the explicit subcommand had not shipped to anyone yet.