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
97 changes: 25 additions & 72 deletions docs/administration/license.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,95 +2,48 @@
title: Manage License
---

## License Overview
Bytebase offers [3 pricing plans](https://www.bytebase.com/pricing): `Free`, `Pro`, `Enterprise`.

Bytebase offers [3 pricing plans](https://www.bytebase.com/pricing): `Free`, `Pro`, `Enterprise`. Both `Pro` and `Enterprise` plans require purchasing license. You can [contact us](https://www.bytebase.com/contact-us/) to request a 2-week free trial.
| Plan | Deployment | Users | Pricing |
|------|-----------|-------|---------|
| **Free** | Self-host or Cloud | Up to 20 | Free |
| **Pro** | Cloud only | Unlimited | $20/user/month |
| **Enterprise** | Self-host or Cloud | Custom | Custom |

### Workspace vs Instance Licenses

Bytebase uses a two-tier licensing model:

**Workspace License**

- Applied to your entire Bytebase workspace
- Unlocks plan-level features (Pro or Enterprise)
- Must be configured first before assigning instance licenses

**Instance Licenses**

- Applied to individual database instances to activate instance-specific features
- Allocated from your workspace license quota
- Can be assigned/unassigned as needed to optimize costs

<Note>
You must first upload a workspace license, then assign the instance license quota to specific instances
that need advanced features.
</Note>

### License Quota

A license includes an **instance quota**, which defines:

- The number of **active database instances** (with assigned instance-level licenses)
- The **total number of instances** allowed under the plan

### Plan Details

- Under the **Pro** plan, purchasing **1 to 20 user seats** includes **10 active database instances at no additional cost**.

- Under the **Enterprise** plan, you must purchase a license with a minimum quota of **10 active instances**.

### Feature Availability

- **Enterprise-wide features**, such as [SSO](/administration/sso/overview/) and [Watermark](/security/watermark/) are **not instance-specific** and are available as long as you hold an Enterprise license.

- **Instance-specific features**, such as [Dynamic Data Masking](/security/data-masking/overview), **require assigning quota** to individual instances to be activated.
For full details, see our [pricing page](https://www.bytebase.com/pricing/).

<Tip>

To reduce costs, you can license only a subset of your instances (e.g., production instances only).

</Tip>

![instance-license](/content/docs/administration/license/instance-license.webp)
<Info>
**Pro plan is cloud-only.** Self-hosted deployments require an Enterprise license. Existing Pro self-host licenses are grandfathered. Self-hosted Free instances can start a [14-day Enterprise trial](https://www.bytebase.com/contact-us/).
</Info>

## Configure Workspace License

Navigate to the **Settings > Subscription**, paste your license and click **Upload License**.
Go to **Settings > Subscription**, paste your license and click **Upload License**.

![subscription](/content/docs/administration/license/bb-subscription.webp)
![subscription](/content/docs/administration/license/bb-subscription.webp)

## Configure Instance License

### Assign License from the Instance Page
Some features (e.g. [Dynamic Data Masking](/security/data-masking/overview)) require assigning license quota to individual instances. Enterprise-wide features like [SSO](/administration/sso/overview/) work without per-instance assignment.
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor grammar: "e.g." should be followed by a comma ("e.g.,") in running text.

Suggested change
Some features (e.g. [Dynamic Data Masking](/security/data-masking/overview)) require assigning license quota to individual instances. Enterprise-wide features like [SSO](/administration/sso/overview/) work without per-instance assignment.
Some features (e.g., [Dynamic Data Masking](/security/data-masking/overview)) require assigning license quota to individual instances. Enterprise-wide features like [SSO](/administration/sso/overview/) work without per-instance assignment.

Copilot uses AI. Check for mistakes.

You can assign and unassign license to an instance on its instance page.
![How instance license works](/content/docs/administration/license/instance-license.webp)

![instance-assign](/content/docs/administration/license/bb-instance-assign.webp)
You can assign instance licenses from:

### Assign License from the Subscription Page
1. **The instance page** — assign/unassign directly on each instance.

You can assign your license to instances in the following ways:
![Assign license on instance page](/content/docs/administration/license/bb-instance-assign.webp)

1. Go to the **Settings > Subscription**, click the instance area or the **edit icon** button, the license configuration drawer will appear.
1. **Settings > Subscription**click the instance area or edit icon to open the license drawer, tick the instances, and click **Confirm**.

![edit-assign](/content/docs/administration/license/bb-edit-assign.webp)
![Open license drawer from subscription page](/content/docs/administration/license/bb-edit-assign.webp)

1. On the **Manage instance License** drawer, tick the instances you want to assign license to, and click **Confirm**.
![Select instances and confirm](/content/docs/administration/license/bb-assign-licenses.webp)

![assign-licenses](/content/docs/administration/license/bb-assign-licenses.webp)
1. **Gated feature prompts** — when you encounter a feature requiring a license, click the **Assign License** button in the popup.

### Assign License via Gated Features
![License prompt on database page](/content/docs/administration/license/bb-database-license.webp)

You can also assign instance license when coming across a gated feature. To assign for a table particularly so that you can operate on sensitive data:
![Assign license from data masking popup](/content/docs/administration/license/bb-license-data-masking.webp)

1. Go to **Database > Databases** to choose the database this table belongs to.

1. Find the row representing your table, and click the `Classification` field you want to apply data masking.

![database-license](/content/docs/administration/license/bb-database-license.webp)

1. On the table detail drawer, click the edit icon. There will be a popup containing **Assign License** button.

![license-data-masking](/content/docs/administration/license/bb-license-data-masking.webp)
<Tip>
To reduce costs, license only the instances that need advanced features (e.g., production only).
</Tip>
76 changes: 13 additions & 63 deletions docs/get-started/self-host-vs-cloud.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,76 +2,26 @@
title: Self-Host vs Cloud
---

<Info>
**Quick Answer**: Use **Self-Host** for private databases (VPC, on-premises). Use **Cloud** for
public cloud databases (Neon, Supabase, RDS with public IP).
</Info>
Use **Self-Host** for private databases (VPC, on-premises). Use **Cloud** for public cloud databases (Neon, Supabase, RDS with public IP).

## Key Differences
| | Self-Host | Cloud |
|--|-----------|-------|
| **Database Access** | Private networks, VPC, on-premises | Public cloud databases only |
| **Available Plans** | Free, Enterprise | Free, Pro, Enterprise |
| **Setup** | ~5 minutes (Docker) | Instant |
| **Maintenance** | You manage updates | Automatic |
| **Location** | Your infrastructure | Google Cloud US |

<Table>
<TableHeader>
<TableRow>
<TableHeaderItem></TableHeaderItem>
<TableHeaderItem>Self-Host</TableHeaderItem>
<TableHeaderItem>Cloud</TableHeaderItem>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableItem>**Database Access**</TableItem>
<TableItem>Private networks, VPC, on-premises</TableItem>
<TableItem>Public cloud databases only</TableItem>
</TableRow>
<TableRow>
<TableItem>**Setup**</TableItem>
<TableItem>~5 minutes (Docker/Binary)</TableItem>
<TableItem>Instant</TableItem>
</TableRow>
<TableRow>
<TableItem>**Maintenance**</TableItem>
<TableItem>You manage updates</TableItem>
<TableItem>Automatic updates</TableItem>
</TableRow>
<TableRow>
<TableItem>**Location**</TableItem>
<TableItem>Your infrastructure</TableItem>
<TableItem>Google Cloud US</TableItem>
</TableRow>
</TableBody>
</Table>

### Choose Self-Host For

- **Private databases** without public internet access
- **VPC environments** (AWS VPC, Google VPC, etc.)
- **On-premises** corporate databases
- **Compliance requirements** (data sovereignty, security policies)
- **Custom configurations** (external PostgreSQL, custom domains)

### Choose Cloud For

- **Cloud databases** with public connectivity:
- Neon, Supabase
- AWS RDS with public IP
- Google CloudSQL with public IP
- Azure Database with public access
- **Quick evaluation** without infrastructure setup
- **Small teams** wanting zero maintenance

## How to Deploy
<Note>
The **Pro plan** is cloud-only. Self-hosted deployments use the Free plan or require an Enterprise license. Self-hosted Free instances can start a [14-day Enterprise trial](https://www.bytebase.com/contact-us/).
</Note>

<CardGroup cols={2}>
<Card title="Self-Host Guide" href="/get-started/self-host/deploy-with-docker" icon="server">
<Card title="Self-Host" href="/get-started/self-host/deploy-with-docker" icon="server">
Deploy with Docker in 5 minutes
</Card>

<Card title="Cloud Signup" href="https://hub.bytebase.com/" icon="cloud">
<Card title="Cloud" href="https://hub.bytebase.com/" icon="cloud">
Start instantly at hub.bytebase.com
</Card>
</CardGroup>

<Tip>
Not sure? Start with Cloud for testing, then migrate to Self-Host if you need private database
access.
</Tip>
8 changes: 4 additions & 4 deletions src/components/pages/pricing/hero/hero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ const cards: TCard[] = [
price: 20,
priceDescription: 'user per month',
description: 'Advanced Collaboration',
additionalDescription: 'Monthly subscription, cancel anytime',
buttonText: 'Buy Now',
additionalDescription: 'Cloud-hosted · Monthly subscription, cancel anytime',
buttonText: 'Start on Cloud',
buttonTheme: 'primary-outline',
buttonLink: Route.PRO_PAYMENT,
planConditions: [
'Email support',
'Up to 20 users',
'10 database instances',
'Unlimited users',
'Cloud deployment',
'Google, GitHub SSO',
'Groups',
],
Expand Down
15 changes: 11 additions & 4 deletions src/components/pages/pricing/qa/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,23 @@ import type { Question } from './types';

const QUESTIONS: Question[] = [
{
question: 'Are self-host and cloud version the same price?',
answer: 'Yes, the price is the same.',
question: 'What deployment options are available for each plan?',
answer:
'The Free plan supports both self-host and cloud. The Pro plan is available on Bytebase Cloud only. The Enterprise plan supports both self-host and cloud deployments.',
},
{
question: 'Can self-host version operate in air-gapped environment?',
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The question text is grammatically awkward/missing articles ("Can self-host version operate in air-gapped environment?"). Consider rephrasing to something like "Can the self-hosted version operate in an air-gapped environment?" for clearer user-facing copy.

Suggested change
question: 'Can self-host version operate in air-gapped environment?',
question: 'Can the self-hosted version operate in an air-gapped environment?',

Copilot uses AI. Check for mistakes.
answer:
'Yes, you can deploy it in your own data center or private cloud without any external connectivity.',
'Yes, with an Enterprise license, you can deploy it in your own data center or private cloud without any external connectivity.',
},
{
question: 'Which certifications do you have?',
answer: 'We have SOC 2 Type 2 certification.',
},
{
question: 'Is there a free trial?',
answer: 'Yes, for the Enterprise plan, you can try it for free for 14 days.',
answer:
'Yes, for self-hosted instances, you can start a 14-day Enterprise trial to access the full feature set. For the Enterprise plan, you can also contact us to request a trial.',
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The free-trial answer currently says users can "start" a 14-day Enterprise trial for self-hosted instances, but elsewhere in this PR the trial CTA points to /contact-us (implying a request flow). To avoid setting the wrong expectation, consider wording this as "request" a trial and removing/reworking the second sentence to avoid redundancy.

Suggested change
'Yes, for self-hosted instances, you can start a 14-day Enterprise trial to access the full feature set. For the Enterprise plan, you can also contact us to request a trial.',
'Yes, for self-hosted instances, you can request a 14-day Enterprise trial to access the full feature set.',

Copilot uses AI. Check for mistakes.
},
{
question: 'Which payment methods do you accept?',
Expand All @@ -29,6 +31,11 @@ const QUESTIONS: Question[] = [
answer:
'For the Pro plan, you can cancel your subscription at any time. For the Enterprise plan, it is yearly subscription. You can not cancel in the middle of the year.',
},
{
question: 'What about existing Pro self-host licenses?',
answer:
'Existing Pro self-host licenses are grandfathered and will continue to work as-is. No changes will be made to currently active licenses.',
},
];

export default function QuestionsAndAnswers() {
Expand Down
4 changes: 2 additions & 2 deletions src/components/pages/pricing/table/data/pricing-plans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,10 @@ const PLANS: { free: Plan; pro: Plan; enterprise: Plan } = {
pro: {
title: 'pro',
description: 'Advanced Collaboration',
buttonText: 'Buy Now',
buttonText: 'Start on Cloud',
buttonTheme: 'primary-outline',
buttonUrl: Route.PRO_PAYMENT,
additionalDescription: 'Monthly subscription, cancel anytime',
additionalDescription: 'Cloud-hosted · Monthly subscription, cancel anytime',
databaseChangeManagement: {
'database-change': true,
'git-based-schema-version-control': true,
Expand Down
Loading