One workspace for a 100-million-row sheet, a video and a picture, and the models that read them. It runs on your own GPU, and you can work in it by talking to an agent.
Why did the robot drop it? 63,344 real robot runs from 13 labs, their video and 16.8M telemetry rows, in one app. Watch the fault get found.
↳ DROID (CC-BY-4.0) · omxcode docs/goals/47-report.md
In most data apps, the numbers are computed in one place and drawn in another: copied off the GPU, sent through a server, parsed by a browser, then redrawn. omxplorer is one Mojo program. Your rows stay in GPU memory, the kernels run right there, and only the answer, a few numbers, travels to the screen in the same process.
a chart over 1 million rows
a dashboard click over 100 million rows, on one workstation
Data, kernels and screen in one Mojo program. No server, no JSON, no browser in between (on Linux, checked).
RTX 3090 · omxcode README (chart 0.5–0.7 ms) · the 100M dashboard: goal 38's median click, measured at 856a7e9, before the release build, docs/data-benchmark.md · honest edge: a median chart over 100M rows in memory takes about 0.7 s · on the web, a server streams the screen
Tap “Sum” in the chart's title and pick “Median”.
The tap is a message. update() changes the chart's state; view() describes the new screen.
The group-by and median run as GPU kernels over all 1M rows, in the same process.
Only what changed is redrawn, and the bars spring to their new heights.
the median per group over 1M rows, RTX 3090
A real recording: change a word in the chart's sentence, and a million rows are recomputed on the GPU.
Today an agent uses an app like a tourist with a menu they can't read: it looks at a screenshot and points. In omxplorer, every button also describes itself: its name, what it needs, and whether it's allowed right now. The agent reads that list and calls the button directly.
In a copy of the omxcode repo, run this. It prints one claude mcp add omxplorer … line; run that once.
omxplorer speaks MCP, the standard Claude Code and other agents already use. There's nothing to set up per button: every control is a tool from the first line of code.
“Revenue by product, largest first, top 5.” Edit by talking, not by learning a thousand buttons. Or hand the agent a script and let it run.
→ choose-a-file {"path": "orders_1m.csv"} → create-table → insert-chart → ask {"text": "revenue by product, largest first, top 5"} ← Now: chart0: 0.6 ms
The tools are the buttons, so the agent sees exactly what you'd see, and is bound by the same rules.
Read the agent docsToday the sheet lives in Excel, the charts in Spotfire, the footage in a video editor and the model in a notebook, with exports in between. In omxplorer they're cards on one sheet, on one GPU, and they can be joined.
The video work below is built, checked and on main (goal 39).
Sheets, pivots and charts over CSV and Parquet. 100M-row files open in 0.2 s.
Live nowFrames become rows at about 400 a second at 720p. Split, trim, and let the rows cut a reel.
Live nowPictures open as cards on the sheet. GPU crop, blur and captions are built underneath, not in omxplorer yet.
In progressSpeech and sound as rows you can search and cut.
PlannedA vision or audio model from Hugging Face. Not a chatbot: a detector, a segmenter, a classifier.
MAX runs it fast on your GPU. omxconsole will do the converting.
PlannedIn the same process as your data. No server, no upload.
In progressBoxes and masks land in a table you can join, chart and ask.
In progressWhere it stands: OWLv2 (find more like this, from one tapped example) and SAM 2.1 (outlines) already run in process in the framework's own tests, through PyTorch, on Linux with NVIDIA, and their answers come back as rows. Next: wire them into omxplorer, then any Hugging Face model, converted to MAX.
Each one also works on its own and has its own site.
omxlabs builds GPU-native, agent-native software, written in Mojo. omxplorer is our first product.