New: automations as flows, dashboards and SQL views

The collaborativedatabase where everytable is a real PostgreSQL table.

The simplicity of a shared spreadsheet — grids, views, forms, permissions — with data that lives in tables that are typed and plainly named. Your team works in the interface; your scripts, your BI tools, your AI agents and psql read the same rows.

$ docker compose up -d
  • Self-hosted
  • AGPL-3.0
  • REST API & MCP server
The interface, for real

Everything your team expects from a shared spreadsheet.

basedb — grid: A grid that writes to a real table — and computed fields: a duration by formula, the client’s city by lookup, the number of tasks by count.
A grid that writes to a real table — and computed fields: a duration by formula, the client’s city by lookup, the number of tasks by count.
PostgreSQL, no translation layer

A grid for the team, a real table for your tools.

No generic model, no catch-all JSON, no field_1837: a base is a schema, a table is a table, a field is a typed column with a readable name.

  • Native types: text, numeric, date, timestamptz, boolean — and real foreign keys for relations.
  • Constraints enforced by the database: single selects as CHECK, web and email addresses validated, relations as FOREIGN KEY.
  • Formulas computed by PostgreSQL: JOURS([Fin]; [Début]) becomes a generated column, which psql reads like any other.
  • Direct SQL is still allowed — and even it is recorded in the history, by a trigger.
  • SQL queries and views in the interface: queries saved under the tables, for yourself or for the team, and real PostgreSQL views filed among them, which psql reads too.
  • Renaming doesn’t break anything: the old name is still served by a compatibility alias while you migrate your queries.
Interface New field · Opportunities
Required AI
PostgreSQL b_t4z56fq_ventes.opportunites
ALTER TABLE b_t4z56fq_ventes.opportunites
  ADD COLUMN montant numeric(38,10);
COMMENT ON COLUMN …opportunites.montant
  IS 'Contract amount, excluding tax';
basedb=> \d opportunites
nomtext
statuttext
montantnumeric(38,10)
echeancedate
clients_iduuid → clients
Automate

Automations as flows, AI at every step.

When a row changes, at a set time or with a click: a graph editor chains the steps, and every run can be reviewed on the flow.

  • A readable flow: the trigger, then each step as a card; a + on a line adds a step right there.
  • Find, decide, write: find a row, take one branch or another depending on conditions, update, create, notify, call a webhook, post to Slack.
  • Ask AI in a step: a prompt that cites the row, an answer read as text, number, date or choice, which the following steps reuse.
  • Copilot proposes a whole automation from a single sentence, or explains why a run failed — nothing is saved without you.
  • With the permissions of whoever wrote it, and in the history like any other write.
basedb — the “Project delivered” automation in the flow editor: when a task is done, record the time, find what is left of the project, take the “Otherwise” branch, ask the AI for the wrap-up note, then deliver the project; on the right, its latest runs, step by step.
Analyze

Dashboards without leaving your tables.

Questions asked with the mouse or in SQL, fifteen visualizations, shared filters — everyone reads them with their own permissions.

  • Questions: a table, its joins, filters and measures by day, week, month or year — or read-only SQL.
  • Fifteen visualizations: number, trend, progress, gauge, bars, lines, pie, funnel, pivot table, map…
  • Explore in one click: a point opens its rows, or a finer period.
  • Shared filters that drive one, several or all of the cards.
  • Share through a link, public or members only, and embed in another site.
basedb — a dashboard: the month’s trend, a collections goal, revenue by month, review sentiment, under period and client filters.
Collaborate without opening everything

Permissions down to the field, a history with no gaps.

Permissions are granted to groups, on a project, a base or a table, and flow down to everything below. A sensitive column can be hidden from a group, or made read-only for it.

  • Four levels: No access, Read, Edit, Manage — adding up from one group to the next.
  • Even SQL follows your permissions: in the interface, a query sees only the tables and fields open to you — and PostgreSQL itself enforces it.
  • Every write is captured in its own transaction: interface, API, agent, public form or direct SQL.
  • A change can be undone, a deleted row restored, and a deleted base too.
  • Administration asks for confirmation: changing a permission requires having retyped your password within the last five minutes.
AdministratorsSales teamSupport
Main project Read
Sales Edit
Opportunities inherited Edit
Clients inherited Edit
Support inherited Read
Field “Margin”
>_

Direct SQL session updated “ERP migration”

02:46 · local connection · psql

Amount: 125,000 → 130,000

↶ Undo
▣

Form “Quote request” created “Intranet redesign”

public response · published by Camille
REST API · MCP · webhooks

Your AI agents get the data, not the keys to the kingdom.

The MCP server gives agents fifteen tools; the REST API gives your programs the same data. A single point of permission control, the same logs.

  • One token for the whole base, production and staging included, read-only by default, never with more permissions than the person who created it.
  • An agent only deletes with your approval, one row at a time, and doesn’t change the schema: it proposes, a person approves.
  • Generated documentation for every base, filtered by your permissions, with its OpenAPI 3.1 specification.
  • Webhooks on every write: signed, ordered and retried.
✦ Agent connected through MCP · “Sales” token
How many opportunities are in negotiation, and for what amount?
list_records opportunites · statut = Negotiation
Two opportunities, €182,000 in total: ERP migration (€130,000) and Fleet tracking (€52,000).
Add a “Probability” field as a percentage.
propose_add_field opportunites · Probability · number
Proposed: someone on the team has to approve it in basedb.
Proposal expires in 23 h

Add the “Probability” field (Number) to Opportunities

Proposed by the agent · “Sales” token

Reject Approve
And everything else

What you expect from a team tool, without letting go of PostgreSQL.

