Vigía puts what is happening in Venezuela right now on one screen: the dollar (the official rate and named parallel-market quotes), earthquakes, fires, weather, internet and power outages by state, censorship, airspace notices, live TV, radio and public cameras, and the news from more than 200 Venezuelan and international outlets, on one map, in Spanish first, fast on a cheap phone. Every figure shows its source, its licence, and its age. Nothing is invented, and nothing in the core is written by an AI.
Status: 1.0. The core runs with no keys and no account anywhere. See the changelog for what is in each release.
- Features · Principles · Quick start · Keys
- Architecture · Adapters · Data sources
- Roadmap
- Contributing · Licence
- Money and oil. The BCV official rate, its history and inflation; parallel-market quotes from named publishers, side by side with the official rate and the gap computed in code; oil prices; gas flaring at named refineries and fields seen from orbit.
- Internet and power. Connectivity by state and by ISP from independent measurement networks, censorship measurements with a per-site blocking timeline and a "¿Está bloqueado?" lookup, Tor usage, and night-time lights from NASA's Black Marble.
- Earth. Earthquakes (USGS and FUNVISIS), fires, weather by state, disasters, tropical storms, and GOES satellite imagery on the map.
- News. Dozens of outlets, each with its stance labelled, located to a state and municipality by a gazetteer, and grouped into stories across outlets.
- A workstation. Ten modules, one key each (Situación, Dinero, Internet, En vivo…), an inspector that explains any place you select, an event log, and a time slider that replays the stored history.
- A page for every place. Every state, municipality and parish, and more than a thousand facilities (hospitals, substations, power plants, dams, airports, refineries, ports), plus outlets, networks and institutions: each page gathers that place's signals with their source, basis and age.
- Live TV, radio and cameras. Whether each channel and station is on air, measured by Vigía, with a dated frame from the channels and public cameras that allow it; a dead signal never looks live.
- Incidents, not guesses. An incident opens only when independent sensor families agree within a time window; the rule is shown in the UI. Never a probability.
- Verifiable history. Every observation is archived. Each day is sealed into a SHA-256 hash chain, and a panel's
figures can be saved as an evidence bundle that
vigia verifychecks offline (docs/EVIDENCIA.md). - Works everywhere. One file for Windows, macOS and Linux; phone first; light and dark; keyboard accessible;
curl localhost:7722prints the situation as plain text. - Optional AI section. A bundled local classifier (free, offline) with its measured accuracy shown next to it, and optional backends that stay within a budget you set (docs/AI.md).
- Source and age on every figure. Tap any number to see who published it, when it was valid, when Vigía fetched it, its licence, and a link to the original.
- Stale is labelled stale. Every source has a freshness budget. The status page (
/estado) shows each one's health; if a source goes down you keep seeing the last good value with its real age, never as live. - Numbers are code. Rates, gaps, counts, baselines and changes are computed by tested, deterministic code, never by a model. Models may only classify, cluster and summarise, labelled as AI and linked to their sources.
- Named quotes, not a house number. Parallel-market quotes carry the name of whoever published them. Contested figures are shown side by side, never blended.
- Events and places, not people. No names, faces or handles of private individuals; outages are "signal drops" and "reports", not accusations. See docs/ETHICS.md.
- Your machine, your keys. No account, no telemetry, no hosted backend. Keys stay on your computer and are only ever sent to the service they belong to.
Download the archive for your system from the releases page,
extract it and run vigia (sizes for 0.1.0):
| System | Download | Run |
|---|---|---|
| Windows | vigia-<version>-windows-x64.zip (44 MB) |
"Extract All", then double-click vigia.exe |
| macOS | vigia-<version>-darwin-arm64.tar.xz (Apple silicon, 20 MB) or -darwin-x64.tar.xz (Intel, 24 MB) |
tar -xf vigia-*-darwin-*.tar.xz && ./vigia-*-darwin-*/vigia |
| Linux | vigia-<version>-linux-x64.tar.xz (31 MB) or -linux-arm64.tar.xz (29 MB) |
tar -xf vigia-*-linux-*.tar.xz && ./vigia-*-linux-*/vigia |
Uncompressed single files (73 to 97 MB) are published too.
The files are not signed yet: macOS asks you to allow it once (System Settings → Privacy & Security → "Open
Anyway"), and Windows SmartScreen asks too ("More info" → "Run anyway"). Each release publishes SHA256SUMS;
docs/SETUP.md shows how to check your download.
Vigía opens http://localhost:7722. With no keys at all, earthquakes, news, rates, connectivity and weather start
filling in within a minute or two.
Have an AI coding agent? Paste the prompt in docs/AGENT-SETUP.md into it (Claude Code or
any agent that runs terminal commands): it downloads the right archive, checks it against SHA256SUMS, runs it and
opens the settings link, and never asks for your keys in the chat (they go in /guia).
With Bun 1.4 or newer, on Linux, macOS or Windows:
git clone https://github.com/elberacasa/vigia.git
cd vigia
bun install
bun run build:web
bun startvigia --port 8080 another port
vigia --host 0.0.0.0 let phones on your network open it (settings stay changeable only from this computer)
vigia sources list every source and whether it needs a key
vigia fetch usgs-quakes query one source once and print what came back
vigia status print the current situation from a running Vigía
vigia verify check that the sealed archive has not changed
vigia paths where settings, keys and data are stored
vigia enlace print and open again the link that lets this browser change settings
vigia telegram add @name add a public Telegram channel to "Mis fuentes" (also in Personalizar › Mis fuentes)
vigia ia conectar let your own Claude Code write the daily brief (vigia ia estado, vigia ia desconectar)
vigia --version print the version
The full guide, including data locations, other devices and troubleshooting, is docs/SETUP.md.
Vigía works with no keys and no payment method. The setup guide at /guia explains each optional key, links to
its sign-up page, and checks it live before saving it on your machine.
| Key | Cost | Adds |
|---|---|---|
| NASA FIRMS | free, no card | fire detections queried for Venezuela only (far less data than the keyless file) |
| DAHITI | free, no card (non-commercial use) | the Guri reservoir level from satellite altimetry |
| TypeSafe (Jev) | paid per use, within your budget | the most accurate news classification in the AI section |
| Anthropic | paid per use, within your budget | a written daily brief with checked citations, on request |
Paid keys only act within a budget you set; with no budget, Vigía makes no paid request.
One Bun process polls public sources through adapters, stores every observation in SQLite with its history, computes each panel in tested code, and serves a small Preact client over HTTP and server-sent events.
flowchart LR
SRC[Public sources] --> HTTP[HttpClient<br/>identity, retries,<br/>per-host pace]
HTTP --> AD[Adapters<br/>fetch + validate + normalise]
SCH[Scheduler<br/>intervals, circuit breakers] --> AD
AD --> DB[(SQLite<br/>observations + history)]
DB --> PN[Panels<br/>deterministic compute]
DB --> IN[Incidents and<br/>sealed daily archive]
DB -.-> AI[AI section<br/>optional]
PN --> API[HTTP API + SSE<br/>rate limits, write guard]
IN --> API
AI -.-> API
API --> UI[Preact client<br/>phone first]
The core never depends on the AI section. Details, including the security model, are in docs/ARCHITECTURE.md; performance is measured in docs/PERF.md.
| Path | What |
|---|---|
src/adapters/ |
one directory per source, plus the registry |
src/core/ |
adapter contract, HTTP client, scheduler, breakers, store, health |
src/panels/ |
deterministic computation behind each panel |
src/intel/ |
incidents, sealed archive, evidence bundles, terminal output |
src/server/ |
HTTP API, live stream, static client |
src/ai/ |
optional AI section: interfaces, local model, ledgered clients |
web/ |
the Preact client |
scripts/ |
builds, fixtures, performance, generated docs |
Every feed is an adapter with the same contract (src/core/types.ts):
fetch(ctx): network only, through the shared HTTP client (identity, timeouts, retries with backoff, the source's rate limit). Keys come from the key store and never appear in logs or links.normalise(raw): pure. Validates the response at the boundary (Zod) and returns typed observations{ source, series, sourceUrl, observedAt, fetchedAt, licence, value, location?, confidence, basis }. A bad envelope fails the run loudly; the last good value stays on screen with its age.- Declared, not implied: licence and attribution, keys, polling interval, and a freshness budget that drives the stale badge and the status page.
- Tested against recorded fixtures (the real bytes a source sent) or, where the source's terms forbid redistributing them, synthetic ones.
- Read the source's terms and rate limits.
- Create
src/adapters/<id>/index.tsimplementingAdapter, and register it insrc/adapters/registry.ts. - Record a fixture with
bun scripts/record-fixture.ts <id>and write the tests. - Run
bun scripts/gen-docs.tsto update the source catalogue, thenbun run check.
The step-by-step guide and checklist are in docs/ADAPTERS.md.
Vigía reads 368 sources; 359 of them work with no key at all. The full catalogue, with publisher, refresh interval, access and licence for each, is generated from the adapter registry into docs/DATA-SOURCES.md.
| Layer | Sources | Publishers |
|---|---|---|
| Money and prices | 16 | Banco Central de Venezuela, BCV (vía bcv-api), Yadio, Binance, Bybit, U.S. EIA y Reserva Federal vía FRED, and 5 more |
| Oil and energy | 3 | U.S. EIA vía FRED, NASA FIRMS, Global Fishing Watch |
| Internet and power | 13 | IODA, Georgia Tech Internet Intelligence Lab, RIPE NCC, RIPE NCC (RIPEstat), RIPE NCC (RIPEstat, RIS), NASA GIBS / Black Marble, OONI, and 4 more |
| Earth and weather | 12 | USGS, FUNVISIS, NOAA/NESDIS/STAR, NOAA/NESDIS (GOES-19, AWS Open Data), Open-Meteo, NASA FIRMS, and 6 more |
| Society and attention | 19 | Polymarket, Kalshi, EASA, FAA, adsb.lol, Imprenta Nacional (Gaceta Oficial), and 12 more |
| News | 305 | YouTube (páginas públicas de cada canal), medido por Vigía, Emisoras (sus propios servidores), medido por Vigía, iptv-org (lista pública de señales), Cada televisora (sus servidores), medido por Vigía, Cada televisora (su señal pública), cuadro tomado por Vigía, iptv-org (lista pública de logos); cada logo es de su canal, and 234 more |
Data belongs to its publishers under their own terms, shown with every figure and on the sources page
(/fuentes). Sources whose terms do not allow redistribution are only used for figures Vigía derives from them,
with attribution. Bundled data and libraries are listed in NOTICE.
- Laya: today the optional AI news layer uses Jev (TypeSafe) with your own key, plus an experimental local model. If Vigía finds enough users to maintain and develop it, the plan is to train Laya, a model of our own that is free for everyone and runs offline.
- Ideas are proposed and voted in Discussions › Ideas; the most-voted get built first.
Contributions are welcome: new sources, fixes to broken feeds, translations, performance, accessibility. Start with
CONTRIBUTING.md; the one command that must pass is bun run check. Please report security issues
privately (SECURITY.md), and follow the Code of Conduct.
Contact: questions and ideas in GitHub Discussions, bugs and broken feeds in issues, or the maintainer on X, @elberacasa. Security reports stay private (SECURITY.md).
Copyright © 2026 elberacasa.
Vigía is source-available, not open source: it is licensed under the PolyForm Noncommercial License 1.0.0. In plain words:
- You may read, run, modify and share it for any non-commercial purpose: personal study, research and hobby projects, and use by charities, schools, public research, public safety and health organisations, and government institutions.
- You may not sell it, sell access to it, or use it in a commercial product or paid service. Commercial use needs a separate licence from the copyright holder.
- If you share it, pass on the licence and its
Required Noticeline.
This summary is not the licence; LICENSE is. Third-party libraries, bundled data and fonts keep their own licences (NOTICE), and data fetched at run time belongs to its publishers.



