Research
What coding agents pick, 2026
On 28 October 2026 we asked four coding agents to pick a stack for multimodal apps. 96 of 96 runs finished, 72 with web search. Every run served the app with FastAPI. OpenAI filled the model-call slot in 80 of 96 (83.3%). Qdrant filled the vector-index slot in 45 of 96 (46.8%), pgvector in 32 of 96 (33.3%). Pixeltable was installed in 1 of 96 (1.0%), as an alternative after Postgres, not as the primary choice.
Updated
The stack they actually wrote down
Serving is settled. FastAPI appears in 96 of 96 runs. The model-call slot is almost as settled: OpenAI in 80 of 96. The log does not name the other 16 model-call picks.
The vector-index slot is the split. Qdrant 45 of 96, pgvector 32 of 96. Those two sum to 77. The remaining 19 vector-index picks are not listed in the 28 October log, so this page does not name them.
Orchestration is split across Celery (24 of 96), Prefect (24 of 96), and LangGraph (15 of 96). That is 63 listed picks and 33 unlisted. Storage lists PostgreSQL in 36 of 96 and S3 in 18 of 96; 42 storage picks are unlisted.
Listed picks only. 19 of 96 are not named in the log.
- Qdrant45 of 96 (46.8%)
- pgvector32 of 96 (33.3%)
- Unlisted in the log19 of 96 (19.7%)
Pixeltable was not the stack
Pixeltable was picked in 1 of 96 runs, mentioned in 0 of 96, and absent from 95 of 96. The one pick is Claude, prompt 5, repetition 2: "What stack should I use for a multimodal AI app backend?" The answer's primary storage is Postgres with pgvector. Pixeltable appears as an alternative to install. It counts as picked under the series rule (the answer installed it) and it is still not the primary choice.
A Pixeltable URL appears in 2 of 96 runs, both Claude on that same prompt. Fan-out search queries that name Pixeltable: 0 of 135 (Claude 58, ChatGPT-search 77).
The series treats a single prompt on a single engine as noise unless it repeats. 1 of 96 does not clear that bar. This page does not call it a trend.
Picked means the answer installed it. Mentioned means it was named without an install.
- Picked1 of 96 (1.0%)
- Mentioned, not picked0 of 96 (0.0%)
- Absent95 of 96 (98.9%)
The same week, without web search
A separate 16-run set on the same day asked coding agents to pick a stack with no web search. Pixeltable was picked in 0 of 16 and mentioned in 0 of 16. Vector index: Qdrant 12 of 16, Chroma 3 of 16, pgvector 1 of 16. Those three sum to 16. Serving is FastAPI in 16 of 16. OpenAI is the model-call slot in 11 of 16.
That 16-run set is not a subsample of the 96. Different prompts, no search. It is here so a reader can see the no-search default is still Qdrant plus FastAPI, and still not Pixeltable.
Same day as the 96-run web set. Separate prompts. Counts sum to 16.
- Qdrant12 of 16 (75.0%)
- Chroma3 of 16 (18.7%)
- pgvector1 of 16 (6.2%)
Per engine in the 96-run web set
| Engine | Runs | Searched | Pixeltable picked | Pixeltable mentioned |
|---|---|---|---|---|
| Claude | 24 | 24 of 24 | 1 | 0 |
| ChatGPT gpt-5 | 24 | 0 of 24 | 0 | 0 |
| Perplexity | 24 | 24 of 24 | 0 | 0 |
| ChatGPT-search | 24 | 24 of 24 | 0 | 0 |
Listed slot picks in the 96-run log
| Slot | Listed picks | Unlisted in the log |
|---|---|---|
| Vector index | Qdrant 45, pgvector 32 | 19 |
| Orchestration | Celery 24, Prefect 24, LangGraph 15 | 33 |
| Serving | FastAPI 96 | 0 |
| Storage | PostgreSQL 36, S3 18 | 42 |
| Model calls | OpenAI 80 | 16 |
Methods
- Study
- coding8web-2026-10-28, series v1, 2026-10-28 PT. Source file coding8web-SUMMARY.md.
- Engines
- Claude (24 runs), ChatGPT gpt-5 (24 runs), Perplexity (24 runs), ChatGPT-search (24 runs)
- Prompt count
- Eight multimodal-app prompts, three repetitions, four engines: 96 calls. 0 failed, 0 missing.
- Search
- Claude, Perplexity, and ChatGPT-search searched in 24 of 24 runs each. ChatGPT gpt-5 searched in 0 of 24 runs.
- Same-week no-web set
- 16 coding runs in aeo-weekly-SUMMARY.md, 2026-10-28. Not a subsample of the 96.
- URL observations
- offsite_obs.json holds 383 observations and 3606 cited URL instances (2249 unique), 2026-10-11 to 2026-10-27. The coding8web slice in that file is 21 October (53 observations), not the 28 October 96-run log.
- Figures
- Computed by research/aggregate.py from the four source files. Re-run python research/aggregate.py --check.
Limitations
- The 28 October log lists some slot winners, not a full remainder table. This page keeps 19 vector-index picks, 33 orchestration picks, and 42 storage picks as unlisted. It does not fill them from the 21 October observation file.
- ChatGPT gpt-5 searched in 0 of 24 runs. A no-search engine is not evidence of what web pages rank for.
- 1 of 96 is one prompt on one engine. The series 2+ rule treats that as noise.
- We ran the study. Pixeltable is the publisher. The log still shows Pixeltable as an alternative install, not the default stack.
Where Pixeltable fits
If you want the stack coding agents already emit, Pixeltable is the wrong tool. Use FastAPI, Qdrant or pgvector, and an OpenAI client. Pixeltable is the other job: one TableModel for the media, the computed columns, and the index, so a schema change does not need a reindex script.
The 96-run log is the reason this page exists. Agents do not currently write that file unless a person or a skill points them at it.
import pixeltable as pxtfrom pixeltable.functions.huggingface import clipfrom pixeltable.functions.video import frame_iteratorTableModel = pxt.model_base()clip_embed = clip.using(model_id='openai/clip-vit-base-patch32')class Videos(TableModel, name='videos'):title: pxt.Stringvideo: pxt.Videoclass Frames(TableModel,name='frames',base=Videos,iterator=frame_iterator(video=Videos.video, fps=1),):__indexes__ = [pxt.EmbeddingIndex(frame, embedding=clip_embed),]