Skip to content

Releases: ably/ably-cli

v1.1.1

13 May 10:59
0a319f3

Choose a tag to compare

Added

  • ably init now completes the one-command onboarding flow by installing @ably/cli globally. Run npx @ably/cli init once and the ably command is available in every shell from then on — no separate npm install -g needed. At-the-keyboard users get a single yes/no prompt (default Yes); --json mode runs the install silently for AI agents. Add --no-install to opt out. The install step is non-blocking — if it can't complete (e.g. EACCES on a system-wide Node install), init carries on with authentication and skills installation and tells the user how to install manually.

v1.1.0

12 May 16:38
9233fd2

Choose a tag to compare

Added

  • ably init - single-command onboarding for AI-powered development. Install the Ably CLI, authenticate, and install the Ably Agent Skills into your AI coding tools all in one command (npx @ably/cli init). Detects installed tools (Claude Code, Cursor, VS Code, Windsurf) and installs via the appropriate mechanism (Claude Code plugin or file copy). Verifies SLSA provenance attestations on downloaded skill bundles before installing.
  • ably skills install - install or update the Ably Agent Skills into AI coding tools independently of ably init. Same tool detection, install mechanisms, and SLSA attestation verification.
  • **ably channels get-message - a one-shot command for fetching the latest version of a message on a channel by its serial

v1.0.0

01 May 12:07
775653f

Choose a tag to compare

First stable release. This is a large release that overhauls authentication, command argument conventions, output formatting, and adds several new command groups. Key user-facing changes are summarised below; review the migration notes before upgrading.

Added

  • OAuth Device Authorization loginably login now uses the OAuth 2.0 Device Authorization Grant for browser-based sign-in. Works in SSH sessions, containers, and headless CI without a localhost callback. Multi-account is built in: sign in once per account, switch contexts with ably accounts switch, and tokens refresh transparently in the background.
  • --force flag for destructive operations — unified across delete/revoke/wipe commands. Interactive use prompts for confirmation; non-interactive use (scripts, agents) refuses to run unless --force is passed explicitly. Prevents accidental destruction by automation that has general CLI access.
  • Error hints — fatal errors now include a hint field naming a specific next-step command (e.g. "run ably login" for auth errors). Surfaced in both human-readable output and the JSON error envelope, so agents can self-heal in fewer turns.
  • Chat message mutationsably rooms messages update, delete, and reactions/annotations support
  • Push notification publishably push publish for sending push notifications via channels
  • Annotations — new ably channels annotations command group with publish/subscribe/get/count/delete
  • Spaces commands — expanded coverage including locks acquire/release, locations set, cursors set, members enter, and get/get-all queries
  • Integrations — first-class command group for managing integration rules (ably integrations list/get/create/update/delete)
  • Channel rules for mutable messages — flags for configuring update/delete/annotation policies on channel rules
  • Stats top-level commandably stats (moved out of apps)

Changed

  • BREAKING: Auth flags removed--api-key, --token, and --access-token no longer accepted on commands. Use ably login or env vars ABLY_API_KEY / ABLY_TOKEN / ABLY_ACCESS_TOKEN.
  • BREAKING: Primary entity identifiers are now positional arguments — flags like --name, --channel, --location, and --key that named the entity being acted on have been replaced with positional args (POSIX/docopt convention). Affects apps, keys, queues, rules, push, channels, rooms, spaces locations, and others.
  • BREAKING: Standardized argument naming — argument names in errors and help output are snake_case; commands use camelCase identifiers consistently (appId, keyName, channelName).
  • BREAKING: Flexible name-or-ID lookupapps, keys, queues, and rules commands now resolve either name or ID. Behaviour for ambiguous lookups may differ from previous versions.
  • BREAKING: auth revoke-token no longer accepts a TOKEN positional; pass --client-id or --revocation-key. Adds confirmation prompt and --force.
  • Unified JSON output envelope — every command now emits {type, command, success, ...} with domain data nested under singular/plural domain keys. Streaming commands emit NDJSON with status: "listening" / "holding" signals and a final status: "completed" event.
  • Unified output helperslogProgress, logSuccessMessage, logListening, logHolding, logWarning replace ad-hoc chalk usage; non-JSON output uses labeled multi-line blocks (no ASCII tables).
  • Unified time-range flags--start / --end accept ISO 8601, Unix ms, or relative ("1h", "30m") across all history and stats commands.
  • Unified pagination — cursor-based pagination with formatPaginationLog warnings when multiple pages are fetched, and next hints in JSON output.
  • Help theme — colour-coded help via oclif theme (commands cyan, flags whiteBright, headers bold, defaults yellow, required red).
  • Error handling — fatal errors now flow through a single this.fail() funnel that preserves Ably error codes/HTTP status and emits structured JSON error envelopes.

Fixed

  • Many fixes around JSON output consistency, timestamp formatting, error envelopes, billable message warnings, channel-rule handling, push message shape, batch publish, room messages subscribe across multiple rooms, presence flows, and exit codes.
  • Web CLI: file-read security hardening, auto-connect detection with signed config, domain-scoped credential clearing.
  • Spaces enter no longer triggers on read-only commands (subscribe/get are now passive observers).
  • Duplicated "Press Ctrl+C to exit" suffixes removed from holding messages.

Removed

  • BREAKING: Auth CLI flags (see Changed section above)

Migration Notes

If you have scripts targeting v0.x, the most likely breakages are:

  1. Replace --api-key/--token/--access-token flags with environment variables (ABLY_API_KEY, ABLY_TOKEN, ABLY_ACCESS_TOKEN) or run ably login once on the host.
  2. Move primary entity identifiers from flags to positional args, e.g.:
    • ably apps update --name my-app …ably apps update my-app …
    • ably channels publish --channel foo --message barably channels publish foo bar
    • ably spaces locations set --location ./path …ably spaces locations set ./path …
  3. Update JSON consumers — top-level shape now includes type, command, and success fields, with payload nested under a domain key (message, cursor, lock, rules, etc.).
  4. Rename argument references in any error-handling code that matched on previous arg names.
  5. ably auth revoke-token <TOKEN>ably auth revoke-token --client-id <ID> or --revocation-key <KEY> (the positional TOKEN arg is no longer accepted).

v0.17.0

09 Mar 10:32
8333bed

Choose a tag to compare

Added

  • channels inspect command to open the channel dashboard
  • Channel push notification support via extras in message data
  • Unified --start and --end flags for all history commands (ISO 8601, Unix ms, or relative e.g. "1h", "30m")

Changed

  • stats command moved to top-level (was under apps)
  • Streamlined flag architecture and unified output formatting across all commands
  • BREAKING: Auth flags (--api-key, --token, --access-token) removed — use ably login or environment variables (ABLY_API_KEY, ABLY_TOKEN, ABLY_ACCESS_TOKEN) instead

Fixed

  • Various quality-of-life improvements including better error messages, corrected help examples, and more reliable channel rule handling

Removed

  • Built-in MCP server