Building a multi-model video search tool on a 1 GB VPS
2026-11-09 · Karl Wang
This site runs on a 2-core / 1 GB Debian VPS. There is no GPU and no local inference; every model call goes to a vendor API. The whole stack is FastAPI + SQLite, one worker, jobs processed in order. That is a deliberate choice: on 1 GB of RAM, a sequential queue is a feature, not a limitation.
Four models, one result format
Every provider returns the same shape — search result (found / start / end / confidence), a one-sentence description, token counts and latency — so the same clip can be compared across models. The uploads page lets you switch models, and a finished job can be re-tested with a different model without re-uploading.
The integrations are not all equal, and that is worth stating plainly:
- Muse (Meta Model API) and Gemini (Google Gemini Developer API) accept native video files. The clip is uploaded to the vendor and referenced by ID.
- Qwen (Alibaba Cloud Model Studio) also takes native video, via a
video_urlpart: small clips go as Base64, larger ones via a temporary upload to the vendor's storage. - Grok (xAI API) does not publish a native video input for chat models, so this site sends it one frame per second as images. Timing is per-second, there is no audio, and the frames are sent twice per job — so token use is higher. If xAI documents native video later, that client can be swapped without touching the rest.
Boring parts that matter
- Accounts: email + password, bcrypt hashing. New registrations require a written reason and admin approval; rejected applicants can re-apply.
- Per-user model permissions: the admin can enable or disable each model per user, so expensive models can be limited to the people who need them.
- No auto-delete: videos are only deleted by hand — by their owner, or by the admin.
- No transcoding: the server only checks the MP4 header and the duration with ffprobe. Clips must be under 60 seconds and 100 MB.
The point of the tool is not the stack. It is that a claim like "our AI finds anything in your footage" can be tested on your own clip, with your own question, in about a minute — and the answer is a timestamp you can check, not a demo reel.