Getting Started ​
Get AYB running and make your first API call in a few minutes.
What you get ​
AYB is a full PostgreSQL backend platform in one runtime:
Alongside the core REST API, Authentication, Realtime, File Storage, GraphQL, Edge Functions, and Organizations guides, notable built-in capabilities include:
- Row-level security (RLS) controls for API data access; see Authentication
- Database branching workflows for isolated schema/data changes; see Branching
- Backups and point-in-time recovery (PITR) operations; see Backups
- Vector index tooling plus semantic/hybrid search APIs; see AI and Vector Search
- SAML/SSO administration for enterprise auth; see SAML SSO
- CLI workflow for operations and development; see CLI Reference
- Migration tooling; see Migrations
- Audit logging for admin and operational actions; see Security
Install ​
curl (macOS / Linux) ​
curl -fsSLo /tmp/ayb-install.sh https://install.allyourbase.io/install.sh
sh /tmp/ayb-install.shBinary download ​
Download the latest release from GitHub Releases for your OS and architecture.
From source ​
git clone https://github.com/griddlehq/allyourbase.git
cd allyourbase
make buildDocker ​
Public multi-arch images are published at ghcr.io/griddlehq/allyourbase; see Deployment for Docker run examples and source-build fallback commands.
Start the server ​
Managed PostgreSQL (zero config) ​
ayb startayb start runs the server in detached mode by default, then prints the startup banner and returns you to the shell.
The first run may take longer because AYB downloads and prepares a managed PostgreSQL binary.
Managed PostgreSQL is the zero-config path. Extension boundaries and other beta caveats are tracked in Beta Limitations.
If admin.password is not set, startup generates a random admin password and prints:
Admin password: a1b2c3d4e5f6...
To reset: ayb admin reset-passwordDefault URLs from the startup banner:
- API:
http://127.0.0.1:8090/api - Admin:
http://127.0.0.1:8090/admin
External PostgreSQL ​
ayb start --database-url postgresql://user:pass@localhost:5432/mydbVerify readiness ​
curl http://127.0.0.1:8090/healthTypical healthy response:
{"status":"ok","database":"ok"}Create a table ​
Create a posts table in your PostgreSQL database:
CREATE TABLE posts (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
body TEXT,
published BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT now()
);You can run this via the built-in SQL command:
ayb sql "CREATE TABLE posts (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
body TEXT,
published BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT now()
)"Or use the admin dashboard SQL editor at http://127.0.0.1:8090/admin.
Make your first API call ​
List records ​
curl http://127.0.0.1:8090/api/collections/postsResponse:
{
"items": [],
"page": 1,
"perPage": 20,
"totalItems": 0,
"totalPages": 0
}The table is empty, so items is an empty array (never null).
Create a record ​
curl -X POST http://127.0.0.1:8090/api/collections/posts \
-H "Content-Type: application/json" \
-d '{"title": "Hello World", "body": "My first post", "published": true}'Response (201 Created):
{
"id": 1,
"title": "Hello World",
"body": "My first post",
"published": true,
"created_at": "2026-02-17T12:00:00Z"
}The full row is returned, including server-generated fields like id and created_at.
Filter and sort ​
curl "http://127.0.0.1:8090/api/collections/posts?filter=title='Hello World'&sort=-created_at"Response:
{
"items": [
{ "id": 1, "title": "Hello World", "body": "My first post", "published": true, "created_at": "2026-02-17T12:00:00Z" }
],
"page": 1,
"perPage": 20,
"totalItems": 1,
"totalPages": 1
}Boolean filters
Boolean filters like filter=published=true work but the double = can look confusing in a URL. For string columns, wrap values in single quotes: filter=title='Hello World'.
Get a single record ​
curl http://127.0.0.1:8090/api/collections/posts/1Response:
{
"id": 1,
"title": "Hello World",
"body": "My first post",
"published": true,
"created_at": "2026-02-17T12:00:00Z"
}Use the JavaScript SDK ​
npm install @allyourbase/jsimport { AYBClient } from "@allyourbase/js";
const ayb = new AYBClient("http://127.0.0.1:8090");
// Create
await ayb.records.create("posts", { title: "Hello", published: true });
// List
const { items } = await ayb.records.list("posts", {
filter: "published=true",
sort: "-created_at",
});
console.log(items);Once list calls are working, see Search for full-text search, fuzzy matching, filters, and facets on the same endpoint. If you are comparing or moving from Algolia, use Migrating from Algolia for the non-vector migration map and current non-parity boundaries.
Windows
AYB runs on Windows via WSL2. Install WSL (wsl --install) then follow the Linux instructions above.
Next steps ​
- Authentication — Add user auth, then protect data with RLS
- JavaScript SDK — Build your frontend with the TypeScript SDK
- Search — Add full-text search, fuzzy matching, filters, and facets to list requests
- Migrating from Algolia — Map Algolia concepts to AYB's shipped list endpoint
- Flutter SDK — Build mobile/web apps with the Dart SDK
- PostGIS — Add geospatial support with GeoJSON columns
- Demos — See live examples: kanban, Live Polls, and movies with vector search
- Deployment — Deploy to production with Docker or bare metal
- REST API Reference — Full endpoint documentation
- Quickstart: Todo App — Build a full CRUD app in 5 minutes
- Comparison — How AYB compares to PocketBase and Supabase
- Configuration — Customize AYB with
ayb.toml