Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ on `/api/v1/capabilities` for agent introspection.

> **Upgrading auto-promotes in-flight deployment TTLs.** When a team upgrades to any paid tier (Hobby / Hobby Plus / Pro / Growth / Team), the Razorpay subscription.charged webhook flips the team's `default_deployment_ttl_policy` from `auto_24h` to `permanent` (so every future `POST /deploy/new` defaults to no TTL) AND promotes every existing `auto_24h` non-terminal deploy to permanent (clearing `expires_at`). Per-deploy `ttl_policy='custom'` and `ttl_policy='permanent'` rows are never touched — only the `auto_24h` class is rolled forward. To restore the 24h-default behaviour after an upgrade, `PATCH /api/v1/team/settings {"default_deployment_ttl_policy":"auto_24h"}`.
- **Pro**: $49/mo. 10 GB Postgres, 512 MB Redis, 5 GB Mongo, 50 GB storage, 10 apps. Resource-count cap: 5 active resources per service (redis is 3 — Redis RAM is the binding cost). Per-tier counts are introspectable via `resource_count_limit` on `/api/v1/capabilities`.
- **Team**: available soon — not yet self-serve. Planned at $199/mo with high finite limits (50 GB Postgres, 1.5 GB Redis, 40 GB Mongo, 40 GB queues, 300 GB storage, 30 GB vector, 100 deployments, 1000 vault entries, 100k webhooks), 50 custom domains, 90-day backups with self-serve restore, RBAC + audit log; SSO/SAML and a 99.9% SLA are also planned. Capacity beyond these caps (or dedicated/isolated infra, multi-region, or compliance such as SOC2/BAA/SSO/SLA/DPA) is Enterprise — contact sales. Team cannot be purchased or claimed today — contact contact@instanode.dev for onboarding.
- **Team**: available soon — not yet self-serve. Planned at $199/mo with high finite limits (50 GB Postgres, 1.5 GB Redis, 40 GB Mongo, 40 GB queues, 300 GB storage, 30 GB vector, 100 deployments, 1000 vault entries, 100k webhooks), 50 custom domains, 90-day backups with self-serve restore (backups cover Postgres, pgvector, MongoDB & Redis; restore is self-serve for Postgres/pgvector/MongoDB — Redis is backup-only today, restore coming soon), RBAC + audit log; SSO/SAML and a 99.9% SLA are also planned. Capacity beyond these caps (or dedicated/isolated infra, multi-region, or compliance such as SOC2/BAA/SSO/SLA/DPA) is Enterprise — contact sales. Team cannot be purchased or claimed today — contact contact@instanode.dev for onboarding.
- **Enterprise**: custom limits, dedicated infra, compliance; contact sales@instanode.dev. Not a self-serve tier and not in `plans.yaml` — no price, no checkout. Triggers: needs more than Team's caps, dedicated/isolated or multi-region infra, or SOC2/BAA/SSO/SLA/custom DPA.

## Conventions an LLM should follow when scripting against the platform
Expand Down
6 changes: 4 additions & 2 deletions src/components/PricingGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,9 @@ export const PRICING_GRID_TIERS: TierDefinition[] = [
{ text: '1 GB MongoDB · 5 conn · 5 GB object storage' },
{ text: '2 deployments · custom domain' },
{ text: '50 vault entries · production env' },
{ text: '14-day backups · 1-click restore' },
// Worker #104: restore is self-serve for Postgres/pgvector/MongoDB;
// Redis is backup-only today (restore is a tracked follow-up).
{ text: '14-day backups · 1-click restore (Redis backup-only)' },
],
upgradesTo: 'pro',
// FIX-G (2026-05-14): "Most Popular" badge moved here from Pro. The W12
Expand Down Expand Up @@ -187,7 +189,7 @@ export const PRICING_GRID_TIERS: TierDefinition[] = [
{ text: '40 GB queues · 300 GB object storage' },
{ text: '100 deployments · 50 custom domains' },
{ text: '1 000 vault entries · multi-env' },
{ text: '90-day backups · self-serve restore' },
{ text: '90-day backups · self-serve restore (Redis backup-only)' },
{ text: 'RBAC + audit log · need more? contact sales' },
{ text: 'SSO / SAML (coming soon)' },
{ text: '99.9% SLA (coming soon)' },
Expand Down
9 changes: 7 additions & 2 deletions src/pages/MarketingPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ const PLANS: Plan[] = [
features: [
'50 GB Postgres · 1.5 GB Redis · 40 GB MongoDB',
'100 deployments · 50 custom domains',
'90-day backups · self-serve restore · RBAC + audit',
'90-day backups · self-serve restore (Redis backup-only) · RBAC + audit',
'Need more? Enterprise — contact sales',
],
cta: {
Expand Down Expand Up @@ -465,7 +465,12 @@ export function MarketingPage() {
<div className="r"><span className="k">size</span><span className="v">10 MB / 2 conn</span></div>
<div className="r"><span className="k">expires</span><span className="v dim">in 24h</span></div>
<div className="r" style={{ marginTop: 8 }}>
<span className="k">backup</span><span className="v ok">enabled</span>
{/* Anonymous/free resources have NO backup coverage
(plans.yaml backup_retention_days=0; the worker's
scheduler never enqueues them) — the old "enabled"
badge overstated the free tier. Backups start on
paid tiers. */}
<span className="k">backup</span><span className="v dim">on paid tiers</span>
</div>
<div className="r"><span className="k">tls</span><span className="v ok">required</span></div>
</div>
Expand Down
7 changes: 6 additions & 1 deletion src/pages/PricingPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,12 @@ const ROWS: Row[] = [
{ label: 'RBAC + audit', values: [{ mark: 'dash' }, { mark: 'dash' }, { mark: 'dash' }, { mark: 'check' }, { mark: 'check' }] },
{ label: 'Vault entries', values: [{ mark: 'dash' }, '20', '200', '1 000', CUSTOM] },
{ label: 'Vault envs', values: [{ mark: 'dash' }, 'production only', 'multi-env', 'multi-env', 'multi-env'] },
{ label: 'Backups', values: [{ mark: 'dash' }, '7-day · no restore', '30-day · 1-click restore', '90-day · self-serve restore', 'Custom retention'] },
// Worker #104 (2026-06-11): backups cover Postgres / pgvector / MongoDB /
// Redis. Restore is self-serve for Postgres / pgvector / MongoDB; Redis is
// backup-only today (restore needs pod-level access — tracked follow-up).
// Object storage / webhook / queue have no backup coverage — the sub line
// names the covered services so the row can't be read as "everything".
{ label: 'Backups', sub: 'Postgres · pgvector · MongoDB · Redis — Redis is backup-only today (restore coming soon)', values: [{ mark: 'dash' }, '7-day · no restore', '30-day · 1-click restore', '90-day · self-serve restore', 'Custom retention'] },
// SSO/SAML + SLA have no backend yet — shown as not-yet-available on the
// self-serve tiers (gap analysis 2026-06-03), consistent with PricingGrid +
// llms.txt "coming soon". Enterprise reads 'Contact us' because these are
Expand Down
Loading