You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,8 +22,8 @@ the agent-side scope-validation header on every governed request via
22
22
23
23
### Changed
24
24
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).
27
27
28
28
### Added
29
29
@@ -38,6 +38,10 @@ the agent-side scope-validation header on every governed request via
38
38
-`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`.
39
39
-`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.
40
40
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).
-**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).
-**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).
318
318
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.
# 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:
Copy file name to clipboardExpand all lines: skills/pro-tier-status/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ The script's `tier` line takes one of three shapes — surface whichever one the
20
20
21
21
-`tier Pro tier active (expires 2026-08-03, 90 days remaining)` — paid Pro tier active.
22
22
-`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`.
24
24
-`tier Free tier (no AXON- license token configured)` — no token loaded.
25
25
26
26
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