Skip to content

site(pricing): Community · Free · Team · Enterprise — Business becomes an Enterprise contract option, Free states the MCP limits - #289

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-285-pricing-three-editions
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-285-pricing-three-editions

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #285

What changed

src/lib/pricing.ts only. The public price list on /pricing is now four cards, Community · Free · Team · Enterprise, in every locale (en and zh-Hans authored; zh-Hant derived through toHant; ja/de/es/fr/ko render the English copy as before).

  • Community (new, first card): ObjectOS Community — the open-source runtime and Console, self-hosted, price "Free", cadence "self-hosted", no checkout. Its button reads "Run it yourself" and goes to https://objectstack.ai/docs/deployment (content/docs/deployment/index.mdx exists in the objectstack repository). Its features carry the ruled dividing line: Apache-2.0 and free forever, runtime / Console / permissions and sharing / audit, AI through MCP with your own model, every protocol capability, Docker image or npm create objectstack@latest, community support.
  • Free (Cloud): keeps "Daily in-app AI trial" and the 7-day audit line; the MCP line now states the terms cloud#3203 ruled and cloud#3221 shipped: "AI through MCP — bring your own model; 20 requests / min and 1,000 / day per environment". Tagline says "on ObjectOS Cloud".
  • Team: unchanged ($20 annual / $24 monthly, highlight, "Get started").
  • Business card removed. Its terms move into Enterprise's features as a contract option beside Business Self-Managed: "Business — SSO and AI governance on Cloud, by contract: $45 / AI seat / mo billed annually, $54 monthly". Enterprise's tagline widens to cover SSO / AI governance as well as self-managed deployment. No "Get started" button remains on a plan the console does not sell.
  • Intro: the "Prefer the open-source path?" sentence becomes the Community sentence (ObjectOS Community is the open-source runtime and Console, self-hosted and free under Apache-2.0, bring your own AI through MCP; ObjectStack is the open protocol it runs; Cloud and Enterprise add hosting and multi-environment operations, Build and Ask, SSO, commercial support).
  • Billing note: "The Cloud plans run up to Business; self-managed ObjectOS is ObjectOS Enterprise" becomes: ObjectOS Cloud is Free and Team; Business ($45 / AI seat / mo annual, $54 monthly) and Business Self-Managed ($540 / AI seat / yr, 10–25 seats) are contract options under ObjectOS Enterprise — contact sales.
  • Every number is unchanged: $0, $20 / $24, $45 / $54, $540, 10–25 seats. GET_STARTED and CONTACT are untouched ([Decision] Pricing headline: www shows $20 / $45 per AI seat "billed annually (about two months free)", docs License & Pricing shows $24 / $54 per month with no annual price — which is the source, and is the annual discount real? #214 and [Decision] Where does "Get started" go? Neither site has an ObjectOS Cloud signup URL, so every plan CTA loops www → docs → www #215 stay open decisions). Pricing.astro is untouched: the fourth card fits the existing auto-fit minmax(220px, 1fr) grid (see below).

Why

Maintainer ruling D2 (2026-10-24): the public price list is Free / Team / Enterprise, with Business and Business Self-Managed as contract options under Enterprise. Edition ruling (2026-10-26): ObjectOS is one product in three editions — Community (open source, self-hosted, free), Cloud (Free · Team), Enterprise — and ObjectStack names the protocol, SDK, CLI and framework; the pricing page shows the Community column on the self-hosted side. The companion docs change (rate card in content/docs/resources/license.mdx) is on the docs.objectos.ai branch claude/issue-285-license-rate-card, from the same ruling in the same change.

How verified

At eaa04d7 in the worktree (exit codes captured before any pipe; the live site is not reachable from the container, so verification is source- and build-level):

  • pnpm content:lint — exit 0: "content lint passed (359 files, 46 glossary terms checked)".
  • pnpm check — exit 0: "0 errors, 0 warnings, 0 hints".
  • Under the verify lock (slot issue-285, VERDICT command-exit 0, held 131 s on a shared box): pnpm build — exit 0 (astro build complete; share images 95 rendered for 923 pages; content lint --dist passed on 498 blog pages, CJK line breaks, quotation marks and 99,923 internal links); pnpm seo:smoke on the same dist/ — exit 0: "SEO smoke test passed (914 HTML pages checked; 598 sitemap URLs against 316 noindexed pages; 5669 canonical/hreflang annotations; 17820 prose blocks language-checked; 99913 internal links redirect-checked)".
  • Headless Chromium on dist/ (/en/pricing/ and /zh-Hans/pricing/ at 1440×750 and 390×844): four cards in every render — Community · Free · Team · Enterprise / 社区版 · 免费版 · 团队版 · 企业版 — one row at 1440 and four stacked at 390; no card overflows the grid or its own box, no horizontal page scroll, CTA tops equal within a row (subgrid intact); CTAs read Community "Run it yourself" → objectstack.ai/docs/deployment, Free and Team "Get started" → docs.objectos.ai (Team highlighted), Enterprise "Contact us" → mailto:sales@. Screenshots were looked at. The derived /zh-Hant/pricing/ carries 社群版 · 免費版 · 團隊版 · 企業版 (OpenCC s2twp renders 社区 as 社群).

Clause-②: no
Metadata-protocol: none

Acceptance notes


Generated by Claude Code

… an Enterprise contract option

Four cards: ObjectOS Community (self-hosted, free, Apache-2.0, no checkout —
"Run it yourself" goes to the objectstack deployment docs), Free, Team and
Enterprise. The Business card is removed; its terms move into Enterprise's
features and the billing note as a contract option beside Business
Self-Managed, every number unchanged. Free's MCP line states the ruled
limits (20 requests / min and 1,000 / day per environment). Intro and
billing note describe the three-edition model; zh-Hans mirrored, zh-Hant
derived through toHant. CTA targets are unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FMuBZmssbfQkVrKRtxNvng
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · 2026-10-26T15:43Z · session_01FMuBZmssbfQkVrKRtxNvng (maintainer-directed seat, card #285 — www half; the docs half is objectstack-ai/docs.objectos.ai#342)

  1. 形态 — draft PR against main, head eaa04d7 (1 commit), 1 file src/lib/pricing.ts +49/−48, inside the claim's file surface (6419808573; Pricing.astro untouched — the fourth card fits the existing grid); body first line Fixes #285; Clause-②: no / Metadata-protocol: none at line start; no label (relay refuses an empty list, as the claim records); assignee os-zhuang.
  2. 前提实测 — re-read by the seat and the dev on bf2d68a: four plans in pricingEn / pricingZhHans, Free :59 MCP line, GET_STARTED / CONTACT — held. Diff read by the seat: Community card first (Free · self-hosted · "Run it yourself" → https://objectstack.ai/docs/deployment, content/docs/deployment/index.mdx exists in objectstack; features = the ruled dividing line), Business card removed and its two prices folded into Enterprise's features and the billing note as contract options beside Business Self-Managed, Free's MCP line carries 20 / min + 1,000 / day per environment (cloud#3203 A, shipped in cloud#3221), intro and billing note rewritten to three editions + one protocol; en and zh-Hans authored, zh-Hant derived via toHant; GET_STARTED, CONTACT, every headline number, positioning.*.descriptor import unchanged.
  3. 门禁 check-runs (head eaa04d7): Build and deploy success (15:36:43–15:38:03Z). Dev's local union, hand-derived: pnpm content:lint exit 0, pnpm check exit 0, under the lock pnpm build exit 0 (923 pages, 99923 internal links) and pnpm seo:smoke exit 0 (914 pages, 99913 links redirect-checked); headless Chromium on /en/pricing/ and /zh-Hans/pricing/ at 1440×750 (one row of four) and 390×844 (stacked), subgrid intact, no overflow; derived zh-Hant reads 社群版 · 免費版 · 團隊版 · 企業版.
  4. 接受的偏差 — (a) general-purpose subagent under os-dev.md; (b) labels key omitted on pr_create; (c) PR-body footer in the session-URL form per os-dev.md; (d) commits authored as os-zhuang; (e) live site unreachable, verification at source and build level.
  5. 范围外去向 — card item 3 (Team's button → self-serve checkout) waits on cloud#3202 (pm:blocked): recorded at landing as the remainder on this card, carrier cloud#3202's landing; [Decision] Pricing headline: www shows $20 / $45 per AI seat "billed annually (about two months free)", docs License & Pricing shows $24 / $54 per month with no annual price — which is the source, and is the annual discount real? #214 / [Decision] Where does "Get started" go? Neither site has an ObjectOS Cloud signup URL, so every plan CTA loops www → docs → www #215 (headline price, "Get started" target) untouched and still open; src/lib/home.ts / positioning.ts Community wording → Adopt objectstack's 2026-10-03 positioning across www.objectos.ai: copy changes, five posts, an update sweep #209 / Site changes for the ObjectOS Cloud launch: primary CTA and pricing buttons to cloud.objectos.ai, Cloud and Sign-in entries in the navigation, merged on launch day #287 / PR site: Developers nav to objectstack.ai, the ObjectOS Community line on the homepage, four framework posts imported under their original slugs #288; the price-source comment in pricing.ts (ADR-0023 vs docs/design/pricing.md) → wording only, noted.
  6. 落地条款 — sister repository, no governed-path list; main now carries Build and deploy as a required check and auto-merge is allowed (maintainer, 15:23–15:26Z). This PR flips ready in this stroke. Auto-merge is held until the repository's merge queue is either switched off or given a merge_group run: cloudflare-pages.yml triggers on push / pull_request / workflow_dispatch only, so the required check never reports on a queue branch — PR site: Developers nav to objectstack.ai, the ObjectOS Community line on the homepage, four framework posts imported under their original slugs #288 has sat enqueued since 15:26Z for that reason. Once the queue is resolved the seat enables auto-merge through the relay. Independent of docs#342 (no shared files; either may land first).

Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant