Spider Sense logo
TOP SECRET // SI-TK // NOFORN — AUTHORIZED PERSONNEL ONLY
FILE: OP-ANANSI-757 CLASSIFICATION: SI-TK // NOFORN STATUS: ACTIVE

OPERATION ANANSI

SUBJECT: Real-Time Regional Intelligence Dashboard — Hampton Roads / Historic Triangle (757 / 804)
01 // MISSION BRIEF

Overview

Anansi is a self-hosted, real-time geospatial dashboard built for the Hampton Roads / Historic Triangle region of Virginia — a self-hosted n8n automation server handling intelligence ingestion, feeding into God's Eye View, an open-source CesiumJS 3D globe platform, so live public data — traffic, weather, local news — renders as one operational picture instead of five separate tabs.

The goal wasn't just a pretty map. It's closer to a lightweight SOC-style situational awareness tool: multiple independent feeds, normalized into one schema, polled continuously, rendered without a manual refresh.

Assets & Methods

AssetFunction
Visualization PlatformCesiumJS 3D globe (God's Eye View, rebranded Anansi)
Automation / ETLSelf-hosted n8n, deployed via Docker
Traffic Intel (Track 1)n8n → TomTom Incident API, feeds Hampton Roads panel
Traffic Intel (Track 2)Native TomTom Flow API — live vehicle position tracking on the globe
Road GeometryOverpass API via self-hosted proxy, mirror-ordered
Weather Inteln8n → NOAA / National Weather Service Alerts API
Local News Inteln8n → Google News RSS, XML-parsed, geocoded by keyword match
Hampton Roads 757 PanelPersistent right-rail feed (redesigned from a map layer)
AI Security Intel (Module 2)AI Security Intelligence Dashboard — exploited AI/ML CVEs, research, models, policy
Cover IdentityCustom UI theme, wordmark, original spider-mark logo
02 // FIELD LOG

Operational Timeline

ENTRY 001 — INFRASTRUCTURE

Environment Setup

Base platform deployed locally on Windows 11 (Node.js/Vite). Docker Desktop wouldn't start at first — turned out virtualization was disabled in the BIOS by default, so that had to get flipped on before the automation layer would come up at all.

ENTRY 002 — AUTOMATION

Self-Hosted Automation Server (n8n)

n8n runs as a Docker container with its workflow data persisted in a named volume, so nothing gets wiped on restart. Each data source is its own workflow, triggered on-demand by webhook rather than a fixed schedule — the intent being upstream APIs only get hit when the dashboard's actually being viewed, not burning quota in the background for no reason.

n8n workflow canvas
n8n workflow canvas — traffic, weather, WJCC news pipelines
ENTRY 003 — TRAFFIC INTEL

Traffic Data Pipeline

Live incident data comes from TomTom's Traffic Incident Details API (v5), bounded to Norfolk, Virginia Beach, Chesapeake, Portsmouth, Suffolk, Newport News, and Hampton, normalized into a consistent {lat, lng, label, type, metadata} schema so it lines up with everything else in the pipeline. Static incidents were the starting point — getting the TomTom flow API working came later, and that's what actually drives the live vehicle-tracking overlay: individual moving markers on real Williamsburg-area streets, continuously updating rather than a stale snapshot.

Traffic incidents feed
Traffic incidents feed, ranked by severity
ENTRY 004 — WEATHER INTEL

Weather Alerts Pipeline

NOAA's public Alerts API doesn't need a key, but it does need a descriptive User-Agent header — skip it and the response is a silent 403 with nothing pointing to why. That one took some digging since it's not documented anywhere obvious. NWS alerts are zone-based rather than coordinate-based, so a lookup table maps known localities to approximate coordinates to get them plotted on the map at all.

ENTRY 005 — LOCAL NEWS INTEL

Local News Pipeline — Historic Triangle

The original target was a Williamsburg news outlet's RSS feed directly, but the source actively blocks automated requests at the network level — 403 regardless of what headers get sent. Pivoted to a location-filtered Google News RSS query instead, which meant writing a raw regex-based XML parser rather than trusting n8n's built-in conversion node, since the actual output shape didn't match what the documentation implied. Obituary and real-estate listing noise gets filtered out at parse time — not useful for a situational-awareness feed.

Local news feed
Live local news feed, geocoded and filtered
ENTRY 006 — INTEGRATION

Hampton Roads 757 Panel — Built, Then Redesigned

This started as a Cesium map layer polling all three n8n webhooks and rendering colored dots on the globe. Found a real bug early: a single failed poll on enable was reverting the whole toggle back to OFF ("could not start cleanly") instead of degrading gracefully. Fixed so the layer stays on and retries automatically instead of failing hard on one bad request.

Added a Hampton Roads (757) location pill with five real landmarks — Nauticus, the Virginia Beach Oceanfront, the Bridge-Tunnel, Naval Station Norfolk, the Chrysler Museum — and hid every other preset city pill from the UI without deleting the underlying data, so CCTV and voice control still reference it under the hood.

The final version pulled the whole thing out of the data-layer system entirely — no more map dots, no ON/OFF toggle in Data Layers. It now lives as a persistent panel on the right rail: a live-scrolling feed of real traffic incidents, weather alerts, and news headlines, each with source, severity, and timestamp. Reads a lot better as an actual intelligence feed than a cluttered globe ever did.

ENTRY 006B — NETWORK DEBUGGING

Live Vehicle Tracking — TomTom Activation & a Real Debugging Chain

Separate from the n8n incident pipeline, the base platform has its own native TOMTOM_API_KEY, sitting commented-out in .env. Activating it to get live vehicle-position tracking on the globe led straight into "traffic won't populate / stuck at 0% coverage" — which turned out to be three separate, unrelated root causes stacked on top of each other, not one. That's what made it a genuine troubleshooting exercise rather than a quick fix.

1. Norton Antivirus's SSL inspection. Its own certificate wasn't trusted by Node, producing intermittent UNABLE_TO_VERIFY_LEAF_SIGNATURE failures on outbound HTTPS calls. Resolved by pointing NODE_EXTRA_CA_CERTS at Norton's own auto-maintained certificate bundle, set as a persistent machine-level environment variable — that part is machine-specific, so it's not in the repo.

2. Overpass mirror ordering. The first mirror tried (overpass-api.de) was hard-hanging at the TCP level, eating the full 22-second timeout before ever reaching one that actually worked. Reordering the mirror list to try the working ones first cleared that up.

3. A second, completely unrelated bug: the Overpass proxy's User-Agent was still a stale pre-rebrand string (gods-eye-view-overpass-proxy/1.0), and overpass-api.de's abuse filter was hard-blocking it with a 406 on every request. Had nothing to do with Norton — only surfaced by swapping that one header in isolation and re-testing. Fixed to Anansi/1.0.

Cause-level logging went into both proxies (vite.config.js) so any future failure surfaces the actual reason instead of a bare "fetch failed." A live firewall-off test ruled out Norton's firewall specifically — behavior was identical either way, which confirmed the User-Agent was the real missing piece for Overpass, not just a secondary symptom of the SSL issue.

By the end of that session: TomTom flow, Overpass road geometry, and the Hampton Roads panel were all confirmed running on real data — 98+ live traffic incidents, real news headlines, clean coverage percentages instead of stuck zeros.

ENTRY 007 — COVER IDENTITY

Rebrand: Anansi

Full rebrand of the base platform — UI, page title, config/branding strings (AI prompts, User-Agent headers, console messages). Project docs and the original repo/YouTube links stayed untouched, since those point to the real public source and deserve credit as-is. Logo replaced everywhere — favicon, title bar, loading screen — with an original red spider-mark SVG. Full color pass: black/near-black backgrounds, gold text (#d4af37 primary, #a8842a dimmer for secondary/hint text — checked both against WCAG contrast, 9.4:1 and 5.6:1), red (#c81e1e) for buttons, borders, and active states.

A follow-up pass caught a few spots the first sweep missed — icon SVGs with colors baked directly into the file instead of driven by CSS, the voice-control widget's waveform, the first-run modal, the command-dock borders, CCTV panel indicators. Subtitle changed to "I'm everywhere. And nowhere."

Anansi rebrand with live vehicle tracking
Final rebrand — live vehicle tracking, red/black/gold theme
ENTRY 008 — AI SECURITY INTEL

New Module: AI Security Intelligence Dashboard

Anansi picked up a second area of operations: the AI/ML attack surface. The new AI Security module is a remake of CYBERMED1C's AI-Tracker — an AI-maintained dashboard that lives entirely in a GitHub README — rebuilt as a structured, interactive Anansi panel. It tracks actively exploited vulnerabilities in AI/ML infrastructure, AI security research and incidents, frontier-model releases, and AI-related executive orders, each linked to its primary source (maintainers, CISA, the CVE Program, OWASP, and the AI labs).

Same normalize-first approach as the n8n pipelines: every advisory is a record in data/ai-security.json with one shape — {id, product, status, cvss, affected, fixed, exposedIf, doNow, lookFor, exploitation, sources[]}. The triage board sorts by exploitation evidence first (CISA KEV → public PoC → vendor-disclosed) and CVSS second, so an exploited 8.6 outranks an unexploited 10.0. Clicking a row expands Exposed if / Do now / Look for / Exploitation; filter chips and search narrow the board. Research, model, and policy intel sits in a right-rail tabbed panel — the same layout lesson learned from the 757 redesign.

The page fetches the JSON when served and falls back to a seed copy embedded by build.py when opened from disk, so it runs on any static host with no API key. Open the live AI Security dashboard →

Anansi AI Security Intelligence Dashboard with triage board and research feed
AI Security module — triage board with an expanded CISA KEV advisory, research feed on the right rail

System Architecture

TRACK 1 — n8n (Docker, self-hosted)
  ├── Traffic  → TomTom Incident API   ─┐
  ├── Weather  → NOAA Alerts API        ├─→ normalized JSON via webhook
  └── News     → Google News RSS       ─┘
                                              │
                                              ▼
                    Hampton Roads 757 panel (right rail, live feed)

TRACK 2 — Native platform integrations
  ├── TomTom Flow API   → live vehicle position tracking on the globe
  └── Overpass API      → real road geometry (self-hosted proxy, mirror-ordered)

                         Anansi (CesiumJS 3D globe, in-browser)

TRACK 3 — AI Security Intel module
  ├── Maintainer advisories / CISA KEV / CVE records  ─┐
  ├── AI lab research, OWASP GenAI                     ├─→ data/ai-security.json
  └── Frontier-model releases, executive orders       ─┘          │
                                                          build.py (seed embed)
                                                                    ▼
                    AI Security dashboard (triage board + right-rail intel feed)

The n8n track is fully webhook-triggered rather than cron-scheduled — upstream APIs only get called when the panel's actually being viewed. The native track (TomTom flow, Overpass) runs independently inside the platform itself, with its own self-hosted proxy layer handling mirror selection and request headers.

04 // OBSTACLES ENCOUNTERED

What Actually Went Wrong

Three of the traffic-related failures above looked identical from the outside — all presented as "coverage stuck at 0%." Isolating them meant changing one variable at a time — firewall off/on, header swap, mirror order — instead of assuming a single cause and stopping there.

UNRESOLVED — SEE FUTURE OPS
05 // FUTURE OPERATIONS

What's Next

06 // WHAT THIS DEMONSTRATES

Skills Applied

06B // EVIDENCE LOG

Files Touched

A non-exhaustive list of what actually changed, for anyone who wants to check the work directly:

index.html
style.css
vite.config.js
src/main.js
src/ui.js
src/hud.js
src/locations.js
src/data/traffic.js
src/data/cctv.js
src/data/bikeshare.js
src/data/hamptonRoads757.js        (new)
src/voice/gevRealtime.js
src/styles/anansi-logo.svg
public/*.svg
.env / .env.example
ai-security/index.html             (new)
ai-security/src/dashboard.html     (new)
ai-security/data/ai-security.json  (new)
ai-security/build.py               (new)
images/ai-security-dashboard.png   (new)
06C // METHODOLOGY NOTE

On the Use of AI

Claude (Anthropic) was used throughout this project as a coding and debugging assistant — working through n8n workflow errors, writing and wiring the custom CesiumJS data layer, walking through the Docker and environment setup, and helping design the rebrand (logo concepts, color system, UI pass). It was also used to help write this debrief itself, and to build the AI Security module (schema, dashboard, build script, and screenshot).

The architecture decisions, the actual debugging (including isolating the three stacked network failures in Entry 006B), testing, and every commit pushed to this repo were done directly — Claude functioned as a pair-programming and research tool, not an autonomous builder. Being upfront about that split felt more honest than presenting this as solo work from scratch, and more useful than pretending AI assistance wasn't part of how modern development actually happens.

07 // SOURCE ATTRIBUTION

Credit

This project is built directly on top of God's Eye View (github.com/bilawalsidhu/gods-eye-view), an open-source CesiumJS geospatial visualization platform created by Bilawal Sidhu (github.com/bilawalsidhu). His original demo is available on YouTube. Anansi extends that base platform with a self-hosted n8n data pipeline, a custom regional data panel, and a full visual rebrand — but the underlying 3D globe engine, layer architecture, and original concept are his. Full credit for the foundation this project builds on.
The AI Security module is a remake of the AI Security Intelligence Dashboard by CYBERMED1C (github.com/CYBERMED1C/AI-Tracker). The concept, advisory format, and curated intelligence are theirs; Anansi rebuilds the presentation as a structured, interactive dashboard.
08 // DEBRIEF SUMMARY

Where This Leaves Things

A public, general-purpose open-source visualization platform got turned into a purpose-built, live regional intelligence tool — designing the ETL pipeline, working through real API and infrastructure issues as they came up, extending the platform's actual codebase with new functionality, and finishing with a fully custom identity. What's live now is a working, self-hosted, real-time dashboard built entirely on free-tier public data sources — now with a second module covering the AI/ML attack surface alongside the Hampton Roads picture.

OPERATION COMPLETE