The Hamsa Book · contents

The story

  1. 1The flood, and the videos that came after
  2. 2A triage desk, not an oracle
  3. 3One post, from a phone to a verdict

How it works

  1. 4Seeing footage before: three fingerprints
  2. 5Finding the evidence, in two languages
  3. 6Models propose, rules decide
  4. 7A memory, not a library
  5. 8Under the hood: one laptop, open models

The proof

  1. 9The numbers, and what went wrong
  2. 10What Hamsa does not do yet
← Back to Hamsa

How it works · Chapter 8

Under the hood: one laptop, open models

What runs where, and why every model is one anyone can download.

WebsiteTelegram botMessenger botChecker deskAPICase storeSQLite: cases and jobsWorkerone case at a timeNews watcherVision modelQwen3-VL-8B, on the GPUSearch and matchbge-m3, SigLIP, ORB, on the CPUVector storeQdrant: archive and newsWeb searchSearXNG, self-hostedVerdict modelgpt-oss on Groq, optional
Everything runs on one laptop with an 8 GB graphics card, started with one command. The verdict model on Groq is optional: without it, the vision model drafts and every case goes to a checker.

Open models, end to end

Every model in Hamsa is open-weight: its weights are published, and anyone can download and run it. A newsroom in Nepal has nothing to subscribe to, nothing that stops working when a foreign company changes its prices, and no reason to send someone's footage off its own machine.

JobModelWhere
Read the post and its framesQwen3-VL-8Bthe laptop's GPU
Search by meaning, find duplicatesbge-m3CPU
Match footageSigLIP 2, with pHash and ORBCPU
Draft the verdict, check fact-checks and Nepaligpt-oss-120b and 20bGroq (optional), or the local model

Built for a small machine

  • The graphics card is for the vision model only. With 8 GB of video memory, everything else runs on the processor.
  • One worker, one case at a time, from a queue in an ordinary SQLite file. If anything crashes, the case is picked up again; nothing is lost.
  • Every model answer is checked against a strict format. An answer that does not fit is retried, falls back to the local model, or goes to a person.
  • One command (docker compose up) starts the API, worker, news watcher, website and vector store.