Bundles are about provisioning, not pricing. Installing a bundle makes the feature available in your project; what each plan allows (quotas, AI access, etc.) is a separate concern. See Semantic Search & AI for an example of a feature that needs both its bundle and a paid plan.
The core bundle
Every project always has thecore bundle. It’s installed automatically when the project is created and cannot be removed. Core provides the foundation that every other feature builds on:
- Users, authentication & identity — email/password accounts, OAuth identities, and OAuth provider configuration. See Authentication.
- Entities — the base content unit (posts, articles, listings, anything your users create). See Entities.
Available bundles
On top of core, you choose which of these to install. Each one is independent — install only what you need.| Bundle | Feature | What it adds |
|---|---|---|
comments | Comments | Threaded comments on entities |
reactions | Reactions | Emoji reactions on entities and comments |
files-images | Storage | File and image uploads, including user avatars and banners |
follows | Follows | Unidirectional follow relationships |
connections | Connections | Bidirectional connection (friend-style) requests |
spaces | Spaces | Hierarchical community spaces, membership, roles, and rules |
chat | Chat | Real-time 1:1 and group conversations with message reactions |
collections | Collections | User-owned bookmarking and folders for saving entities |
moderation | Moderation | Reports, report resolution, and user suspensions |
notifications | App Notifications | In-app notification system |
ai-search | Semantic Search & AI | Content embeddings, semantic search, and the AI ask endpoint |
reputation | Reputation | Per-space reputation buckets, with a maintained overall total on each user |
Choosing bundles when you create a project
When you create a project in the dashboard, you pick the bundles you want.core is always included — you can’t deselect it — and you can start with core only and add the rest later. Nothing is locked in at creation time.
Adding and removing bundles later
Installed bundles are managed from the Database page of your project in the dashboard (https://dash.sublay.io/<projectId>/database). From there you can install a bundle you skipped, or remove one you no longer need.
Installing a bundle is an asynchronous operation — the dashboard shows it as provisioning while the tables are created, then installed once it’s ready. This usually takes a moment.
What happens if a bundle isn’t installed
Feature endpoints and SDK hooks only work when their bundle is installed. If your app calls a feature whose bundle is missing, the API responds with a clear error instead of a generic failure:| Situation | Response | Meaning |
|---|---|---|
| Bundle not installed | 403 · database/tables-not-available | The feature isn’t enabled for this project. The response includes a dashboardUrl pointing at the project’s Database page so you can install it. |
| Bundle currently installing | 503 · database/tables-provisioning | The bundle is mid-install. This is transient — retry shortly. |
This is why a feature can be fully documented and supported but still return
database/tables-not-available on your project — the docs describe the whole platform, while your project only runs the bundles you’ve installed.