Every feature writes to the same tables, under the same permissions, into the same history.

Ten views of the same rows

Collaborative for the whole team, or personal for you alone: everyone picks their own way of reading, and nobody copies the data.

GridKanbanCalendarTimelineGalleryListMapFormSurveyQuiz

Shared forms

A public link, or one restricted to signed-in members. Responding grants no permission on the table.

Learn more →

Environments

One base, several variants. Compare the schema, migrate from one to another, sync rows.

ProductionStagingDevelopment
Learn more →

Working together

Other people’s writes arrive in real time, you see who is looking at which row, and you discuss it right where it is: comments, mentions, notifications. Ctrl+Z undoes the last write, and refuses rather than overwrite someone else’s work.

Real timePresenceCommentsMentionsCtrl+Z
Learn more →

AI in the grid

A field filled in by a model from the other columns, and a Copilot that suggests filters, queries and columns, applied in one click. OpenAI, Anthropic, Mistral, or a model served on your own machine.

Summarize {{Notes}} in one sentence

Relations and formulas

Real foreign keys, formulas written in French or English and computed by PostgreSQL, and lookups, rollups and counts across relations.

ROUND([Montant HT] * (1 + [Taux de TVA]), 2)

Rich text and variables

A visual editor for formatted text, sanitized on write; and in any long text, {{Ville}} reads as the row’s value.

Delivery on {{Date}} in {{Ville}}

Shared views

A read-only view through a link, embeddable in another site; a calendar becomes a feed for your calendar app.

Synced tables

A table kept up to date from an online CSV, a calendar, or another basedb’s shared view.

Base templates

Ten ready-to-use templates, a base described to the AI in one sentence, and your own saved as a template.

Files and images

On the host’s disk or in S3-compatible storage: AWS, Scaleway, OVH, Cloudflare R2, Garage, MinIO…

Excel, CSV and JSON import

Drop a file: the import guesses the types, creates the table or fills an existing one, and tells you row by row what was rejected.

Accounts and invitations

Everyone creates their own account and projects, and invites others through a link with Read, Edit or Manage; sign in with a password, Google, Microsoft or any OpenID Connect provider.

Webhooks

Every write can notify another system: signed payloads, delivered in order, retried.

Personal settings

Your language, your theme, the date order, your notifications, your sessions and your tokens, all in one place.

In your language

The interface uses your browser’s language, one of twenty; everyone can change it in their settings.

Self-hosted

Your data stays on your servers.

basedb is free software (AGPL-3.0): a single image, a PostgreSQL database, and that’s it — no mandatory third-party service, no telemetry. Back it up with pg_dump, read it with any PostgreSQL client.

  • db PostgreSQL 16, your data
  • basedb The interface, the REST API and the MCP server, on a single port
  • proxy Caddy, automatic HTTPS (optional)
  1. 1

    Get basedb

    git clone https://github.com/eodia/basedb.git
    cd basedb && cp .env.example .env
  2. 2

    Two secrets in .env

    POSTGRES_PASSWORD=a-strong-password
    # openssl rand -base64 32
    BASEDB_ENCRYPTION_KEY=…
  3. 3

    Start

    docker compose up -d
    # then http://localhost:3000: create your account
FAQ

What people often ask us.

Another question? The documentation most likely answers it.

How is basedb different from other collaborative databases?

In where the data lives. Where others store your rows in a generic model (numbered columns, JSON documents), basedb creates a real PostgreSQL table for each table and a real typed column for each field, with readable names. Your data stays usable without basedb.

Can I write to the tables directly in SQL?

Yes. Constraints (types, required, single selects, foreign keys) are enforced by PostgreSQL itself, and a trigger records even direct SQL writes in the history, along with the session that made them. The interface’s SQL console and psql read the same tables; in the interface, everyone writes SQL with their own permissions, saves their queries and, if they manage the base, turns them into real PostgreSQL views.

What gets sent to an AI provider?

Nothing until you configure a provider. After that, for schema drafts and Copilot, only the schema and your sentence are sent by default; letting Copilot read data is a checkbox, per conversation. A base template requested from the AI sends only your sentence. An AI field sends the columns its prompt cites, after explicit consent.

Can several people work on the same table?

Yes. Other people’s writes appear without reloading, with their face on the table or row they’re looking at. You comment on a row, mention someone with @, and the bell lets them know. And Ctrl+Z only undoes your own writes: it refuses rather than overwrite what someone else has changed since.

In which languages?

Twenty: French, English, German, Spanish, Italian, Brazilian Portuguese, Dutch, Polish, Czech, Swedish, Danish, Norwegian, Finnish, Romanian, Hungarian, Turkish, Ukrainian, Japanese, Simplified Chinese and Korean. The interface uses the browser’s language, and everyone can change it in their settings; this site and the documentation exist in the same languages.

How does an AI agent connect?

Through the MCP server, with an integration token limited to one base, read-only by default. An agent reads, creates and updates rows according to its permissions — and deletes them, one at a time, if its token was created for that; it doesn’t change the schema: it proposes, and a person approves.

Which version of PostgreSQL do I need?

PostgreSQL 16 or later, with the pg_trgm and unaccent extensions (available in the official image). The provided docker-compose starts a PostgreSQL 16; you can also point DATABASE_URL to your own server.

Is it ready for production?

basedb is under active development: the core, the API, the MCP server and the interface work and are covered by more than a thousand tests, but some features are still to come (see the roadmap). Try it, and back up your database as you would any PostgreSQL database.

Under which license?

AGPL-3.0-or-later. You can use, modify and host it freely; if you offer a modified version as a service, you share its source code.

Your data deserves real tables.

Install basedb in minutes, invite your team, and stay in control of every row.