PixeltablePixeltable Logo
  • Pricing
  • DatasetsNEW
K
GitHubDiscord
Video Intelligence Pipeline in 20 MinutesIterate on your data, not your infrastructure

Multimodal DataMade Simple

Every team building with video, audio, images, and documents stitches together 5–8 services. The real cost isn't the wiring — it's the lost feedback loop. Pixeltable ends that.

AI Data Infrastructure
Declarative
Storage
OrchestrationRetrieval
Incremental
From the creators of Apache Parquet and Impala and engineers who worked at:
Apple
Google
Amazon
Facebook
Airbnb
Cloudera
MapR
Dremio
Oracle
IBM
Apple
Google
Amazon
Facebook
Airbnb
Cloudera
MapR
Dremio
Oracle
IBM
Apple
Google
Amazon
Facebook
Airbnb
Cloudera
MapR
Dremio
Oracle
IBM
01

Your data is scattered.

Ingest

You need to know where your data is, where it came from, and where it goes — as you build and as you grow. That requires integrity, not more glue.

What you get

The only system where video, audio, images, and documents are first-class column types — not opaque blobs. Schema, versioning, and lineage from the moment data enters. Your files stay where they are.

Replaces
boto3 upload scriptsMetadata DBSync glue code
Learn more
Tables & Data Type System Cloud Storage
1media = pxt.create_table('app.media', {
2 'video': pxt.Video,
3 'doc': pxt.Document,
4 'meta': pxt.Json
5})
6
7media.insert([
8 {'video': 's3://bucket/demo.mp4'},
9 {'doc': '/local/report.pdf'}
10])

Insert a row → every downstream step triggers automatically. One system of record for all modalities.

02

Your time is wasted.

Process

On ETL, caching, retries, type safety — not on the AI logic that matters. Pixeltable handles the plumbing so you can focus on what you're building.

03

Your infrastructure doesn't compound.

Ship

Shipping is easy. Evolving is hard. Every iteration should make your system smarter — that's the competitive advantage glue code can never provide.

Get StartedContact UsGitHub

Free & open source · Apache 2.0 · No account required

See It In Action

Define your entire data processing and AI workflow declaratively using computed columns on tables. Focus on your application logic, not the data plumbing.

ColabColabGitHubStarter Kit
▶ Demo
Transactional, incremental, fully versioned — multimodal AI workloads that run themselves
1# Video intelligence — ingest, extract, enrich, index, query
2import pixeltable as pxt
3from pixeltable.iterators import FrameIterator
4from pixeltable.functions import yolox, gemini, whisper, twelvelabs
5from pixeltable.functions.huggingface import clip, sentence_transformer
6
7# 01 Ingest — native multimodal types
8videos = pxt.create_table('app.videos', {
9 'video': pxt.Video,
10 'title': pxt.String,
11})
12
13# 02 Extract — frames, audio, transcript (automatic on insert)
14frames = pxt.create_view('app.frames', videos,
15 iterator=FrameIterator.create(video=videos.video, fps=1)
16)
17videos.add_computed_column(audio=videos.video.extract_audio())
18videos.add_computed_column(
19 transcript=whisper.transcribe(videos.audio, model='base')
20)
21
22# 03 Enrich — Gemini multimodal + YOLOX + custom UDF
23@pxt.udf
24def label_scene(detections: list[dict], description: str) -> str:
25 objects = [d['class'] for d in detections[:5]]
26 return f"{description} | objects: {', '.join(objects)}"
27
28videos.add_computed_column(
29 description=gemini.generate_content(
30 [videos.video, 'Describe this video in one sentence.'],
31 model='gemini-2.5-flash'
32 )
33)
34frames.add_computed_column(
35 detections=yolox(frames.frame, model_id='yolox_s')
36)
37frames.add_computed_column(
38 label=label_scene(frames.detections, videos.description)
39)
40
41# 04 Index — CLIP, MiniLM, Twelve Labs — always in sync
42frames.add_embedding_index('frame',
43 image_embed=clip.using(model_id='openai/clip-vit-base-patch32'))
44frames.add_embedding_index('label',
45 string_embed=sentence_transformer.using(model_id='all-MiniLM-L6-v2'))
46videos.add_embedding_index('video',
47 embedding=twelvelabs.embed.using(model_name='marengo3.0'))
48
49# 05 Query — similarity + metadata filtering in one expression
50@pxt.query
51def find_scenes(query_text: str, ref_image: pxt.Image, title: str):
52 text_sim = frames.label.similarity(query_text)
53 img_sim = frames.frame.similarity(ref_image)
54 return (frames
55 .where(videos.title.contains(title))
56 .order_by(text_sim + img_sim, asc=False)
57 .limit(10)
58 .select(frames.frame, frames.label)
59 )
app.videostable
ColumnTypeComputed With
videoVideo
titleString
audioAudioextract_audio()
transcriptJsonwhisper(base)
descriptionStringgemini(video)
embedding_indexTwelve Labs (video)
app.framesview → videos
ColumnTypeComputed With
frameImageFrameIterator
detectionsJsonyolox(frame)
labelString@pxt.udf
embedding_indexCLIP (image)
embedding_indexMiniLM (text)
FastAPIserve
POST/api/videos→ insert
GET/api/search→ find_scenes()
GET/api/frames→ .select().collect()

