// docs

Plans & Limits

The full Free vs Pro feature matrix — what's gated, what's capped, and how enforcement works.

Plans & Limits

Envpilot has two tiers, Free and Pro. Every gatable feature — resource caps, tool access, security controls — is defined once in a dynamic feature registry and resolved per-organization on every request. This page lists every feature and its value on each tier.

Limits are enforced server-side and can change independently of this page. Check envpilot usage (add --json for scripting) or the dashboard Usage page for your organization's live numbers against its actual limits.

No pricing is listed here — see the website for current pricing.

Resources#

FeatureWhat it doesFreePro
Max ProjectsNumber of active projects an organization can create3Unlimited
Max Variables per ProjectNumber of active variables allowed in a single project50Unlimited
Max OrganizationsNumber of organizations a user can create1Unlimited

Team#

FeatureWhat it doesFreePro
Max Team MembersActive members plus pending invitations, counted together3Unlimited
Max Pending InvitationsOutstanding invitations an organization can have open at once5Unlimited

Variables#

FeatureWhat it doesFreePro
Variable Version HistoryKeep and roll back to prior values of a variableNoYes
Bulk ImportImport a .env file as many variables in one actionNoYes
Bulk DeleteDelete multiple variables in one actionYesYes
Bulk ExportExport multiple variables in one actionNoYes
Variable TagsTag variables for organization and filteringYesYes

Tools#

FeatureWhat it doesFreePro
API AccessUse the REST API surface at allYesYes
VS Code ExtensionUse the VS Code extension to sync variablesYesYes
CLI AccessUse the envpilot CLIYesYes
VS Code Unsync CustomizationCustomize which files the extension excludes from syncNoYes

Security#

FeatureWhat it doesFreePro
Granular PermissionsPer-variable read/write grants beyond role defaultsYesYes
Audit Log Retention (days)How many days of audit log history stay queryable7365
SSOSingle sign-onNoNo
Secret Rotation & ExpiryScheduled rotation reminders and expiry on variablesNoYes
Max Rotation-Enabled VariablesNumber of variables that can have rotation enabled7Unlimited
Secret Sharing LinksCreate expiring links to share a secret externallyNoYes
Security Hold (Suspend Member Access)Freeze a member's org-wide access without removing themNoYes
Max Active SharesNumber of active secret-sharing links allowed at once0Unlimited
Shared AccountsStore credentials for a shared third-party account on a projectYesYes
Max Shared AccountsNumber of shared accounts an organization can store5Unlimited

SSO shows No on both tiers today — the feature is registered but not yet enabled for any tier.

Customization#

FeatureWhat it doesFreePro
Custom Keyboard ShortcutsRebind CLI TUI / dashboard keyboard shortcutsYesYes
Custom BrandingReplace default branding in the dashboardNoYes

Analytics#

FeatureWhat it doesFreePro
Analytics Retention (days)How many days of usage analytics are kept730

Support#

FeatureWhat it doesFreePro
Priority SupportPriority queue for support requestsNoYes

Integrations#

FeatureWhat it doesFreePro
Public REST APIProgrammatic access via API keys to /api/v1/*NoYes
MCP ServerAccess via the Model Context Protocol server for AI agentsNoYes

How enforcement works#

Every gatable feature lives in one dynamic feature registry, resolved fresh on every request — never a hardcoded per-tier check scattered through the app.

Resolution chain. A boolean feature resolves: organization → owner → the owner's tier → an active billing grace period (if downgrading) → the tier's feature override → the registry default. Numeric features resolve the same way, returning either a number or null for unlimited.

Where it's checked. Backend mutations and queries check the resolved value at the exact point of the write or read they're gating — e.g. creating a project checks the project limit against the organization's current active project count before inserting. The dashboard mirrors the same check so the UI reflects what the backend will actually allow, and CLI/extension calls route through the same registry over the API.

Dual gates. Features with recurring background cost (rotation reminders, scheduled scans) pair a boolean gate with a numeric limit — e.g. secret rotation being available at all, plus how many variables can have it enabled. Both are checked before the feature runs.

At a limit. A denied check returns a readable, user-facing error — "Limit reached (3/3). Upgrade your tier for more." — never a silent no-op or a generic server error, and nothing is written before the check passes.

Pre-alpha bypass. All enforcement is gated behind a platform-wide admin toggle. When it's off, every boolean check resolves to allowed and every numeric limit resolves to unlimited — RBAC role checks are unaffected either way.