I'm Co-Founder & CEO of Pixeltable — open-source Python infrastructure that unifies multimodal storage, incremental computation, vector indexing, tool-calling agents, and FastAPI serving in a single declarative app.py.
📦 Latest release:
v0.7.24· ⭐ 1,659 stars · 🍴 235 forks · 🧪 49 runnable example apps
| Repository | What it does | Try / Install |
|---|---|---|
pixeltable/pixeltable |
The backend agents build with. Declarative tables (TableModel), incremental computed columns, hybrid vector search (EmbeddingIndex), media storage, and HTTP serving (FastAPIRouter) in one file. |
pip install 'pixeltable[serve]' |
awesome-pixeltable-apps |
Curated gallery of self-contained multimodal AI apps & REST APIs built with Pixeltable. Open any app in GitHub Codespaces or deploy to Pixeltable Cloud. | Browse Live Gallery → |
challenge-the-design |
Agent skill & plugin that reviews a PR or stack as an ensemble, separates requirements from assumptions, and runs a behavior-preserving deletion pass before checking implementation. | npx skills add pierrebrunelle/challenge-the-design |
marcel-review |
Agent skill that reviews a change the way Marcel Kornacker reviews it: crisp abstractions, ownership, failure paths, and what the change costs its future readers. | npx skills add pierrebrunelle/marcel-review |
mcp-server-openai & infinite-memory-discord-bot |
Model Context Protocol server bridging Claude & OpenAI models, plus a stateful Discord agent with durable semantic memory backed by Pixeltable. | Explore Repos → |
Auto-synced from pierrebrunelle/awesome-pixeltable-apps (49 apps total, newest first):
| App | Architecture & Features | Launch |
|---|---|---|
| Youth Soccer Match Recordings 2026-11-06 |
Ingest youth soccer match videos on a schedule with timezone-aware kickoffs and highlight clipsComputed columns & UDFs · B-tree indexes · Media (images) |
|
| Ski-Lift Pass Gates 2026-11-05 |
A command-line tool for ski-lift turnstiles: passes and gate scans as Pixeltable tables with a computed gate verdict, a per-zone view built with list_iterator, OpenTelemetry span traces of every command, and the same commands against a Pixeltable Cloud databasepxt CLI & dashboard · Media (images) · Computed columns & UDFs · Pixeltable Cloud · B-tree indexes |
|
| Coral Reef Survey Photos 2026-11-04 |
Segment coral-reef survey photos, send the model's boxes to Label Studio as pre-annotations, re-import the reviewed labels and diff them against the model, with COCO and LanceDB exports, all as Pixeltable tables and computed columnsComputed columns & UDFs · Media (images) · B-tree indexes |
|
| Wildlife Camera Traps 2026-11-03 |
Split trail-camera recordings into trigger events at their own motion-sensor times, grab the middle frame of each event and name what triggered the camera with YOLOX object detection, all as Pixeltable computed columns and viewsMedia (images) · Computed columns & UDFs · B-tree indexes |
|
| Vintage Poster Catalog 2026-11-02 |
A searchable vintage poster catalog where the images, the metadata, the sales and two CLIP vector indexes live in Pixeltable tables: text-to-image, image-to-image and filtered vector search plus joins, with no S3 bucket, metadata database or vector store to keep in syncComputed columns & UDFs · B-tree indexes · Media (images) |
⚡ 60-Second Quickstart: One-File Multimodal Backend (app.py)
With Pixeltable, your schema, computed columns, vector indexes, and HTTP routes live in a single declarative app.py — no separate vector DB, no for row in ...: model loops, and no imperative glue:
import pixeltable as pxt
import pixeltable.functions as pxtf
from pixeltable.functions.openai import embeddings
from pixeltable.serving import FastAPIRouter
TableModel = pxt.model_base()
@pxt.udf
def excerpt(text: str, n: int = 120) -> str:
return text if len(text) <= n else f'{text[:n]}...'
class Docs(TableModel, name='docs'):
id = pxt.Column(value=pxtf.uuid.uuid7(), primary_key=True)
title: pxt.String
body: pxt.String
image: pxt.Image | None
summary = excerpt(body)
__indexes__ = [
pxt.EmbeddingIndex(column=body, string_embed=embeddings.using(model='text-embedding-3-small'))
]
api = FastAPIRouter(name='ingest')
api.add_insert_route(Docs, path='/docs', inputs=[Docs.title, Docs.body, Docs.image], outputs=[Docs.id, Docs.summary])Run locally or deploy the exact same app.py to Pixeltable Cloud:
# Local
pip install 'pixeltable[serve]'
pxt init
pxt schema update app.py my_app
pxt service update app.py my_app -f
# Pixeltable Cloud
pxt login
pxt db update pxt://org:db -f
pxt schema update app.py pxt://org:db -f
pxt service update app.py pxt://org:db -f🧭 Engineering & Code Review Philosophy: Delete Before You Abstract
Whether designing multimodal infrastructure or reviewing pull requests with challenge-the-design and marcel-review, I optimize for a few non-negotiable invariants:
- State the problem and a measurable falsifier first. Separate true requirements from inherited assumptions before writing code.
- Delete unnecessary work before adding abstractions. Run a behavior-preserving deletion pass across the whole ensemble (callers, state, and tests) before introducing new layers.
- Every abstraction must earn its keep. A class or function should represent a crisp contract that can be stated in one sentence—and its docstring should state only what the signature does not.
- Declarative state over imperative glue. If progress and lineage live in rows and computed columns rather than ephemeral in-memory loops, retries, caching, and observability become properties of the table engine.
🏗️ Career Arc: Structural Engineering → Decision Science → AI Infrastructure
- Pixeltable — Co-Founder & CEO · Building open-source multimodal AI data infrastructure and Pixeltable Cloud (
pxt://). - Noteable (acquired by Confluent) — Co-Founder · Built the collaborative data notebook platform bridging Python, SQL, and interactive analytics, and pioneered early ChatGPT Code Interpreter / Notebook plugin workflows.
- Amazon & AWS — Decision Scientist & Product/Data Leader · Applied econometrics, optimization, and large-scale cloud data systems across AWS and Amazon consumer/infrastructure teams.
- Siemens & Structural Engineering — Started my career in structural engineering and industrial systems, where load paths, safety margins, and failure modes are calculated before anything is built.




