Skip to main content
Pixeltable is an open-source multimodal database you use from Python. You declare tables, computed columns and HTTP routes in one file, app.py. Insert a row and Pixeltable runs the model calls, stores the results and updates the indexes, with no scripts to keep files, results and embeddings in sync.
Quickstart · How it works · Pixeltable Cloud

The stack it replaces

Take a video search app: users upload videos, each one gets transcribed and summarized, and you search the summaries. Each piece is fine on its own. The trouble is the joints. A video gets deleted from the bucket and its row stays behind. The DAG reruns every video because it can’t tell which ones changed, unless you write that bookkeeping yourself. The vector database keeps serving embeddings of last week’s summaries. And the first time you want to try a better prompt, you write a backfill script and hope it touches the right rows. In most of these projects, the plumbing is most of the code, and it’s where most of the bugs are.

What it looks like

This is the whole backend for that app:
Replace PORT with the port that pxt service update printed. The Quickstart walks through the same steps with an app that needs no API key.

What a change costs

Every computed column refers to the columns it reads, so Pixeltable knows what to run and, after a change, what to rerun. That’s the part you’d otherwise build by hand.

New rows only

Upload 100 more videos and only those 100 get processed.

A better prompt

pxt recompute redoes the summaries and their index. The transcripts you already paid for stay.

Failures and versions

With on_error='ignore', a failed model call stays on its row for a targeted rerun. pxt revert undoes the last change to a table.

Why we built it

We’re database people. When we looked at multimodal AI projects, we kept finding the same thing. The models were the interesting part, and the team spent most of its time on data plumbing. Lovable and Bolt made web apps something one person can build, by putting a small surface over a hard problem. We wanted that for developers working with video, images, audio and documents, so we moved the work into the database. The engine tracks what depends on what, so it works out which rows to recompute. The first version of an app and its tenth revision are the same kind of work: edit app.py, run pxt schema update, then pxt service update. One file also helps when a coding agent writes the code. The agent writes the whole backend in app.py, and you review one diff instead of a change in every system. AI coding agents covers the skill and the MCP servers. The longer version is in Making Multimodal More Lovable.

When it’s the wrong tool

If you don’t want a schema, Pixeltable is the wrong tool. Every column has a type, and the shape of every table lives in app.py. It isn’t a no-code builder either. You write Python, and Pixeltable is the data layer under your app. The frontend is up to you, whether that’s Lovable or your own React code calling the routes from its server. It won’t pick your model or tell you whether the answers are any good. Video files are still big and model APIs still fail. What Pixeltable does is keep track of what ran and what needs to run again. If you try Pixeltable and leave, your data comes with you. Media can live in your own bucket (Cloud storage), and pxt.io.export_sql() or pxt.io.export_parquet() copies a table out whenever you want.

What you can build

RAG and live APIs

Documents split into chunks, an embedding index, and a search route, with no re-embed job when you add or remove documents.

Agents

The model’s tool calls and their results are columns on each message’s row, so you can query them later.

Media pipelines

Frames and transcripts as rows, ready to export for training.
Coming from Pinecone, Postgres, LangGraph or Airflow? Migrate shows what each one becomes.

Next

Quickstart

From an empty folder to a POST that returns computed columns, on your machine.

Pixeltable Cloud

pxt db update puts the same app.py on a hosted database. The guide goes from pxt login to a running service.

10-minute tour

The same tables from a notebook, with no CLI and no HTTP server.
Last modified on November 7, 2026