Skip to content

Commit a968a6f

Browse files
feat(release): v7.8.0 — V1 Plugin Pro graduated freemium + structured upgrade envelope + 5 new MCP tools + Rust SDK announcement (#387)
V1 Plugin Pro completion release. Builds on v7.7.0's launch with the graduated freemium model that turns every Free-tier limit into a conversion moment instead of a dead-end 401/429. Pro buyers get the right caps everywhere, MCP governance traffic counts against daily quota, and a structured upgrade envelope replaces five different per-route ad-hoc 429 bodies with one wire shape that all four plugins parse identically. No breaking changes for self-hosted Enterprise deployments. 5th SDK live — Rust preview at v0.1.0 on crates.io covering proxy + audit + basic MAP + basic MCP + OpenAI interceptor. Foundation contributed voluntarily by Francesco Pierfederici. Customer-facing surfaces: - Five Pro differentiators, all enforced. Daily quota (Free 200 → Pro 2,000), audit retention (Free 3d → Pro 30d), custom tenant policies (Free 2 active → Pro unlimited), HITL approvals (Free 1 per rolling 7d → Pro unlimited), LLM cost pre-flight (Pro only). Existing Pro buyers automatically receive the higher cap. - Structured V1 upgrade envelope on every 429 daily-quota and 403 graduated / Pro-only path. One JSON shape carries error, limit_type, tier, limit, remaining, window, resets_at, and upgrade.{tier, wording, compare_url, buy_url}. Three locked headers: X-Axonflow-Tier-Limit, X-Axonflow-Upgrade-URL, Retry-After. Same envelope on HTTP and JSON-RPC paths. - Five new MCP tools on /api/v1/mcp-server: axonflow_get_tenant_id, axonflow_request_approval, axonflow_create_tenant_policy, axonflow_get_cost_estimate, axonflow_list_pro_features. All carry an explicit success: true field. tools/list is tier-filtered — Pro-only tools don't appear in Free users' tool lists. - Daily-cap enforcement on /api/v1/mcp-server tools/call, /api/v1/mcp/check-input, /api/v1/mcp/check-output. These previously bypassed daily quota. Breaking change: integrators that previously parsed the auth-path's nested {error: {code, message}} 429 body need to update to read the V1 envelope's top-level error string + surrounding fields. Stable SDKs (Go / Python / TypeScript / Java) unchanged at v7.1.0. Companion plugin release planned at v1.3.0 / v2.3.0. Security: Apache Thrift CVE-2026-41602 (HIGH — Integer Overflow). Indirect dep github.com/apache/thrift bumped v0.22.0 → v0.23.0 via the Snowflake connector chain. See CHANGELOG.md v7.8.0 for the full per-edition breakdown. Source Commits: 5b1b3732a,0440dc0e3,9b4c05898,5a55d21ce,7e339cb35,a59c53035,006d8f2d2,523aabdf5,4432d5014,1fc621114,6d6065054,93636f9c7,8108e299c,d0fe54f2b,db7f149b0,1ed30698c Authored-by: Saurabh Jain <saurabhjain1592@gmail.com> Signed-off-by: AxonFlow Team <bot@getaxonflow.com> Co-authored-by: AxonFlow Team <bot@getaxonflow.com>
1 parent c94f2b5 commit a968a6f

34 files changed

Lines changed: 2827 additions & 1226 deletions

CHANGELOG.md

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,56 @@ community mirror, **Enterprise** changes are EE-only.
1212

1313
## [Unreleased]
1414

15+
## [7.8.0] - 2026-05-07 — V1 Plugin Pro graduated freemium + structured upgrade envelope + 5 new MCP tools + Rust SDK announcement
16+
17+
**V1 Plugin Pro completion release.** Builds on v7.7.0's launch with the graduated freemium model that turns every Free-tier limit into a conversion moment instead of a dead-end 401/429. Pro buyers now get the right caps everywhere, MCP governance traffic counts against daily quota, and a structured upgrade envelope replaces five different per-route ad-hoc 429 bodies with one wire shape that all four plugins parse identically. No breaking changes for existing self-hosted Enterprise deployments; Free / Pro / Premium SaaS Plugin tiers all keep their v7.7.0 wire shape, plus richer fields.
18+
19+
**5th SDK live — Rust preview at v0.1.0.** First-ever AxonFlow Rust SDK shipped 2026-05-05 to [crates.io](https://crates.io/crates/axonflow-sdk-rust) covering proxy + audit + basic MAP + basic MCP + OpenAI interceptor. Repo: [getaxonflow/axonflow-sdk-rust](https://github.com/getaxonflow/axonflow-sdk-rust). Quickstart: [docs/sdk/rust-quickstart.md](docs/sdk/rust-quickstart.md). Foundation contributed voluntarily by Francesco Pierfederici.
20+
21+
**V1 customer-facing surfaces in this release:**
22+
23+
- **Five Pro differentiators, all enforced.** Daily quota (Free 200 → Pro 2,000), audit retention (Free 3d → Pro 30d), custom tenant policies (Free 2 active → Pro unlimited), HITL approvals (Free 1 per rolling 7d → Pro unlimited), LLM cost pre-flight (Pro only). Existing Pro buyers automatically receive the higher daily-quota cap on this release.
24+
- **Structured upgrade envelope across every Free-tier limit hit.** One JSON shape (`{error, limit_type, tier, limit, remaining, window, resets_at, upgrade.{tier, wording, compare_url, buy_url}}`) on 429 daily-quota AND 403 graduated / Pro-only paths. Three locked headers (`X-Axonflow-Tier-Limit`, `X-Axonflow-Upgrade-URL`, `Retry-After`). Plugin parsers read the same envelope on the HTTP path and on the JSON-RPC path (where it rides inside `result.content[0].text` with `isError: true`).
25+
- **Five new MCP tools on `/api/v1/mcp-server`.** `axonflow_get_tenant_id` (Free + Pro), `axonflow_request_approval` (Free 1 per rolling 7d, Pro unlimited), `axonflow_create_tenant_policy` (Free 2 active max, Pro unlimited), `axonflow_get_cost_estimate` (Pro only — wraps `/api/v1/plans/estimate`), `axonflow_list_pro_features` (data only, all tiers). All five carry an explicit `success: true` field so LLM consumers in Cursor / Claude Code / Codex / OpenClaw see an unambiguous positive signal on every successful call.
26+
- **Tier-aware `tools/list` filtering.** Free callers see N tools, Pro callers see N+M. Honest visibility — `axonflow_get_cost_estimate` does not appear in a Free user's tool list at all (not just rejected on call).
27+
28+
**Companion plugin release planned at v1.3.0 / v2.3.0** with envelope-aware error handling (parse → display → honor `Retry-After`) and skill / README mentions of the new MCP tools. Plugin tags + npm / ClawHub publishes follow on their own release schedule.
29+
30+
**Stable SDKs (Go / Python / TypeScript / Java) unchanged at v7.1.0.** Existing SDK callers inherit the higher Pro daily quota with zero code change — V1 Plugin Pro is server-side and plugin-side only.
31+
32+
### Community
33+
34+
#### Added
35+
36+
- **Tier-gating framework on MCP tools.** Tool definitions can now declare `RequiredTier` ("Pro" / "Premium") which drives `tools/list` filter visibility and `tools/call` dispatch rejection, and `FreeUsageLimit` which enforces graduated-cap behavior — `MaxCount` for object-creation limits ("2 active custom policies") and `WindowSeconds` + `MaxInWindow` for rolling-window action limits ("1 HITL approval per 7 days"). Both fields default zero / nil so every existing tool is unchanged.
37+
- **Structured V1 upgrade envelope.** One shape across HTTP (429 daily-quota, 403 active-policies / hitl-approvals / feature-pro-only) and JSON-RPC (wraps the same envelope inside `result.content[0].text` with `isError: true`). Locked URLs `https://getaxonflow.com/pricing/` (compare) + `https://buy.stripe.com/bJe28qbztcdVchjdkw8k800` (buy) are the single source of truth across agent code, license email body, Stripe Dashboard, and customer-facing landing pages.
38+
- **`axonflow_get_tenant_id` MCP tool.** Returns `{success, tenant_id, tier, upgrade_url, buy_url}`. The AI in any host CLI can answer "what's my tenant ID?" / "what tier am I on?" inline without running a shell script — replaces the per-plugin discovery scripts with auto-discovered MCP tool dispatch.
39+
- **`axonflow_request_approval` MCP tool.** Inline HITL approval gate before risky operations (e.g. `rm -rf`, `git push --force`, production deploy). Free tier supports 1 approval per rolling 7-day window; Pro unlimited.
40+
- **`axonflow_create_tenant_policy` MCP tool.** Lets the AI create tenant-scoped governance policies on the fly — *"block any tool call that writes to ~/.ssh/"*, *"require approval for any `rm -rf`"*. Free tier supports 2 active policies (delete to make room); Pro unlimited.
41+
- **`axonflow_get_cost_estimate` MCP tool.** LLM cost pre-flight before running multi-step plans — the headline anti-runaway-bills feature. Pro tier only; Free callers see the tool filtered out of `tools/list`. Wraps the orchestrator's `/api/v1/plans/estimate` so per-token pricing follows the orchestrator's authoritative pricing config — no drift between proxy enforcement and tool-reported estimate.
42+
- **`axonflow_list_pro_features` MCP tool.** Returns the V1 Pro feature list as data — five differentiators, exact pricing, tone-direction quote — so a Free user's AI can faithfully answer "what would I get if I upgraded?" without reading docs.
43+
- **Daily-cap enforcement on every governance route.** Three previously-leaking routes — `/api/v1/mcp-server tools/call`, `/api/v1/mcp/check-input`, `/api/v1/mcp/check-output` — now consume daily quota and emit the V1 envelope on rejection. Pre-fix: Free tenants could get unlimited governance evaluation by routing through MCP. Post-fix: every governed event counts.
44+
- **`success: true` field on every V1 MCP tool response.** Plus companion `submitted: true` / `awaiting_review: true` on `axonflow_request_approval` and `created: true` on `axonflow_create_tenant_policy` so LLM consumers don't misread `status: "pending"` (HITL row state) or `enabled: true` (policy state, not operation outcome) as failure. Locks unambiguous tool-success semantics for AI consumers across host CLIs.
45+
- **Telemetry stream classifier.** Every heartbeat row tagged `Stream=heartbeat` so the SDK / plugin heartbeat stream and a future Community SaaS operational stream remain distinguishable when both flow through the same telemetry pipeline.
46+
47+
#### Changed
48+
49+
- **Pro daily quota 1,000 → 2,000.** Existing Pro buyers automatically receive the higher cap on this release. Heaviest observed Free-tier daily volume in the week leading up to release was ~780 events for a single power user; 2,000 leaves comfortable headroom for a Pro user's normal day.
50+
- **MCP `tools/list` is tier-filtered.** Free callers see N tools (Pro-only ones omitted); Pro callers see N+M. The filter is honest visibility, not security — `tools/call` dispatch re-enforces the gate so a determined Free caller invoking by name still gets the structured rejection envelope.
51+
- **All daily-cap-exceeded responses now emit the V1 envelope.** Auth-path and proxy-path rejection bodies used to differ in shape for the same condition (one wrapped, one flat); both now emit the V1 envelope verbatim. Plugins or direct API consumers that previously parsed the auth-path's nested `{error: {code, message}}` shape will need to update to read the V1 envelope's top-level `error` string + richer surrounding fields — the v1.3.0 / v2.3.0 plugin train carries the parser change on the client side.
52+
- **`AXONFLOW_TELEMETRY=off` scope clarified in docs.** Controls the SDK / plugin heartbeat path only. Community SaaS operational data (registrations, audit logs, policy-enforcement records, request-header metadata) is processed inherent to running the hosted service and is independent of the heartbeat opt-out.
53+
54+
#### Fixed
55+
56+
- **Apache Thrift CVE-2026-41602 (HIGH — Integer Overflow).** Indirect dependency `github.com/apache/thrift` bumped from v0.22.0 to v0.23.0 via the Snowflake connector chain.
57+
58+
### Enterprise
59+
60+
#### Changed
61+
62+
- **`RecommendedPluginVersion` advertised in `/health`** bumps to claude / cursor / codex 1.3.0 and openclaw 2.3.0. `MinPluginVersion` floors stay at 1.0.0 / 2.0.0 — pre-1.x plugins ran the pre-DNT-removal contract and remain blocked; pre-V1-Plugin-Pro plugins continue to work but log an actionable upgrade warning on every governed call.
63+
- **`RecommendedSDKVersion` unchanged at v7.1.0.** This release is server-side and plugin-side only; the `X-Axonflow-Client` header semantics + scope-aware license validation that v7.1.0 SDKs already speak cover all V1 Plugin Pro paths.
64+
1565
## [7.7.0] - 2026-05-06 — V1 SaaS Plugin Pro launch + free-tier credential recovery + license matrix
1666

1767
**V1 launch release.** First public release of the paid Pro tier and credential recovery for AxonFlow Community SaaS. Self-hosted deployments are unaffected; existing Self-Hosted licenses keep validating via the documented backward-compat path.
@@ -34,11 +84,13 @@ community mirror, **Enterprise** changes are EE-only.
3484
survives the cascade for Article 30 compliance.
3585

3686
**Companion plugin and SDK release.** All four plugins
37-
(axonflow-claude-plugin, axonflow-cursor-plugin, axonflow-codex-plugin,
38-
axonflow-openclaw-plugin) and all four stable SDKs (Go, Python, TypeScript,
39-
Java) advance to v7.7.0 with the new `X-Axonflow-Client` header and
40-
scope-aware license validation. Existing v7.0.x callers continue to work
41-
without the header — they receive a one-time upgrade hint.
87+
(axonflow-claude-plugin, axonflow-cursor-plugin, axonflow-codex-plugin)
88+
advance to v1.2.0 and axonflow-openclaw-plugin advances to v2.2.0. All
89+
four stable SDKs (Go, Python, TypeScript, Java) advance to v7.1.0 with
90+
the new `X-Axonflow-Client` header and scope-aware license validation.
91+
Existing v7.0.x SDK / v1.1.x plugin callers continue to work without
92+
the header — they receive a one-time upgrade hint. (Per-version detail
93+
in the Plugin / SDK release-companion sections below.)
4294

4395
No breaking platform changes for existing self-hosted Enterprise tenants.
4496
Existing license tokens validate cleanly via the missing-`aud` fallback

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,11 @@ if (approval.isApproved()) {
525525

526526
> **[SDK Documentation](https://docs.getaxonflow.com/docs/sdk/overview)**
527527
528-
> **Telemetry:** SDKs send anonymous usage data (SDK version, OS, architecture) on initialization, including localhost and self-hosted evaluation environments outside sandbox mode. No prompts, payloads, API keys, or tenant identifiers are collected. Opt out: `export AXONFLOW_TELEMETRY=off`. `DO_NOT_TRACK` is **not** honored — it is commonly inherited from host tools and developer environments, which makes it an unreliable expression of user intent. See [Telemetry Documentation](https://docs.getaxonflow.com/docs/telemetry) for full details including SDK-level config options.
528+
> **Telemetry:** SDKs send anonymous usage data (SDK version, OS, architecture) on initialization, including localhost and self-hosted evaluation environments outside sandbox mode. No prompts, payloads, API keys, or tenant identifiers are collected. Opt out: `export AXONFLOW_TELEMETRY=off`.
529+
>
530+
> **Scope of `AXONFLOW_TELEMETRY=off`:** disables the anonymous SDK/plugin heartbeat. On self-hosted and in-VPC deployments, that heartbeat is the only data the SDK or plugin sends to AxonFlow, so setting `=off` means we receive nothing. On Community SaaS (`try.getaxonflow.com`) the hosted service also processes operational data — registrations, audit logs, policy enforcement records, workflow state, plan data, and request-header metadata aggregated for usage analytics — as part of running the platform; that operational data flow is governed by the [Privacy Policy](https://getaxonflow.com/privacy/), not by this env var.
531+
>
532+
> `DO_NOT_TRACK` is **not** honored — it is commonly inherited from host tools and developer environments, which makes it an unreliable expression of user intent. See [Telemetry Documentation](https://docs.getaxonflow.com/docs/telemetry) for full details including SDK-level config options.
529533
530534
---
531535

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7.7.0
1+
7.8.0

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ services:
8787
DEPLOYMENT_MODE: ${DEPLOYMENT_MODE:-community}
8888
AXONFLOW_INTEGRATIONS: ${AXONFLOW_INTEGRATIONS:-}
8989
AXONFLOW_LICENSE_KEY: ${AXONFLOW_LICENSE_KEY:-}
90-
AXONFLOW_VERSION: "${AXONFLOW_VERSION:-7.7.0}"
90+
AXONFLOW_VERSION: "${AXONFLOW_VERSION:-7.8.0}"
9191

9292
# Media governance (v4.5.0+) - set to "true" to enable in Community mode
9393
MEDIA_GOVERNANCE_ENABLED: ${MEDIA_GOVERNANCE_ENABLED:-}
@@ -223,7 +223,7 @@ services:
223223
PORT: 8081
224224
DEPLOYMENT_MODE: ${DEPLOYMENT_MODE:-community}
225225
AXONFLOW_LICENSE_KEY: ${AXONFLOW_LICENSE_KEY:-}
226-
AXONFLOW_VERSION: "${AXONFLOW_VERSION:-7.7.0}"
226+
AXONFLOW_VERSION: "${AXONFLOW_VERSION:-7.8.0}"
227227

228228
# HITL mode (Evaluation+) — set to "true" to enable the HITL workflow
229229
# engine backing WCP /steps/{step_id}/approve|reject, MAP plan-scoped

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# AxonFlow Documentation
22

3-
**Last Updated: May 2026** | **Platform: v7.7.0** | **SDKs: Python / Go / TypeScript / Java v7.1.0**
3+
**Last Updated: May 2026** | **Platform: v7.8.0** | **SDKs: Python / Go / TypeScript / Java v7.1.0 + Rust v0.1.0 (preview)**
44

55
Public documentation for AxonFlow - synced to the Community Edition repository.
66

docs/TELEMETRY.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ Any of these methods will disable telemetry:
4949
export AXONFLOW_TELEMETRY=off
5050
```
5151

52+
#### Scope of `AXONFLOW_TELEMETRY=off`
53+
54+
`AXONFLOW_TELEMETRY=off` disables the anonymous SDK/plugin heartbeat (version, OS, architecture). On **self-hosted** and **in-VPC** deployments, that heartbeat is the only data the SDK or plugin sends to AxonFlow, so setting `=off` means we receive nothing. On **Community SaaS** (`try.getaxonflow.com`) the hosted service also processes operational data — registrations, audit logs, policy enforcement records, workflow state, plan data, and request-header metadata aggregated for usage analytics — as part of running the platform; that operational data flow is governed by the [Privacy Policy](https://getaxonflow.com/privacy/), not by `AXONFLOW_TELEMETRY`. If you need no-data-leaves-network guarantees, self-host AxonFlow Community Edition.
55+
5256
> **Note:** `DO_NOT_TRACK` is **not** honored as an opt-out for AxonFlow telemetry. It is commonly inherited from host tools and developer environments (CLIs like Codex and Claude Code inject it unconditionally), which makes it an unreliable expression of user intent. Use `AXONFLOW_TELEMETRY=off` instead.
5357
5458
### SDK configuration

docs/TELEMETRY_CONTRACT.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ Rule order (highest priority first):
4949

5050
`AXONFLOW_TELEMETRY=off` always wins. Config flag overrides mode-based defaults but cannot override the env var. No credential-based logic — credentials do not affect telemetry defaults. Endpoint host does not affect defaults either: localhost, private-network, and self-hosted evaluation endpoints are still ON unless sandbox mode or an opt-out disables telemetry.
5151

52+
### Deployment-shape note: scope of the opt-out
53+
54+
`AXONFLOW_TELEMETRY=off` controls the SDK/plugin **heartbeat**. On self-hosted and in-VPC deployments, that heartbeat is the only data path from the SDK or plugin to AxonFlow, so the env var is the relevant opt-out lever. On **Community SaaS** (`try.getaxonflow.com`) the hosted service also processes operational data — registrations, audit logs, policy enforcement records, workflow state, plan data, and request-header metadata aggregated for usage analytics — as part of running the platform. That operational data flow is governed by the [Privacy Policy](https://getaxonflow.com/privacy/) rather than by this env var; the contract documented here applies to the heartbeat path only.
55+
5256
> **Note on `DO_NOT_TRACK`:** It is **not** honored as an opt-out for AxonFlow telemetry. It is commonly inherited from host tools and developer environments (CLIs like Codex and Claude Code inject it unconditionally), which makes it an unreliable expression of user intent. SDKs do not read this variable at all.
5357
5458
## Runtime Behavior

docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Getting Started with AxonFlow
22

3-
**Last Updated: May 2026** | **Platform: v7.7.0** | **SDKs: Python / Go / TypeScript / Java v7.1.0**
3+
**Last Updated: May 2026** | **Platform: v7.8.0** | **SDKs: Python / Go / TypeScript / Java v7.1.0 + Rust v0.1.0 (preview)**
44

55
**Get AxonFlow running locally in about 10 minutes.**
66

docs/sdk/rust-quickstart.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ The SDK sends an anonymous heartbeat at most once per machine every 7 days for l
188188
export AXONFLOW_TELEMETRY=off
189189
```
190190

191+
**Scope:** `AXONFLOW_TELEMETRY=off` disables the heartbeat described above. On self-hosted and in-VPC deployments, that heartbeat is the only data the SDK sends to AxonFlow. On Community SaaS (`try.getaxonflow.com`) the hosted service also processes operational data (registrations, audit logs, policy enforcement records, workflow state, plan data, request-header metadata aggregated for usage analytics) as part of running the platform; that flow is governed by the [Privacy Policy](https://getaxonflow.com/privacy/), not by `AXONFLOW_TELEMETRY`.
192+
191193
`DO_NOT_TRACK` is intentionally **not** honored — it's commonly inherited from a parent shell, and we want telemetry opt-out to be an explicit AxonFlow decision.
192194

193195
---

platform/agent/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ RUN set -e && \
125125
# Final stage - minimal runtime image
126126
FROM alpine:3.23
127127

128-
ARG AXONFLOW_VERSION=7.7.0
128+
ARG AXONFLOW_VERSION=7.8.0
129129
ENV AXONFLOW_VERSION=${AXONFLOW_VERSION}
130130

131131
# AWS Marketplace metadata

0 commit comments

Comments
 (0)