Compare · Open-source Postgres platform

Aaly vs Supabase

Supabase gives you a hosted Postgres database and generates a REST and GraphQL API over the tables you create, plus auth, edge functions, and file storage. Its pitch is "build in a weekend, scale to millions". You get real Postgres and you own it.

Choose Supabase instead if

Where Aaly differs

SupabaseAaly
Data layerReal Postgres you manage directlyA definition Aaly serves the API from
Schema changesYou write and run migrationsChange the definition; no migration
Tenant isolationRLS policies you author, per tableA project flag, enforced on every request
Access granularityPer-row, per-role, per-column via RLSTenant-level; roles and field rules not built yet
RealtimeLive subscriptions built inNot available, and not on the roadmap
Server-side logicEdge functions (TypeScript / Deno)Functions (Python) on the request lifecycle
File storageBuilt inBuilt in: presigned upload, files entity
BillingUsage-based, per-project plansUsage-based, no per-seat charge

The difference that matters

Where tenant isolation lives

Both products can build a multi-tenant SaaS. The difference is where the rule that keeps tenant A out of tenant B's data actually lives, and therefore what has to go right every single time the schema changes.

In Supabase, isolation is row-level security: SQL policies you author per table and Postgres enforces. In Aaly, it's a property of the project, applied by the platform on every request before your code is reached.

Supabase: per table, every table

-- repeated for EVERY table you create
alter table orders enable row level security;

create policy tenant_isolation on orders
  for all
  using (tenant_id = auth.jwt() ->> 'tenant_id');

Two steps, repeated for every new table. A table created without the first one is readable by anyone holding the anon key.

Aaly: once, for the project

{ "project": "helpdesk", "multiTenant": true }

Every entity in the project is scoped from the moment it exists. There is no per-entity step to forget.

This is not an argument that RLS is bad. It's a mature, powerful mechanism, and a team fluent in it can express access rules far more specific than anything Aaly offers today, which is exactly why the list above says to choose Supabase if you need them. Supabase also flags tables without RLS in its dashboard and its linter.

It's an argument about what happens when the author is an AI agent changing the schema repeatedly, at speed. Adding a table is one call. Remembering that the table also needs RLS switched on, and a correct policy written against the right claim, is a second thing the agent has to not skip. When it does skip it, nothing fails loudly. The table simply answers to whoever asks. That is the shape of the publicly reported data exposures in AI-built apps.

Aaly's bet is that a guarantee this important shouldn't be something anyone, human or agent, can forget to write.