“Awareness is power.”
Baltic Sonar is an experimental, fully automated open-source situational-awareness index for the Baltic region — Estonia, Latvia, Lithuania, the Baltic Sea, Kaliningrad, Belarus and adjacent areas. It reads public reporting and open sensors around the clock, grades every signal by the credibility of its source, and publishes a single continuously-updated picture. No human curates the output.
Every source carries a credibility class. This is the backbone of the whole system: a single social-media post can never, on its own, raise the threat level — but the same claim confirmed by an official body or a sensor does. Each event on the dashboard shows exactly which classes reported it.
| Class | What it is | Sources now | Can raise threat alone? |
|---|---|---|---|
| A | Official / primary — governments, ministries of defence, CERTs, NATO, EU, and our own measured sensors | 27 | yes |
| B | Trusted independent — established public broadcasters and major dailies (LSM, ERR, LRT, Yle, SVT, Postimees, Delfi…) | 25 | yes |
| C | Specialist / OSINT — think-tanks and investigative outlets (ICDS, OSW, CEPA, Bellingcat, DFRLab, Re:Baltica, EUvsDisinfo) | 20 | yes |
| D | Social / local — community and local channels. A signal, not a fact. | 0 — none registered | no — needs corroboration |
| E | Unverified aggregator — topical news-search results of unknown origin; the classifier filters them | 0 — none registered | no — needs corroboration |
| P | Adversary / propaganda — RU/BY state media. Would be tracked for narrative only; never contributes to the threat level. | 0 — none registered | never |
Currently 72 sources, in the classes shown above. Classes with a zero are rules the pipeline implements but no feed currently occupies — we describe the whole ladder rather than hide the empty rungs, so nothing here should be read as a claim that we are reading social channels or adversary media today. Corroboration counts independent editorial groups, not articles: one media group publishing in three languages is one confirmation, not three. For Estonia and Latvia that promise currently has a limit worth stating: fewer than two independent news organisations from those countries are on our source list, so corroboration there can come only from official and public-broadcaster feeds, and a low corroborated share reflects our source list rather than the events themselves.
Conflating "how much is being reported" with "how dangerous it is" is the most common failure of news dashboards. We keep them apart:
Not a mention count. Each incident gets an EventRisk = severity × credibility × relevance × proximity × abnormality × intent, decayed over 48 hours. Credibility folds in source class, evidence type (FACT vs CLAIM), corroboration and whether it was directly measured. Category scores combine peak severity, saturating evidence mass, trend, persistence and cross-source breadth. The overall Baltic Threat Index is a weighted blend across 14 domains, with a convergence bonus only when elevated domains actually coincide in one cluster — never because several categories are independently noisy. Click the threat number on the dashboard to see the full per-domain breakdown in points.
Sensor events are marked measured and shown as class A. The live count of measurement families
on the dashboard is defined as those with at least one observation in the last 48 hours; each one, with its row
counts and last reading, is listed on the sources page.
These guards exist specifically so the numbers cannot mislead a serious reader:
date_basis, and the dashboard leaves undated incidents off the timeline instead of stacking them on today.Every classification, brief, narrative and translation is produced by a Qwen-class model running on our own hardware via Ollama — a single Mac Studio M3 Ultra, 256 GB unified memory. No cloud AI, no per-token bills, no data leaving the pipeline. Semantic search uses a local multilingual embedding model (bge-m3) and works across all seven interface languages.
Collection and analysis run on private infrastructure. The public server you are reading only ever receives a one-way push of a static snapshot — it holds no database, no credentials, and no path back into the pipeline. There is nothing on it worth attacking. The single live endpoint is the tiny search-embedding service, which sees your query text and nothing else. No third-party trackers. The web server keeps a standard access log (IP address, request, browser string) for 14 days, as any web server does; the visitor statistics are computed from a salted hash of it, and the published counts contain neither the address nor the hash.
Baltic Sonar is an independent, self-funded experiment by Andris Gailītis — gailitis.ceo. It is not operated by, funded by, or affiliated with any government, military, alliance, political organisation or employer. Everything is built and hosted privately, and the pipeline runs on the author's own hardware. Engineering and design were done with the help of Claude (Anthropic) as a copilot. Responsible-disclosure contact: security.txt.
Contact & feedback via gailitis.ceo.