Ari’s Space*   est. 2026
Skip to content
ari*s space[ a. ]
← Librarytools and plugins / 2026-08-03

ODVM: query your footage without re-seeing it

On-device video memory: sample, observe, index, query. A four-stage spine that makes footage searchable by what happened, not what was said.

8 parts / Hover to explore. Click to read.

On-device video memory: sample, observe, index, query. A four-stage spine that makes footage searchable by what happened, not what was said.

Footage -> sample -> observe
                      |
             versioned sidecars
                      | rebuild
                 search index
                      | query
             ranked time spans
                      | verify
                    footage
Queries reuse saved visual observations rather than re-running vision each time; query embedding may still be needed. The sidecars rebuild the index, while the footage remains the evidence for important claims.
A horizontal pipeline showing sample, observe, index, query
Sample, observe, index, query. Reuse saved observations when you search.

Find the bit nobody described

I used to find footage by its filename. Transcript search helped, but only when someone had said the thing I was looking for.

The red jacket walking left. A quiet screen in the middle of a stream. Something the chat scrolled past. Those are visual events. A transcript cannot give you a line that nobody spoke.

ODVM adds a second memory beside the transcript: observations of what the pictures show, tied to the same timeline. Keep both. Speech and pictures answer different questions.

Two timelines of the same clip: one with spoken moments indexed, one with visual beats indexed too
Speech and visual observations cover different parts of the same clip. Neither captures everything.

This is the August 2026 account of ODVM v0.1.0-rc1. In that setup, the models ran on my hardware and the footage stayed local. The candidate was there to prove the plumbing before making grand claims about understanding. That account is not a fresh audit of the downloadable package or its configuration.

Spend the sampling budget where things change

At 24 frames a second, captioning every frame means repeatedly paying attention to almost the same picture.

Start with three signals. A scene cut anchors a keyframe. Motion increases the sampling around activity. A minimum sampling rate gives static stretches some coverage too. A short quiet clip may need a handful of keyframes; a busy minute needs more.

You are choosing what the model gets to see. Spend too little and an event may fall between samples. More samples add work; they do not guarantee a correct description.

A clip timeline with keyframes clustering around motion and scene cuts, sparse elsewhere
Cuts anchor the samples. Motion adds detail. A floor covers quieter stretches.
sampling density

Illustrative 60-second timeline. Drag the sampling budget from sparse to dense.

sparsedense
0:000:301:00
cut motion floor
24 keyframes: 6 cuts, 12 motion, 6 floor
Cuts anchor. Motion densifies. The floor catches the rest.

The slider uses a made-up 60-second timeline and hand-set sampling rules. Drag it to see the trade-off. It is not analysing a video in your browser.

Observe, save, reuse

Observe describes the sampled keyframes with a local vision model. It writes those observations into versioned sidecar files beside the project, recording which model produced them.

The useful meaning of observe once is that ordinary queries reuse those files. It does not mean a clip can never be observed again. If you deliberately change the model, new observations can sit alongside the old version instead of silently replacing its history.

Audio belongs on that same timeline. The described local speech model writes utterances with start and end times, so a spoken line and a visual event can meet at the right moment. You can search either without pretending they are the same kind of evidence.

Keep the memory separate from the search layer

Sidecars are the retained observations. SQLite is the search layer: full-text search for literal matches, embeddings for differently worded queries.

The design lets odvm index rebuild that layer from the sidecars. Preserve those files and the information needed to interpret them; the index is regenerable. Keeping a model's description does not make the description true. Go back to the footage when the answer matters.

Sidecar files feeding a SQLite index with full-text search and embeddings, with a rebuild arrow
Keep the observations. Rebuild the search index from them. Check important claims against the footage.

Search without asking vision to watch again

Query searches the index and returns ranked time spans: which clip, from when to when, and which saved observations matched.

That is the saving. A question such as "when does the handheld walk-and-talk start" can reuse previous visual work. It need not run the vision model again. Semantic search may still compute a query embedding, and indexing has its own cost. No vision re-run does not mean no model work or a guaranteed price per query.

For an agent, odvm pack is the described route to a sized context bundle: text chunks with times it can cite, rather than an entire recording pushed into its context.

A query entering the index and returning ranked time spans, with the vision model outside the query path
Search saved observations. The illustrated ranking scores are examples, not measured confidence.
query playground

Seven hand-written moments from an illustrative 60-second clip. Scores show keyword overlap, not confidence.

Type a query, or pick one of the chips.

Example lookup only. No video or model runs here.

This playground searches seven hand-written moments and shows up to three matches. The percentage is keyword overlap with your query, not a probability that the event happened. Use it to understand the lookup, then judge a real system on real clips.

The model is replaceable. The memory you build is the asset.

The release candidate

The August release was described as a working CLI, ODVM v0.1.0-rc1. Its four-command path was:

odvm sample  --project myproject --asset clip.mp4 --job edit_shoot
odvm observe --project myproject
odvm index   --project myproject
odvm query   --project myproject "the red jacket walks left"

Two job profiles shared the schema and pipeline. edit_shoot gave visual ranking more weight for takes and plates. stream_personal favoured transcripts for long recordings while still indexing silent visual events. The profile changed defaults, not the four-stage contract.

The release account also described a gold-query harness: change a prompt pack or ranking weight, run the reference queries again and compare recall. That is a check on a defined set of examples, not a certificate that the system understands all footage.

↓ODVM v0.1.0-rc1 (ARCHITECT and above)

The site catalogue still lists the member package for ARCHITECT and above. The package itself has not been verified in this rebuild. If you have access to the candidate, test it on footage you know and report the misses. That is useful release-candidate feedback.

Try the shape on your own work

Choose the moments worth observing. Save the observations with their model version and times. Build a search layer you can reconstruct. Reuse the expensive visual work when a new question arrives.

Then check what your search missed. A memory is useful because you can return to its evidence, not because the word memory makes it reliable.

For the related taste problem, read A second brain for taste, not for notes.

Local first. Query without re-seeing. Keep the files that make that possible.

[ comments ]

guests welcome. members show first in the list

no comments yet. start the thread_

1 / 10