WalkingPad — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the walkingpad-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
- Install via the Printing Press installer. It defaults binaries to
$HOME/.local/binon macOS/Linux and%LOCALAPPDATA%\Programs\PrintingPress\binon Windows:npx -y @mvanhorn/printing-press-library install walkingpad --cli-only - Verify:
walkingpad-pp-cli --version - Ensure the reported install directory is on
$PATHfor the agent/runtime that will invoke this skill.
If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):
go install github.com/mvanhorn/printing-press-library/library/devices/walkingpad/cmd/walkingpad-pp-cli@latest
If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
When to Use This CLI
Reach for this CLI whenever an agent or script needs to inspect a WalkingPad's recorded walk history, compute streaks/trends/calories, or drive a physical belt from a laptop instead of the phone app. It is ideal for "how far did I walk today / this week", consecutive-day streak tracking, calorie estimates the belt won't report, exporting walks to Apple Health, and — on a live build — starting, holding, and stopping the belt over a reliable held BLE connection. The MCP surface mirrors the read and history/analytics commands so an agent can answer walking questions without the phone app.
Unique Capabilities
These capabilities aren't available in any other tool for this device.
Local history & analytics
The belt loses its run memory on power-cut. This CLI persists every recorded walk locally so the long view survives.
today— Today's recorded totals: distance, steps, active minutes, session count.walkingpad-pp-cli today --jsonstreak— Current consecutive-day walking streak.walkingpad-pp-cli streak --jsontrends— Per-day distance, steps, and active minutes over a window (including zero-activity days).walkingpad-pp-cli trends --days 30 --jsoncalories— Estimate calories burned from your body weight (the belt never reports them). Set weight first withprofile set --weight <kg>.walkingpad-pp-cli profile set --weight 80 walkingpad-pp-cli calories --days 7 --jsonexport— Writedaily.json(last 60 days) andyesterday.jsonfor an iPhone Shortcut to log Walking workouts into Apple Health.walkingpad-pp-cli export --json
Reliable live control
run— Hold one BLE connection for the whole walk: switch to manual, start at--speed, stream live status, record the walk, and stop with the firmware's ceremony when--durationelapses or on Ctrl-C. The only reliable way to actually walk; a one-shotstartdoes not sustain the belt.walkingpad-pp-cli run --speed 2.0 --duration 30m --live --confirm-physical-effectstop— Idle a running belt with the firmware's stop ceremony (speed-0 → settle → standby).walkingpad-pp-cli stop --live --confirm-physical-effect
Device discovery
scan— Find any compatible WalkingPad by its BLE service UUID rather than its name, so renamed or family-variant belts are still discovered.walkingpad-pp-cli scan --live
Command Reference
Live device control
walkingpad-pp-cli run— Start a guided walk: run the belt over a held connection and record itwalkingpad-pp-cli stop— Stop the belt (speed-0, settle, then switch to standby)walkingpad-pp-cli prefs— Configure belt preferences (max-speed,start-speed,child-lock,auto-start,sensitivity,units)
Low-level single-write commands also exist —
start,wake,set-speed <kmh>, andset-mode <mode>— for advanced use. They issue one BLE write and do not sustain the belt; preferrun/stopfor actual walks. Seewalkingpad-pp-cli --help.
Live telemetry
walkingpad-pp-cli status— Read device status (replay-backed by default; live with--live)walkingpad-pp-cli monitor— Stream live belt telemetry until stoppedwalkingpad-pp-cli last-record— Read the belt's last stored run (time, distance, steps)walkingpad-pp-cli record— Record a live walk into the local history store
Local history & analytics
walkingpad-pp-cli today— Show today's recorded walking totalswalkingpad-pp-cli sessions— List recorded sessions for a date (default today)walkingpad-pp-cli trends— Show per-day walking totals over a windowwalkingpad-pp-cli streak— Show the current consecutive-day walking streakwalkingpad-pp-cli calories— Estimate calories burned (the belt never reports them)walkingpad-pp-cli export— Export daily totals as JSON (e.g. for an Apple Health Shortcut)
Profile
walkingpad-pp-cli profile set— Set your body weight (kg) for calorie estimateswalkingpad-pp-cli profile show— Show your saved body profile
Diagnostics & discovery
walkingpad-pp-cli doctor— Check BLE readiness, build, and (with--live) device reachabilitywalkingpad-pp-cli capabilities— Show generated BLE capability and safety metadatawalkingpad-pp-cli scan— Discover nearby devices by their BLE service (requires--live)walkingpad-pp-cli session— Manage the replay-backed local BLE session runtime
Live Device Control (BLE)
By default the CLI is replay-backed and never opens a connection — safe to run anywhere. To actuate a real belt:
- Build with the BLE backend:
go build -tags ble_live ./...(CoreBluetooth/CGO on macOS, D-Bus on Linux, WinRT on Windows). - Pass
--liveto contact the device, with optional--addressand--timeout. - Safety classes:
physical-effectcommands (run,stop,start,wake,set-speed) move the belt;configuration-riskcommands (set-mode, everyprefswrite) change persistent settings. Both require--confirm-physical-effect(or--dry-runto preview first). - One client at a time: most belts accept a single BLE connection — close the official WalkingPad app before connecting.
run, notstart: a one-shotstartwrite does not keep the belt going;runholds the connection for the whole walk. Userunto actually walk.
Inspect the full callable/withheld surface and safety metadata with walkingpad-pp-cli capabilities --json, and check live readiness with walkingpad-pp-cli doctor.
Recipes
How far have I walked today
walkingpad-pp-cli today --json
Today's distance, steps, active minutes, and session count from the local history store.
Walking streak and weekly trend
walkingpad-pp-cli streak --json
walkingpad-pp-cli trends --days 7 --json
Consecutive-day streak plus per-day totals for the last week.
Calorie estimate (set weight once)
walkingpad-pp-cli profile set --weight 80
walkingpad-pp-cli calories --days 7 --json
MET-method estimate from recorded sessions and body weight — the number the belt refuses to report.
Drive a real belt and record the walk (live build)
walkingpad-pp-cli run --speed 2.0 --duration 30m --live --confirm-physical-effect
Holds the BLE connection, runs the belt at 2 km/h for 30 minutes, records the walk, then stops it.
Preview a device write without sending it
walkingpad-pp-cli run --speed 2.0 --dry-run --json
--dry-run shows the planned write and safety class without contacting the belt.
Agent Mode
Add --agent (equivalent to --json) to any command for machine-readable JSON on stdout, errors on stderr.
- Pipeable — JSON on stdout, errors on stderr
- Previewable —
--dry-runshows a device write without sending it - Non-interactive — never prompts; every input is a flag or positional argument
- Safe by default — replay-backed unless
--liveis passed against a-tags ble_livebuild; physical-effect and configuration-risk commands require--confirm-physical-effect
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Error |
Argument Parsing
Parse $ARGUMENTS:
- Empty,
help, or--help→ showwalkingpad-pp-cli --helpoutput - Starts with
install→ ends withmcp→ MCP installation; otherwise → see Prerequisites above - Anything else → Direct Use (execute as CLI command with
--agent)
MCP Server Installation
walkingpad-pp-mcp is a stdio MCP server that mirrors the read and history/analytics commands as agent tools (held-connection control commands are hidden). Install the MCP binary from this CLI's published public-library entry or pre-built release, then register it:
claude mcp add walkingpad-pp-mcp -- walkingpad-pp-mcp
Verify: claude mcp list
Direct Use
- Check if installed:
which walkingpad-pp-cliIf not found, offer to install (see Prerequisites at the top of this skill). - Match the user query to the best command from the Unique Capabilities and Command Reference above.
- Execute with the
--agentflag:walkingpad-pp-cli <command> [subcommand] [args] --agent - If ambiguous, drill into subcommand help:
walkingpad-pp-cli <command> --help. - For any command that contacts a real belt (
--live), confirm the user wants physical actuation before running it, and pass--confirm-physical-effectonly with that confirmation.