All notable changes to pm, the PushMetrics command-line tool (pushmetrics-cli on PyPI). Newest first. Dates are the day the version reached PyPI. Upgrade with pipx upgrade pushmetrics-cli.
0.3.0 - Unreleased
Added
pm token create NAME --scope readmakes a read-only token: it can read and query metrics views; SQL, runs and changes are refused. Without--scope, tokens have full access as before.pm token create NAME --scope readchecks that the server really made a read-only token. If it did not (a server older than read-only tokens),pmrevokes the token at once, or, if that fails, prints its id and thepm token revokecommand to run. Either way it prints no token and exits with status 1.pm whoamishows the session'stoken_scope(full,read, orunknownon an older server), andpm token listhas aSCOPEcolumn.- When the server refuses a request because the token is read-only,
pmadds a hint that tells an AI agent to stop and ask the person it works for instead of looking for another token.
Fixed
- An API error whose body has Windows line endings, such as a proxy's error page, no longer ends each line with a stray space.
0.2.0 - 2026-11-12
Added
pm schedulelists, creates, updates, pauses, resumes and runs a report's schedules.pm schedule rundelivers to all its destinations: it asks first in a terminal and needs--yesotherwise.pm deliverabilitylists the email addresses the email provider blocks for this workspace and shows one address's history; admins can unblock an address.pm config listshowsPM_CLIENTamong the environment overrides, and the cleaned-up valuepmactually sends when it differs from what you set.
Fixed
- Text from the server in tables and
key: valueoutput no longer carries terminal control characters, so it cannot change your terminal. - Multi-line text from the server, such as report YAML or a database comment, keeps its line breaks but loses other control characters.
0.1.1 - 2026-11-11
Added
PM_CLIENTtells PushMetrics which tool runspm(for exampleciorclaude-code).pmsends it with every request aspm/<version> (client=<name>; py/<version>). It is not a secret and does not change what the token can do.pm config listshows the config home, wherepmkeeps its configuration and tokens (config_homewith--json), and listsPM_CONFIG_HOMEwith the environment overrides. WhenPM_CONFIG_HOMEpoints somewhere other than the default, theNot logged inerror also names the config home.
Changed
- A request refused because the organization has no active subscription now says what to do:
pm needs an active PushMetrics subscription for this workspace's organization. Start a trial or upgrade in the web app. - Help and login text name the token settings page by its new name, Settings > CLI & API.
Fixed
pm config setwritesconfig.tomlin one step, so an interrupted write cannot leave a broken file. A newconfig.tomlis readable only by you, an existing one keeps its permissions, and aconfig.tomlthat is a symbolic link stays a link.- An unreadable or invalid
config.tomlgives an error that names the file and how to fix it, instead of a traceback. pm help metrics-viewno longer fails on Windows when its output is piped or redirected.
0.1.0 - 2026-10-16
Added
- First release of
pm, published on PyPI aspushmetrics-cli, for Python 3.9 or newer. pm login --tokenlogs in with a personal access token, from a hidden prompt or from stdin, and stores it in the operating system's credential store.PM_API_TOKENworks without storing anything and wins over a stored token.pm whoamishows who you are;pm logoutforgets the token.- Command groups for reports and runs (
pm report,pm run), report blocks (pm sql,pm chart,pm email,pm slack,pm sftp,pm tableau,pm slides,pm explore,pm metrics-view,pm block,pm saved-block), and the rest of the workspace (pm database,pm user,pm role,pm folder,pm token,pm workspaceand more).pm helpshows the map of every group. --jsonon every command, before or after the action. Data goes to stdout, messages and errors to stderr.pmexits with 0 on success, 1 when a command fails and 2 when the command line is wrong.- Profiles for several workspaces:
--profile <name>,pm config setandpm config list.