Usage

Commands

CommandWhat it does
python3 wispr_pro.py startStart proxy (foreground) + relaunch Wispr Flow
python3 wispr_pro.py stopStop proxy + quit Wispr Flow
python3 wispr_pro.py statusShow proxy / port / app state
python3 wispr_pro.py trustTrust the proxy CA in the System keychain (sudo)
python3 wispr_pro.py selftestVerify the rewrite on a captured payload
python3 wispr_pro.py restartStop, then start again

start blocks like mitmdump. Run in the background:

nohup python3 wispr_pro.py start >/tmp/wispr-pro.log 2>&1 &

Customization flags

All flags come after the subcommand:

python3 wispr_pro.py start \
  --plan FLOW_PRO_YEARLY \      # plan: FLOW_PRO_MONTHLY (default), FLOW_PRO_YEARLY, …
  --status active \             # status: active (default), trialing, …
  --trial-days 30 \             # total_trial_days + daysLeft
  --trial-ends-at 1893456000 \  # unix timestamp
  --credits 99999 \             # credits
  --no-subscribed \             # --subscribed / --no-subscribed (is_subscribed)
  --days-left 30 \              # daysLeft only
  --marker total_trial_days \   # JSON key that triggers the rewrite
  --host 127.0.0.1 --port 8080 \# proxy bind address
  --ca-dir ~/.wispr_pro \       # state dir (config, CA, pid)
  --app "/Applications/Wispr Flow.app" \
  --no-relaunch                 # don't relaunch Wispr Flow

See python3 wispr_pro.py start --help for the full list.

Persistent config

Values can be persisted in ~/.wispr_pro/config.toml (created on first start). Flags override it:

[rewrite]
status = "active"
plan = "FLOW_PRO_MONTHLY"
total_trial_days = 365
trial_ends_at = 1893456000
credits = 99999
is_subscribed = true
days_left = 365
marker = "total_trial_days"

Verify it worked

Open Wispr Flow — the plan should show Pro. Check the proxy log:

grep "\[PRO\]" ~/.wispr_pro/proxy.log | tail
# [PRO] rewrote /api/v1/payment/subscription?...: {...FLOW_BASIC...} -> {...FLOW_PRO_MONTHLY...}