real postgresql 18
not a lookalike, and not a layer sitting on top of one. a postgresql 18 database of your own, created in seconds, reachable from psql, prisma, drizzle or anything else that speaks postgres.
postgresql 18 with pgvector already switched on, so searching by meaning works from your very first query — no extension to install and no second database to run. reach it over plain http, or with any postgres client you already own. branch it, rewind it, undo a change you regret. made in Flanders, independent.
not a lookalike, and not a layer sitting on top of one. a postgresql 18 database of your own, created in seconds, reachable from psql, prisma, drizzle or anything else that speaks postgres.
pgvector 0.8.6 is already switched on. store embeddings beside your ordinary rows and search by meaning in the same query language as everything else — one database, not two.
every database sits behind a connection pooler, and one nobody is using holds no connections at all. a project you look at twice a month is not quietly burning anything in between.
made in Flanders by flndrn, 100% self-funded. no investors to appease, no pivot-to-ads roadmap, no acquisition fire-sale waiting at the end of it.
two doors
both reach the same database. use whichever suits the thing you are building, and mix them freely.
post one statement to /api/v1/sql with a bearer key and get rows back. we speak neon's own http protocol, so @neondatabase/serverless works against it unmodified — nothing to install, and no connection to hold open in a place that cannot hold one.
or take the connection string and point psql, prisma, drizzle or your orm of choice at the pooler. it is postgresql 18 underneath, so whatever already works with postgres already works here.
included
the things an application needs on day two, already part of the platform rather than sold back to you as add-ons.
one key per program instead of one key for everything. tie a key to a single database, and mark it read-only when reading is all it ever needs to do.
every database gets its own private s3-compatible bucket, so a file and the row pointing at it live in the same place and are deleted in the same breath.
build custom roles out of individual permissions rather than picking one of three fixed ones, and read back every action anybody took. an organisation is one account today — adding people to it is not built yet. custom roles and the audit trail arrive with the paid plans — the pricing table below says exactly which.
machine to machine
a nightly job that tidies up yesterday's rows. a deploy step that checks a table before it lets the release through. your own application, serving somebody at four in the morning. none of them can open a browser or type a password — so they carry a key instead, post one statement over https, and get rows back.
bash
curl -sS https://briven.tech/api/v1/sql \
-H "Authorization: Bearer $BRIVEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"select id, title from notes where author = $1 limit 5","params":["ada"],"database":"notes"}'response
{
"command": "SELECT",
"rowCount": 2,
"rows": [
{ "id": 41, "title": "pooler notes" },
{ "id": 39, "title": "backup drill" }
],
"fields": [
{ "name": "id", "dataTypeID": 23, "format": "text" },
{ "name": "title", "dataTypeID": 25, "format": "text" }
]
}issue a key, hand it to one program, and take it back the day that program retires. it reads brk_ followed by 43 random characters — 256 bits of them — and briven keeps only a hash, so the one time you see it is the time it is created. after that the last four characters are all anyone gets, which is enough to tell two keys apart and not enough to use one. free plans hold five keys, starter twenty, pro a hundred, and enterprise as many as you need.
a key can be pinned to a single database, so a program that only ever touches one cannot reach the others. and it can be marked read-only, which is checked twice on the way in: the statement itself has to be a select or a with, and postgres is separately told the transaction may not write. those two switches are the whole scoping story — there is no permission list behind them, and briven would rather say so than imply one.
thirty seconds for a statement, ten thousand rows in a reply, four megabytes of request, a hundred parameters. they apply to every key on every plan and nobody can raise them. a request that crosses one is refused outright with a code your program can read — seventeen different refusals, each naming what was wrong — rather than truncated into an answer that looks right.
a key that is not pinned to one database can also ask what exists: list your databases, fetch one, and list its branches, over the same bearer-token http. no key at all comes back 401 missing_api_key; a revoked or expired one comes back 401 invalid_api_key — the same answer for both, so nobody can sort guesses into wrong and merely retired.
what a key cannot do, so you know before you build rather than halfway through it: creating and deleting databases over the api is switched off for every organisation and there is no setting you can change — ask us and we will open it for your account. the command-line tool is real but unpublished, so there is nothing for you to install. there is no mcp server, so briven does not plug into claude, cursor or anything like them. there are no outbound webhooks. and realtime needs a browser session, which means a key can query but cannot subscribe.
shipped
a database you can branch, rewind and undo. every one of these is running in production today, not sitting on a roadmap.
every change is recorded row by row: who changed what, and when. undo one edit, a range of them, or a whole table. when a row has been changed again since, briven refuses rather than guessing — an undo that quietly overwrites somebody else's work is worse than no undo at all.
take a copy of a database, break it, and throw it away. a 256 mb database was copied in 524 milliseconds — measured, not estimated — and the copy is independent from the moment it exists, so nothing you do to it can reach the original.
name a moment before you do something frightening, and go back to it. going back builds a fresh database beside the original rather than writing over it, so the thing you are recovering from cannot be made worse by the recovery. it refuses outright if the shape of your tables changed in between.
a full backup every night and the write-ahead log archived continuously between them. more to the point, the restore has actually been performed on the live server — a row written an hour after the backup, then deleted, was recovered. until a restore has been proven, a backup is only a hope.
changes pushed to your application as they happen, instead of your application asking again. from commit to delivery measured at 11 milliseconds against a 200 millisecond budget.
pgvector is switched on from the first second, so storing embeddings beside ordinary rows and searching by meaning needs nothing installed. generating those embeddings for you is the one piece still coming — see below.
not yet
you should be able to find out what briven is not before you sign up, rather than afterwards.
this is not switched on for customers yet. the queue, the trigger and the worker are written and proven end to end, including text in and vector out — what has not happened is the model server running on production hardware.
write text, get a vector, without calling a model yourself. storing and searching vectors already works today and always has; having briven generate them for you is the part still to be switched on.
by design
ruled out on purpose rather than left off a roadmap. if your application needs one of these, briven is the wrong tool and you should know that before you sign up rather than after.
a database gets the resources its plan gives it and no more. capacity that changes underneath you is capacity you cannot reason about, and a bill that changes with it is a bill you cannot predict.
one region. running the same data in several places means choosing which copy is right when they disagree, and briven would rather be a database you can explain than one that is quietly eventually consistent.
one primary, and every read sees what the last write wrote. a replica that is a few seconds behind is a whole class of bug that only appears in production.
not a big-tech company
briven is not built by a giant with a churn dashboard and a pivot-to-ads roadmap. it is made with ♥ in Flanders by flndrn — 100% self-funded, sustainable, and independent. no investors to appease, no rug-pulls, no acquisition fire-sale. just a tool we run ourselves, built to outlast the hype.
pricing
the limits below are read straight out of the product's own plan rules, so what you see is exactly what the platform enforces. pay monthly or save two months by paying for the year.
pay monthly, or pay for 10 months and get the year — the same plan, two months cheaper. the limits beside each price are read straight out of the product's own plan rules, so what you see here is exactly what the platform enforces.
included
included
included
included
every plan is a real postgresql 18 database with pgvector already switched on · api keys and object storage come with all of them · you can create an account today; card payments are not switched on yet. every figure above is a count of things, never gigabytes.