Skip to main content

Before

A glued stack

Most stacks glue a blob store, a warehouse, a vector database, an orchestrator, and custom endpoints.

You pay for the joints

Each extra store or orchestrator is another system to operate.
Pixeltable is the database, the orchestration, and the serving: tables, computed columns, indexes, and endpoints in one Python file (app.py).

With Pixeltable

One catalog

Images, video, audio, documents, and ordinary columns.

Transforms as columns

Incremental, not a pipeline you re-run.

Indexes that follow the data

Embeddings stay current with the rows.

Endpoints from the same file

Or skip pxt service update and insert from Python.
If you process media and serve model pipelines, that file is the backend you keep. Insert a row. Transforms run. Indexes stay current. Locally, create those tables with pxt schema update. Start the endpoints with pxt service update. On Pixeltable Cloud, use the same app.py after you set PIXELTABLE_API_KEY and run pxt db update. That Cloud command creates or updates the hosted database. It does not insert rows and does not start app endpoints.

Quickstart

Write app.py, run pxt schema update and pxt service update, then POST a row.

What you declare

A TableModel class becomes a table when you run pxt schema update. An annotation (title: pxt.String) is a stored column: the value you insert. A bare type is required; use pxt.String | None when the value may be missing. An assignment (title_upper = ...) is a computed column. It runs on insert and on update. An embedding index lives on the model, so new rows are searchable without a separate vector database. A FastAPIRouter in the same file defines endpoints, for example POST a row and get computed columns back. Endpoints are optional. Skip pxt service update if you insert from Python, then export. Views, UDFs, versioning, and import/export start in the User Guide. Notebooks and tests can still call pxt.create_table(). An app declares tables in app.py.

Built for

Multimodal backend

RAG and live APIs.

Agents

Tool calls as columns.

Media pipelines

Frames and transcripts as rows.
Coming from Pinecone, LangChain, or hand-rolled FastAPI? See Migrate. The longer argument: Making Multimodal More Lovable.
Last modified on September 3, 2026