Insert a video → Gemini, YOLOX, Whisper + custom @pxt.udf as computed columns → CLIP, MiniLM, Twelve Labs indexes → query via @pxt.query. Experiment to production.

From Raw Data to Production

Deploy as a full backend or a sidecar to your existing stack.

Loading architecture diagram...

Watch & Learn

Tutorials, conference talks, and deep-dives from the Pixeltable team.

Image Editing with Rev
10 min
Image Editing with Rev
Pixeltable Overview
15 min
Pixeltable Overview
Data Council Talk
32 min
Data Council Talk
DB School Podcast
32 min
DB School Podcast
More on YouTube
For developers

Developing with AI Tools

Pixeltable's declarative API means AI coding assistants get it right on the first try. Ten lines of code gives you a persistent, versioned, incrementally-optimized pipeline.

Building with LLMsWhy vibe-coded apps break
llms.txt
Concise documentation for LLMs
llms-full.txt
Complete API reference for LLMs
MCP Server
Interactive Pixeltable exploration — tables, queries, Python REPL
Claude Code Skill
Deep Pixeltable expertise for Claude
AGENTS.md
Architecture guide for AI agents working with your codebase

Your Backend for Multimodal AI

pip install pixeltableYour entire AI data stack
Instead of ...Pixeltable gives you ...
PostgreSQL / MySQLpxt.create_table()— schema is Python, versioned automatically
Pinecone / Weaviate / Qdrantadd_embedding_index()— one line, stays in sync
S3 / boto3 / blob storagepxt.Image / Video / Audio / Document— native types with caching
Airflow / Prefect / CeleryComputed columns— trigger on insert — no orchestrator needed
LangChain / LlamaIndex (RAG)@pxt.query + .similarity()— computed column chaining
pandas / polars (multimodal).sample(), add_computed_column()— prototype to production
DVC / MLflow / W&Bhistory(), revert(), time travel— built-in snapshots
Custom retry / rate-limit / cachingBuilt into every AI integration— results cached, only new rows recomputed
Use Cases

What Can You Build?

Three paths from day one — all built on the same table abstraction, same pip install

Data Wrangling for ML

Curate, augment, and export training datasets. Auto-annotate with AI, version everything, export to Parquet or PyTorch.

frames = pxt.create_view('ml.frames', videos,
iterator=FrameIterator.create(video=v.video, fps=1))
frames.add_computed_column(detections=yolox(frames.frame))
export_parquet(frames, 'training_data/')
Multimodal IngestAuto-Annotate with AIVersion & SnapshotExport Parquet / Pandas
Learn more

Agents & MCP

Tool calling, persistent memory, and decision traces — not stateless glue. UDFs as LLM tools, MCP servers, semantic recall.

tools = pxt.tools(get_weather, search_docs)
agent.add_computed_column(response=chat_completions(
messages=msgs, tools=tools))
memory.add_embedding_index('content', string_embed=embed_fn)
@pxt.udf as ToolsMCP Server IntegrationPersistent MemorySemantic Recall
Learn more

End-to-End Multimodal

Video in, finished product out. RAG, semantic search, multimodal APIs — one table, same primitives.

videos.add_computed_column(transcript=whisper.transcribe(audio))
videos.add_computed_column(hook_video=gemini.generate_videos(...))
videos.add_computed_column(final=with_audio(hook_video, tts_audio),
destination='s3://bucket/output/')
Video / Audio / Image / TextWhisper + Gemini + VeoAuto-assemble PipelineS3 / Cloud Delivery
Learn more
Get Started in 5 MinutesExplore Public Datasets

Everything You Need to Know

Common questions about building with Pixeltable

Every Era of DataGets an Owner

Oracle for relational. Snowflake for analytics. Databricks for batch.
The multimodal data plane is next.

Start Building with Pixeltable10-Min Quickstart
PixeltablePixeltable Logo

The declarative data infrastructure for multimodal AI. Build production-ready video, image, and document workflows in minutes, not months.

GitHubXDiscordYouTubeLinkedIn

Product

  • Blog
  • Pricing
  • Changelog
  • GitHubOpen Source

Resources

  • Examples
  • Tutorials
  • API Reference
  • Pixelagent

Company

  • About
  • CareersHiring
  • Contact
  • Privacy

Get Started

  • Pixelbot
  • Starter Kit
  • Deployment Guide

© 2026 Pixeltable, Inc. All rights reserved.

Terms of ServicePrivacy PolicySecurity