Skip to content

Commit 7c37d5c

Browse files
docs(v1.2.0): expand Pro tier README intro + URL fix (#52)
* docs(v1.2.0): expand Pro tier README intro + URL fix Two changes for the v1.2.0 release line: 1. Expand "Pro tier (paid)" section in README.md The existing tier description was technical (X-License-Token, plugin-claim middleware) but didn't say where to buy or how to find the tenant_id. Adds: tier-line numbers (Free=3d/200, Pro=30d/1000), price ($9.99 / 90 days, no auto-renewal, 14-day refund), and the find-tenant-id → paste-at-Stripe upgrade flow pointing at www.getaxonflow.com/pricing. 2. Upgrade-pointer URL fix across all surfaces in this repo Old URL https://getaxonflow.com/pro returned 404 — also updated bare-URL refs (getaxonflow.com/pro without https:// prefix in the runtime-e2e test comment + CHANGELOG body). Replaced with https://www.getaxonflow.com/pricing/ which already resolves and carries the Plugin Pro $9.99 tier card with the Stripe buy button. Files: scripts/recover.sh, skills/pro-tier-status/SKILL.md, runtime-e2e/v1-paid-tier/test.sh, CHANGELOG.md (1.2.0 entry — not yet tagged). Self-review (HARD RULE #1): - Walked every hunk per the 5-question protocol. - Pricing/quota numbers match what the platform enforces. - "scripts/recover.sh status" referenced in the new intro paragraph already exists at line 323 (verified earlier). - Out of scope: MCP tool axonflow_get_tenant_id (deferred). Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com> Signed-off-by: Saurabh Jain <saurabh.jain@getaxonflow.com> * docs(readme): self-review fix — make tenant_id discovery explicit Self-review feedback: Pro tier section was a single paragraph that combined "find tenant_id, buy, install token" into one wall of text. Restructured into 3 explicit numbered steps with bold headings: Find your tenant ID → Buy at the pricing page → Install the issued license token. Each step now stands alone and gives the exact command to run. Step 1 embeds `bash scripts/recover.sh status` inline (the existing status surface that prints tenant_id), with an alternative agent-driven path ("ask the agent: what is my tenant ID?") for the chat surface — backed by the pro-tier-status skill. Step 3's two install methods (env var or scripts/recover.sh apply-token) are unchanged content, just reformatted as a sub-block of step 3. Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com> Signed-off-by: Saurabh Jain <saurabh.jain@getaxonflow.com> * docs: drop www. from pricing URL across all surfaces Per user direction: standardise on https://getaxonflow.com/pricing/ (no www subdomain). Both forms resolve (200) today; bare domain is the canonical form. Sweep covers README, scripts/recover.sh, skills/pro-tier-status/SKILL.md, runtime-e2e/v1-paid-tier/test.sh, and CHANGELOG.md. Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com> Signed-off-by: Saurabh Jain <saurabh.jain@getaxonflow.com> * docs(changelog): dedicated bullet for the upgrade-URL alignment Per cross-plugin review feedback: the URL fix from getaxonflow.com/pro (404) to getaxonflow.com/pricing/ (working) was previously documented only via inline mentions in unrelated tier-line / status-output bullets. Adding a dedicated "### Fixed" bullet so the change is discoverable as a release-note line item, with a cross-reference to the same fix in companion plugins. Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com> Signed-off-by: Saurabh Jain <saurabh.jain@getaxonflow.com> --------- Signed-off-by: Saurabh Jain <saurabhjain1592@gmail.com> Signed-off-by: Saurabh Jain <saurabh.jain@getaxonflow.com>
1 parent 4847d28 commit 7c37d5c

5 files changed

Lines changed: 32 additions & 14 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ the agent-side scope-validation header on every governed request via
2222

2323
### Changed
2424

25-
- **`scripts/recover.sh status` tier line now surfaces Pro license expiry date.** The status output's `tier` line parses the JWT `exp` claim from the configured Pro license token and renders one of three shapes: `Pro tier active (expires YYYY-MM-DD, N days remaining)` when active, `Free tier (Pro expired YYYY-MM-DD — visit https://getaxonflow.com/pro to renew)` when the token is on disk but its `exp` has passed (plugin will not forward an expired token), or `Free tier (no AXON- license token configured)` when no token is loaded. Lets users see their renewal date without hitting the agent and catches the lapsed-token state before their next governed call. Display only — JWT signature validation remains the platform's job. Pre-existing `Pro tier active` and `Free tier` substring assertions still hold.
26-
- **`scripts/recover.sh status` now surfaces tenant_id + upgrade URL.** Free-tier users need to find their `tenant_id` (`cs_<uuid>`) to paste into the Stripe Checkout custom field at `getaxonflow.com/pro`. The status output now reads `~/.config/axonflow/try-registration.json` (the auto-bootstrap registration file) and prints the tenant_id alongside endpoint + license-token state. Adds an `upgrade` line (default `https://getaxonflow.com/pro`, override via `AXONFLOW_UPGRADE_URL`) and copy-paste-ready upgrade instructions. Token still redacted to last 4 chars (no full bearer credential in stdout — see PR #41).
25+
- **`scripts/recover.sh status` tier line now surfaces Pro license expiry date.** The status output's `tier` line parses the JWT `exp` claim from the configured Pro license token and renders one of three shapes: `Pro tier active (expires YYYY-MM-DD, N days remaining)` when active, `Free tier (Pro expired YYYY-MM-DD — visit https://getaxonflow.com/pricing/ to renew)` when the token is on disk but its `exp` has passed (plugin will not forward an expired token), or `Free tier (no AXON- license token configured)` when no token is loaded. Lets users see their renewal date without hitting the agent and catches the lapsed-token state before their next governed call. Display only — JWT signature validation remains the platform's job. Pre-existing `Pro tier active` and `Free tier` substring assertions still hold.
26+
- **`scripts/recover.sh status` now surfaces tenant_id + upgrade URL.** Free-tier users need to find their `tenant_id` (`cs_<uuid>`) to paste into the Stripe Checkout custom field at `getaxonflow.com/pricing/`. The status output now reads `~/.config/axonflow/try-registration.json` (the auto-bootstrap registration file) and prints the tenant_id alongside endpoint + license-token state. Adds an `upgrade` line (default `https://getaxonflow.com/pricing/`, override via `AXONFLOW_UPGRADE_URL`) and copy-paste-ready upgrade instructions. Token still redacted to last 4 chars (no full bearer credential in stdout — see PR #41).
2727

2828
### Added
2929

@@ -38,6 +38,10 @@ the agent-side scope-validation header on every governed request via
3838
- `runtime-e2e/v1-paid-tier/test.sh` — drives the pre-tool hook against a local capture server and asserts the `X-License-Token` header is sent (env, TOML, env-overrides-TOML, absence, malformed) plus the live agent middleware path when `/health` advertises `plugin_claim_license`.
3939
- `runtime-e2e/recovery/test.sh` — drives `recover.sh` against a local fake recovery agent and asserts the full request → verify → persist → status path, including replay rejection and `license_token` preservation across credential re-recovery.
4040

41+
### Fixed
42+
43+
- **Upgrade-pointer URL aligned with the canonical pricing page.** `AXONFLOW_UPGRADE_URL` default (the URL surfaced by `scripts/recover.sh status` and the `pro-tier-status` skill to free-tier users, plus embedded in the `tier Free tier (Pro expired ... — visit ... to renew)` line) is now `https://getaxonflow.com/pricing/`. The previous default `https://getaxonflow.com/pro` returned 404 — that page was referenced in PRDs but never built. The pricing page already resolves and carries the Plugin Pro $9.99 tier card with the Stripe buy button, so plugin status output now points free-tier users at a working URL. Override via `AXONFLOW_UPGRADE_URL` env var if needed. Same fix landed in companion plugin releases (openclaw-plugin v2.2.0, claude-plugin v1.2.0, cursor-plugin v1.2.0).
44+
4145
## [1.1.0] - 2026-05-04 — 4 read-side governance skills
4246

4347
### Added

README.md

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -313,18 +313,32 @@ export AXONFLOW_TIMEOUT_SECONDS=12
313313

314314
The plugin runs in two tiers:
315315

316-
- **Free** — no `X-License-Token` header sent; agent applies free-tier quotas, retention, and capability limits.
317-
- **Pro**`X-License-Token: AXON-...` sent on every governed request; agent's plugin-claim middleware validates the Ed25519 signature + DB row and stamps a Pro-tier context (longer audit retention, larger payload caps, higher daily quotas).
316+
- **Free** — no `X-License-Token` header sent; agent applies free-tier quotas (3-day audit retention, 200 governed events / day).
317+
- **Pro**`X-License-Token: AXON-...` sent on every governed request; agent's plugin-claim middleware validates the Ed25519 signature + DB row and stamps a Pro-tier context (30-day audit retention, 1,000 events / day, plus license-gated capabilities).
318318

319-
After buying through Stripe Checkout you'll receive an `AXON-`-prefixed license token by email. Install it one of two ways:
319+
Pro is **$9.99 USD for 90 days**, one-time payment, no auto-renewal, 14-day no-questions refund. See [getaxonflow.com/pricing](https://getaxonflow.com/pricing/) for the full breakdown and the Stripe buy button.
320320

321-
```bash
322-
# Operator override / CI
323-
export AXONFLOW_LICENSE_TOKEN="AXON-...your-token..."
321+
To activate Pro on this Codex install:
324322

325-
# Persistent: write to ~/.codex/axonflow.toml (mode 0600)
326-
bash scripts/recover.sh apply-token
327-
```
323+
1. **Find your tenant ID.** From the plugin install root, run:
324+
325+
```bash
326+
bash scripts/recover.sh status
327+
```
328+
329+
The output includes a `tenant_id cs_<uuid>` line — that's the value Stripe Checkout needs. Copy it. (Or ask the agent: "what is my AxonFlow tenant ID?" — the [`pro-tier-status` skill](#agent-skills) will run the script and surface the value.)
330+
331+
2. **Buy at the pricing page.** Visit [getaxonflow.com/pricing](https://getaxonflow.com/pricing/) and click **Buy Plugin Pro — $9.99**. At Stripe Checkout, paste your `tenant_id` into the **AxonFlow tenant ID** custom field.
332+
333+
3. **Install the issued license token.** After checkout you'll receive an `AXON-...` token by email. Install it one of two ways:
334+
335+
```bash
336+
# Operator override / CI
337+
export AXONFLOW_LICENSE_TOKEN="AXON-...your-token..."
338+
339+
# Persistent: write to ~/.codex/axonflow.toml (mode 0600)
340+
bash scripts/recover.sh apply-token
341+
```
328342

329343
Check current tier and config:
330344

runtime-e2e/v1-paid-tier/test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ fi
276276

277277
# 6d: status MUST surface the upgrade URL so users know where to buy Pro.
278278
# The Stripe Payment Link (set by operators in Stripe Dashboard, fronted
279-
# by getaxonflow.com/pro) is the entry point for the buyer flow — without
279+
# by getaxonflow.com/pricing/) is the entry point for the buyer flow — without
280280
# this line, users have no way to find it from the plugin.
281281
if echo "$STATUS_OUT" | grep -qE 'upgrade\s+https?://'; then
282282
PASS "status surfaces the upgrade URL"

scripts/recover.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ cmd_status() {
320320
fi
321321
fi
322322

323-
local upgrade_url="${AXONFLOW_UPGRADE_URL:-https://getaxonflow.com/pro}"
323+
local upgrade_url="${AXONFLOW_UPGRADE_URL:-https://getaxonflow.com/pricing/}"
324324

325325
# Tier-line resolution. Three shapes (V1 SaaS Plugin Pro tier-line
326326
# surface parity across the AxonFlow plugin set):

skills/pro-tier-status/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ The script's `tier` line takes one of three shapes — surface whichever one the
2020

2121
- `tier Pro tier active (expires 2026-08-03, 90 days remaining)` — paid Pro tier active.
2222
- `tier Pro tier active (expires UNKNOWN — could not parse token)` — token configured but the JWT body did not parse. Treat as Pro for display; the platform is the source of truth on validity.
23-
- `tier Free tier (Pro expired 2026-02-04 — visit https://getaxonflow.com/pro to renew)` — token is on disk but its `exp` has passed. The plugin will not forward an expired token; the user must buy a renewal and replace the token via `AXONFLOW_LICENSE_TOKEN=<new>` or `scripts/recover.sh apply-token`.
23+
- `tier Free tier (Pro expired 2026-02-04 — visit https://getaxonflow.com/pricing/ to renew)` — token is on disk but its `exp` has passed. The plugin will not forward an expired token; the user must buy a renewal and replace the token via `AXONFLOW_LICENSE_TOKEN=<new>` or `scripts/recover.sh apply-token`.
2424
- `tier Free tier (no AXON- license token configured)` — no token loaded.
2525

2626
When the user lands on `Free tier (Pro expired …)`, point them at the renew URL embedded in the line and the `scripts/recover.sh apply-token` hint the script prints below.

0 commit comments

Comments
 (0)