Licensing and trial
potluckdb is proprietary software under the License and Subscription Terms. A license key authorizes its use. Without an accepted license key, you receive a trial with every feature.
Buying a license
Section titled “Buying a license”- Open Buy License.
- Choose the number of developer seats.
- Enter your company name.
Each seat costs USD 499 per year, plus tax where applicable. The subscription renews each year. You can cancel at any time.
Checkout can show the price in your local currency. The converted price includes a currency conversion fee of 2–4%.
To avoid the conversion fee, choose US dollars at checkout.
A subscription paid in a local currency renews in that currency. Renewal uses the exchange rate on the renewal date.
Leastsquare Inc. sells potluckdb licenses. The merchant of record is Sold through Link, LLC, a Stripe affiliate that checkout shows as Link. Link sends the receipts and invoices.
The buyer becomes the license administrator, who manages the company’s license. Each license key displays the company name that you entered. The check page also displays that name.
Seats and developers
Section titled “Seats and developers”A seat authorizes one developer, identified by email. Each developer claims their own seat.
- Join through your company email domain or an invite link.
- Sign in with the six-digit code that the service sends to your email address.
- Open your license key page.
- Claim an available seat.
- Copy your license key.
An administrator adds a company email domain with their own address at that domain. An administrator who also develops claims a seat through the same domain or an invite link.
When you no longer need your seat, release it on the license key page.
License administrators
Section titled “License administrators”Open Manage to administer the company license.
Administrators can:
- Add or remove administrators and company email domains.
- Rotate the invite link and invite developers by email.
- Open billing and invoices in Stripe’s billing portal.
- See who holds each seat and release seats.
Administrators receive an email whenever a developer claims a seat. For licenses bought online, administrators change the seat count on Manage. The count cannot fall below the number of seats in use.
Adding seats charges you now for the remaining part of the current year. Removing seats takes effect now and reduces the next renewal charge. It gives no credit for the current year. Link sends the invoice. For other licenses, contact [email protected].
Renewal and updates
Section titled “Renewal and updates”Each yearly renewal advances the license’s updates until date (updates_until) by one year. License keys keep working for every release whose release date is on or before that date. Each release has a fixed release date. If a release does not accept a license key for this reason, the error message shows both dates.
- After renewal, obtain the updated license key on your license key page.
- Replace the old license key in your application before using a newer release.
Seat holders receive an email when the updated license key is available.
Administrators cancel the subscription in Manage → Billing and invoices, which opens Stripe’s billing portal, or at link.com.
The subscription continues until the end of the paid year. License keys keep working for releases whose release date is on or before updates_until.
See the license terms.
The license key
Section titled “The license key”Each developer seat has one license key. A license key is signed text with three parts: header.payload.signature. It uses base64url.
The SDK passes this text to the runtime without parsing it. The runtime, the component that executes database operations, verifies the license key offline. It uses verification keys embedded in the release. These cryptographic keys check the signature. The release never contains private signing keys.
Ordinary verification makes no network request. It stores nothing in an application database. A license key embedded in an application authorizes its databases on every end-user device. End users enter nothing. The license terms set the number of seats, and the runtime does not enforce it.
Where the SDK reads it
Section titled “Where the SDK reads it”The SDK uses the first source that contains a license key:
| Order | Source |
|---|---|
| 1 | The open option: license_key in Python, Rust, and C++. |
| 1 | The open option: LicenseKey in Go and .NET. |
| 1 | The open option: licenseKey in JavaScript, Swift, Objective-C, Dart, and the JVM builder. |
| 2 | The POTLUCKDB_LICENSE_KEY environment variable. |
| 3 | The license-key file in the configuration directory. |
A browser page can use only the open option. Connection strings accept license_key (ODBC uses License_Key).
The configuration directory uses these locations:
| Condition | Configuration directory |
|---|---|
POTLUCKDB_CONFIG_DIR is set | The directory it names. |
macOS, without POTLUCKDB_CONFIG_DIR | ~/Library/Application Support/potluckdb |
Windows, without POTLUCKDB_CONFIG_DIR | %APPDATA%\potluckdb |
Linux, without POTLUCKDB_CONFIG_DIR | $XDG_CONFIG_HOME/potluckdb or ~/.config/potluckdb |
Android has no fallback because it sets no home directory.
For Android, set POTLUCKDB_CONFIG_DIR under your application’s files directory before its first potluckdb call.
.NET MAUI needs no setting because .NET for Android sets HOME.
Some service managers start processes without HOME, or with neither APPDATA nor USERPROFILE on Windows. Only a license key from the open option or environment then allows database creation.
An unaccepted license key does not fail the call. The SDK uses the trial and reports the reason on standard error.
The trial
Section titled “The trial”Every SDK authorizes a database location before it constructs the first owner for that location. An owner is a database or snapshot object. Without an accepted license key, it grants a 30-day trial per machine. The trial starts at the machine’s first authorization. Every feature, remote type, and platform works during the trial.
A first-use file in the configuration directory records the trial’s start. In a browser, that file sits beside the databases in the origin private file system. This file system is browser storage that only the same website origin can access.
Existing databases keep opening and working after the trial ends. Only database creation fails, with license_required (see Errors). Creation means opening a location without a durable database identity, which identifies a database across restarts. This includes a new local database or a new device’s copy of a remote. Opening an exact remote revision never counts as creation. A revision is one published database state (see Concepts).
Notices
Section titled “Notices”The runtime reports license state on standard error. The browser sends these notices to the console. Android sends them to the system log with the tag potluckdb.
potluckdb: trial, 30 days left on this machine. A license key ends this notice: https://potluckdb.com/pricingpotluckdb: the license key was not accepted (malformed: license key must have three segments); running under the trial. Check the key at https://account.potluckdb.com/checkpotluckdb: the 30-day trial on this machine has ended. Existing databases keep working; creating a database needs a license key: https://potluckdb.com/pricingThe runtime prints each distinct line at most once per process. An accepted license key prints nothing. No option silences these notices.
Checking a key
Section titled “Checking a key”Open Check a license key to check your license key.
The page shows whether the license key is genuine and which company received it. It also shows whether potluckdb has blocked the license key.
Each release contains a block list of license key digests. A digest identifies a license key without storing its full text. A release refuses a blocked license key only if that list contains its digest. Earlier releases do not learn about later blocks. A refused license key uses the trial instead.
Contact
Section titled “Contact”For other questions, email [email protected].