All plugins

hermes-osint-map

A live situational-awareness globe in Hermes Desktop: earthquakes (USGS), disaster alerts (GDACS), natural events (NASA EONET), US severe weather (NWS), military and nearby aircraft (adsb.lol), satellites propagated live from CelesTrak elements, GDELT news incidents, official traffic cameras (Transport for London, Singapore LTA) and shipping chokepoints on a dithered 3D globe, with satellite orbits, aircraft tracks and live camera stills, country dossiers (World Bank facts, events, headlines), NOAA space weather, markets, a feed of events, headlines and alerts, and a passive recon toolkit (DNS, RDAP, TLS, security headers, CT subdomains, CVE with CISA KEV, IP, GitHub, MAC). Five agent tools (osint_situation, osint_events, osint_country, osint_recon, osint_news) answer from the same sources in any chat, and the page's Brief me, Ask Hermes and dossier buttons open a chat that uses them. No keys needed; an optional TWELVEDATA_API_KEY (plugin setting, read through Hermes's secret scope) adds equities and commodities. Unofficial; not affiliated with any data provider. Disclosure — the gateway fetches public data from fixed hosts (earthquake.usgs.gov, eonet.gsfc.nasa.gov, gdacs.org, api.weather.gov, data.gdeltproject.org, api.adsb.lol, celestrak.org, services.swpc.noaa.gov, api.tfl.gov.uk and api.data.gov.sg (camera lists), and camera stills from TfL's JamCams bucket on s3-eu-west-1.amazonaws.com and images.data.gov.sg, fetched only by camera id for a camera the user opens, api.worldbank.org, the BBC, Al Jazeera, DW, Guardian and France 24 RSS feeds, api.gdeltproject.org (GDELT article search, only when a news query is given, which sends up to six words of the query), api.coingecko.com, and api.twelvedata.com with the key in a header when set), cached and only while the page is open or a tool is called, with a hermes-osint-map User-Agent; recon sends the domain, IP, CVE id, GitHub name or MAC prefix the user or agent enters to dns.google, rdap.org, crt.sh, cve.circl.lu, cisa.gov, ipwho.is, api.github.com and api.macvendors.com, and the TLS and headers lookups connect directly to the host named, refusing private, loopback, link-local, CGNAT and other internal addresses on every redirect, on ports 443/8443 (TLS) and 80/443/8080/8443 (headers) only; GDELT incidents are machine-coded from news coverage and labelled as such, incident titles are read from the article URL, and country-centroid locations are flagged as country-level; the page keeps its layer choices in Desktop plugin storage; no files written, no shell commands, no background processes, no telemetry.

Adolanium28Desktopv0.3.0Updated 3 days ago

About

A live situational-awareness globe in Hermes Desktop: earthquakes (USGS), disaster alerts (GDACS), natural events (NASA EONET), US severe weather (NWS), military and nearby aircraft (adsb.lol), satellites propagated live from CelesTrak elements, GDELT news incidents, official traffic cameras (Transport for London, Singapore LTA) and shipping chokepoints on a dithered 3D globe, with satellite orbits, aircraft tracks and live camera stills, country dossiers (World Bank facts, events, headlines), NOAA space weather, markets, a feed of events, headlines and alerts, and a passive recon toolkit (DNS, RDAP, TLS, security headers, CT subdomains, CVE with CISA KEV, IP, GitHub, MAC). Five agent tools (osint_situation, osint_events, osint_country, osint_recon, osint_news) answer from the same sources in any chat, and the page's Brief me, Ask Hermes and dossier buttons open a chat that uses them. No keys needed; an optional TWELVEDATA_API_KEY (plugin setting, read through Hermes's secret scope) adds equities and commodities. Unofficial; not affiliated with any data provider. Disclosure — the gateway fetches public data from fixed hosts (earthquake.usgs.gov, eonet.gsfc.nasa.gov, gdacs.org, api.weather.gov, data.gdeltproject.org, api.adsb.lol, celestrak.org, services.swpc.noaa.gov, api.tfl.gov.uk and api.data.gov.sg (camera lists), and camera stills from TfL's JamCams bucket on s3-eu-west-1.amazonaws.com and images.data.gov.sg, fetched only by camera id for a camera the user opens, api.worldbank.org, the BBC, Al Jazeera, DW, Guardian and France 24 RSS feeds, api.gdeltproject.org (GDELT article search, only when a news query is given, which sends up to six words of the query), api.coingecko.com, and api.twelvedata.com with the key in a header when set), cached and only while the page is open or a tool is called, with a hermes-osint-map User-Agent; recon sends the domain, IP, CVE id, GitHub name or MAC prefix the user or agent enters to dns.google, rdap.org, crt.sh, cve.circl.lu, cisa.gov, ipwho.is, api.github.com and api.macvendors.com, and the TLS and headers lookups connect directly to the host named, refusing private, loopback, link-local, CGNAT and other internal addresses on every redirect, on ports 443/8443 (TLS) and 80/443/8080/8443 (headers) only; GDELT incidents are machine-coded from news coverage and labelled as such, incident titles are read from the article URL, and country-centroid locations are flagged as country-level; the page keeps its layer choices in Desktop plugin storage; no files written, no shell commands, no background processes, no telemetry.

Hermes OSINT Map

The world's live signals on one globe, and an agent that can brief you on them.

Earthquakes, disaster alerts, natural events, severe weather, aircraft, satellites, news-derived incidents, traffic cameras and shipping chokepoints on a dithered 3D globe inside Hermes Desktop.
Country dossiers, a passive recon toolkit, and briefings Hermes writes from the same public sources.

POWERED BY HERMES AGENT  ·  COMMUNITY PLUGIN  ·  VERSION 0.3.0

What it does  ·  Install it  ·  Where your data goes

A marble Hermes watches a dithered globe of event markers, an orbiting satellite and a dossier window

Powered by Hermes

Hermes OSINT Map is a community plugin for Hermes Agent with two halves in one package:

  • A Desktop page. A full-screen globe, built on the Desktop plugin SDK, with a sidebar entry and palette commands.
  • Five agent tools. They answer from the same sources in any chat: the CLI, Hermes Desktop, the messaging gateway, cron jobs and subagents.

Every source is public and needs no account. The page's "Brief me", "Ask Hermes" and dossier buttons open a chat with a structured request, and Hermes answers with these tools.

OSINT Map in Hermes Desktop

One globe, every signal

| Layer | Shape | Source | Refresh |
| --- | --- | --- | --- |
| Earthquakes | ● circle | USGS (M2.5+ last day, M4.5+ last week) | 1 min |
| Disaster alerts | ◆ diamond | GDACS | 10 min |
| Natural events | ▲ triangle | NASA EONET (observed in the last 30 days) | 10 min |
| Severe weather (US) | ■ square | National Weather Service | 5 min |
| News incidents | ⬢ hexagon | GDELT events, last 3 hours | 15 min |
| Aircraft | ➤ dart | adsb.lol: military worldwide, all traffic near the view when zoomed in | 15 s |
| Satellites | ✚ plus | CelesTrak elements, positions computed live (SGP4) | 1 s |
| Traffic cameras | ▢ frame | Transport for London JamCams and Singapore LTA (data.gov.sg), official open data | stills every minute |
| Chokepoints | ○ ring | Curated straits and canals | static |

| | |
| --- | --- |
| Follow what movesClick a satellite to draw its next orbit, an aircraft to see the track it flew while you watched, or a traffic camera for its latest still. | Drill into a countryA dossier with World Bank facts, everything on the map there, and recent headlines. |
| Read the roomNOAA space weather, markets, a layer-health panel, and a feed of events, world headlines and alerts. | Look things upDNS, RDAP/WHOIS, TLS certificates, security headers, CT subdomains, CVEs with CISA KEV status, IP, GitHub and MAC lookups. |

| Satellite tracking | Country dossier |
| --- | --- |
| The ISS with its orbit | Japan's dossier with nearby traffic |

| Aircraft | Recon |
| --- | --- |
| A flight over Europe | A CVE lookup |

Tools for the agent

| Tool | Answers |
| --- | --- |
| osint_situation | what's happening right now across every layer, plus Kp and top headlines |
| osint_events | events by layer, country, or a point and radius |
| osint_country | a country's facts, current events and headlines |
| osint_recon | any recon lookup |
| osint_news | headline search |

When a query is given, osint_news also calls the GDELT 2.0 article-search API (api.gdeltproject.org/api/v2/doc/doc, no key, 10-minute cache) so local and specialist stories appear, not just the five world services.

Small decisions, already made

  • Layers never depend on colour alone: each has its own shape, and every colour comes from your Hermes theme.
  • Older events fade into the background instead of vanishing, and new ones pulse once as they arrive.
  • Each source is fetched once per refresh for every window and agent call, through a shared cache.
  • A source that fails keeps serving its last good data, marked stale, and is left alone for a while before the next try.
  • adsb.lol requests are spaced out and retried once after a rate limit.
  • Headline search matches every word in any order.
  • Traffic cameras come only from official open-data feeds. They cluster into one marker per city until you zoom in, and a camera's still is fetched by its id from the operator's own image host, never from an address the page supplies.
  • Recon lookups that connect to a host refuse private, loopback, link-local and other internal addresses, before and after redirects.
  • News incidents are machine-coded from news coverage. The page and the tools say so; they show where reporting is, not verified events. Their titles come from the source article's URL slug when one is readable, and fall back to the place name when it is not.
  • The page stops all polling and rendering when you leave it or the window is hidden. It respects reduced motion and works in split tiles.

Make it yours

Install

hermes plugins install Adolanium/hermes-osint-map

Then, in Hermes Desktop, open Capabilities → Plugins → OSINT Map and turn on both Agent in Hermes (the backend and tools) and Desktop (the page). Open OSINT Map from the sidebar or the ⌘K/Ctrl+K palette.

Hermes OSINT Map needs Hermes Agent 0.22.2 or later.

Add markets (optional)

The markets panel shows crypto out of the box. Add a free Twelve Data key as TWELVEDATA_API_KEY in the plugin's settings to add defense stocks, energy, metals and the S&P 500. The plugin reads it only through Hermes's secret scope, so each profile keeps its own key.

Keys

1–9 toggle layers, / opens recon, R resets the view, A toggles spin, D toggles dithering, arrows rotate, +/- zoom, Esc closes a panel.

Test

python -m pytest            # parsers, caches, recon guard, routes, tools (no network)
python scripts/smoke.py     # every route against the real sources
cd desktop-src && npm ci && npm test && npm run build

Check the plugin the same way the catalog does:

hermes plugins validate . --install-deps

Privacy you can explain in one breath

Hermes gateway  →  public data sources (fixed hosts, cached)  →  the globe, panels and tools
                →  recon: the one host or name you look up    →  the result card
  • What leaves your machine. Requests to the public sources below, identified as hermes-osint-map. Recon lookups send the domain, IP, CVE, GitHub name or MAC prefix you enter to the matching public service. TLS and header lookups connect to the host you name.
  • Who it talks to. USGS, NASA EONET, GDACS, the National Weather Service, GDELT, adsb.lol, CelesTrak, NOAA SWPC, Transport for London (api.tfl.gov.uk and its JamCams image bucket), data.gov.sg (Singapore traffic images), the World Bank, the BBC/Al Jazeera/DW/Guardian/France 24 RSS feeds, CoinGecko, and Twelve Data if you add a key. Recon uses Google Public DNS, rdap.org, crt.sh, CIRCL CVE, CISA KEV, ipwho.is, GitHub and MacVendors. Only the first three octets of a MAC address are sent.
  • Your key. The optional Twelve Data key is sent to Twelve Data in a request header, never in a URL, and never logged or echoed in errors.
  • Nothing else. No files written, no shell commands, no background processes, no telemetry. The page remembers your layer choices in Hermes Desktop's plugin storage.

Compatibility

| Hermes Agent | Python | Status |
| --- | --- | --- |
| 0.22.5 | 3.14 | Tested by hand in Hermes Desktop (0.1.0, 0.3.0) and in a browser preview of the page (0.2.0) |
| 0.22.2 (minimum) | 3.11+ | SDK surface checked |

The plugin depends only on httpx and fastapi, which Hermes already ships.

Limits

  • Aircraft come from volunteer ADS-B receivers: coverage is thin over oceans and some regions, and military traffic only shows when it broadcasts.
  • Severe weather covers the United States only (NWS). Alerts without a mapped area are skipped.
  • Traffic cameras cover London and Singapore for now. Both publish stills, not live video, refreshed every minute or so.
  • GDELT incidents are machine-coded from news. Locations are often a city or country centroid, and labels like "Fight" describe the coverage, not a verified event. Titles echo the article's own headline when its URL slug is readable, and the place name when it is not.
  • crt.sh, behind subdomain lookups, is often slow or down. Those lookups then fail with a clear error.
  • Without a Twelve Data key, the markets panel shows crypto only.

Data and credits

Earthquakes: USGS (public domain). Natural events: NASA EONET (public domain). Disaster alerts: GDACS. Severe weather: National Weather Service (public domain). Incidents: The GDELT Project. Aircraft: adsb.lol (ODbL). Satellites: CelesTrak. Traffic cameras: Powered by TfL Open Data (contains OS data © Crown copyright and database rights); Singapore traffic images from data.gov.sg under the Singapore Open Data Licence v1.0. Space weather: NOAA SWPC (public domain). Country facts: World Bank (CC BY 4.0). Headlines: links and titles from public RSS feeds, plus the GDELT 2.0 article search when a query is given. Borders: Natural Earth (public domain). Rendering: three.js (MIT); orbits: satellite.js (MIT).

License

MIT.

Community project

Hermes OSINT Map is an independent community plugin. It is not affiliated with, endorsed by, sponsored by, or officially associated with Nous Research, the Hermes Agent project, or any of the data providers listed above. Hermes, Hermes Agent and Nous Research are names and marks belonging to their respective owners.

README from the reviewed commit 8254b9e; it updates when the author re-pins.

More by Adolanium

25 plugins by Adolanium in the catalog.

AdolaniumgadgetTalk to your Hermes from small ESP32 devices with a screen, microphone and speaker: hold a button, ask, and hear the answer. Adds a gateway platform where each device is a chat, plus tools to list devices, show a card on a screen and run device actions (LEDs, relays). Disclosure — the gateway listens for devices on a WebSocket port (8765, all interfaces by default; plain ws:// unless tls_cert/tls_key are set). New devices need a Hermes pairing code unless listed in GADGET_ALLOWED_USERS; GADGET_ALLOW_ALL_USERS skips pairing (development only). A paired device answers the agent's command approvals for its own chat (allow once or deny), within Hermes's approval timeout. The first approved device becomes the platform's home channel by default. Session hooks feed a dashboard on paired devices with each agent session's platform, a short id and its state (idle, busy, waiting for approval); a device that can switch profiles also sees the offered profiles' sessions. Optional profile switching (off unless `profiles` is set in the default profile's gadget config) lets a device paired on the default profile talk to the listed profiles; each profile approves the device through its own pairing flow (the device shows the `hermes -p <profile> pairing approve` command), the plugin writes nothing into other profiles, and revoking the device in the default profile sends it back there. A paired gadget that draws faces gets the answering profile's face: its `gadget-face.bin`, or its Hermes avatar (`assets/avatar.*`) converted with Pillow when installed; the plugin only reads these files, and `profile_faces: false` turns this off. `platforms.gadget.extra.stt_language` sets the transcription language of gadget recordings through the `pre_transcription` hook; other platforms' audio is untouched. Spoken replies that are not WAV are converted with the local ffmpeg; Opus reply audio uses the host's libopus when installed (loaded with ctypes, not bundled). `hermes gadget update --latest` downloads firmware from this repository's GitHub releases, checks size and SHA-256 against the release manifest (files carry build provenance attestations) and sends it to the device. A device that advertises `camera.capture` returns stills that are saved as PNGs under `~/.hermes/gadgetpix/` and kept until removed by hand. A Hermes Desktop page (`desktop/plugin.js`, plugin SDK only) runs a gadget in the window that connects to the local gateway as a device of its own: its device key, and the gateway access token when one is required, are kept in the page's plugin storage, it pairs like any device, and it uses the microphone only while its talk button or Space is held. The plugin's dashboard routes, behind the dashboard's login, can approve the pairing code a device is showing and send a card or run an advertised action on a connected, paired device; the requests pass through files under plugin-data/gadget/desk/. Otherwise writes only under plugin-data/gadget/. Uses Hermes's own STT, TTS and image cache; no telemetry. Independent community project, not affiliated with Nous Research.Communityplatform518Adolaniumhermes-resetwatchTrack subscription quotas and reset times in Hermes Desktop. Disclosure — probe.py re-executes itself under the Hermes Python interpreter located via HERMES_PYTHON / VIRTUAL_ENV / the parent process or the Hermes installer's managed venv (HERMES_HOME/installs). Every credential read is read-only and nothing is refreshed or stored: it reads provider API keys from the process environment, the Hermes .env (through Hermes's get_secret helper, else read directly), the Vaultwarden plugin's local secret cache (cache/vaultwarden_cache.json, only when Vaultwarden is the sole enabled secret source, keyed by a hash of BW_SESSION, which is never sent) and Docker s6 container env files; Hermes's saved OAuth logins (the credential pool through Hermes's read_credential_pool helper, else auth.json directly, and HERMES_HOME/.anthropic_oauth.json); and other coding-assistant CLIs' local logins: Claude Code (credentials file, macOS keychain or Windows Credential Manager), Codex, Cursor (macOS keychain and the IDE's state.vscdb, opened read-only), Kimi, Grok, ZCode and Command Code. For GitHub Copilot (on by default) it tries COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN (through Hermes get_secret, else the process environment), then the Copilot editor's apps.json / hosts.json, then runs gh auth token (prompts disabled, 3-second limit), trying each token in turn until GitHub accepts one. For Codex, a 401 or 403 is retried once with another saved login for the same account. It sends each key only to its own vendor's usage endpoint, presenting the vendor client's identity headers where a private endpoint expects them (Claude Code and Codex CLI user agents, the Grok CLI client headers, and for Copilot the VS Code / Copilot Chat editor headers on api.github.com/copilot_internal/user, which GitHub does not document); environment variables such as GROK_CLI_CHAT_PROXY_BASE_URL (honored only for https grok.com / x.ai hosts), CLAUDE_CONFIG_DIR, CODEX_HOME and GROK_HOME change which host or file it uses. Usage results are cached under HERMES_HOME/cache/resetwatch, never tokens. It exposes nothing to the model: it is a Desktop page only.CommunityDesktop app83Adolaniumhermes-rssRead RSS and Atom feeds and discuss articles in Hermes Desktop. Disclosure — feeds and full articles are fetched with curl through the gateway's shell.exec on the connected Hermes host (public-IPv4 SSRF guard); opt-in AI grading sends article excerpts to your configured model and creates HERMES_HOME/skills/rss-importance-grading/SKILL.md if missing; opt-in image loading fetches publisher images directly from Desktop.CommunityDesktop app65Adolaniumhermes-tailscaleBrowse Tailscale devices and connect to remote Hermes instances in Hermes Desktop.CommunityDesktop app60

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section