AI Providers
Groq (Primary)
Purpose: Fast LLM inference for AI-generated news briefs and threat classification. Free Tier: 14,400 requests/day How to get your key:- Visit https://console.groq.com/
- Sign up with GitHub, Google, or email
- Navigate to API Keys in the left sidebar
- Click Create API Key
- Copy the key (starts with
gsk_)
.env.local
OpenRouter (Fallback)
Purpose: Multi-model LLM fallback when Groq is rate-limited or unavailable. Free Tier: 50 requests/day (limited) How to get your key:- Visit https://openrouter.ai/
- Sign up and verify your email
- Go to Settings → Keys
- Click Create Key
- Copy the key (starts with
sk-or-)
.env.local
OpenRouter requires payment for high-volume usage. The free tier is suitable for testing only.
Economic Data
FRED (Federal Reserve Economic Data)
Purpose: Macro indicators, GDP, unemployment, inflation, Baltic Dry Index. Free Tier: Unlimited (non-commercial use) How to get your key:- Visit https://fred.stlouisfed.org/docs/api/api_key.html
- Click Request API Key
- Sign up with email (instant approval)
- Copy the 32-character hexadecimal key
.env.local
EIA (Energy Information Administration)
Purpose: Oil prices (WTI, Brent), U.S. production, inventory levels. Free Tier: Unlimited How to get your key:- Visit https://www.eia.gov/opendata/register.php
- Fill out the registration form
- Check your email for the API key
- Copy the 40-character key
.env.local
Market Data
Finnhub
Purpose: Real-time stock quotes, crypto prices, market data. Free Tier: 60 API calls/minute How to get your key:- Visit https://finnhub.io/register
- Sign up with email
- Verify your email
- Copy the API key from the dashboard
.env.local
The dashboard falls back to Yahoo Finance for indices (^GSPC, ^DJI) and CoinGecko for crypto when Finnhub is unavailable.
Conflict & Threat Data
ACLED (Armed Conflict Location & Event Data)
Purpose: Conflict events, protests, battles, violence against civilians. Free Tier: Available for researchers and non-commercial use How to get your key:- Visit https://developer.acleddata.com/
- Click Request Access
- Fill out the researcher application form
- Wait for email approval (1-3 business days)
- Copy the access token from the email
.env.local
URLhaus (abuse.ch)
Purpose: Malicious URL IOCs for cyber threat layer. Free Tier: Unlimited How to get your key:- Visit https://auth.abuse.ch/
- Create an account
- Navigate to API Keys
- Generate a new key
.env.local
AlienVault OTX
Purpose: Cyber threat intelligence enrichment. Free Tier: Unlimited How to get your key:- Visit https://otx.alienvault.com/
- Sign up for a free account
- Go to Settings → API Integration
- Copy the OTX Key
.env.local
AbuseIPDB
Purpose: IP reputation enrichment for cyber threat layer. Free Tier: 1,000 requests/day How to get your key:- Visit https://www.abuseipdb.com/login
- Create an account
- Go to API in the top menu
- Copy the API v2 key
.env.local
Infrastructure Data
Cloudflare Radar
Purpose: Internet outage detection. Free Tier: Included with free Cloudflare account How to get your token:- Visit https://dash.cloudflare.com/profile/api-tokens
- Sign up for a free Cloudflare account
- Click Create Token
- Use the Read Analytics template
- Copy the token
.env.local
NASA FIRMS
Purpose: Satellite fire detection (VIIRS thermal hotspots). Free Tier: Unlimited How to get your key:- Visit https://firms.modaps.eosdis.nasa.gov/api/area/
- Request a MAP_KEY (instant)
- Check your email
- Copy the key from the email
.env.local
Tracking & Aviation
AISStream
Purpose: Live vessel positions via WebSocket (AIS data). Free Tier: Limited (contact for details) How to get your key:- Visit https://aisstream.io/authenticate
- Sign up with email
- Copy the API key from the dashboard
.env.local
scripts/ais-relay.cjs).
OpenSky Network
Purpose: Military flight tracking (ADS-B data). Free Tier: Anonymous access available, OAuth credentials provide higher rate limits. How to get your credentials:- Visit https://opensky-network.org/login?view=registration
- Create an account
- Request OAuth credentials via their support forum
- Copy the client ID and secret
.env.local
Wingbits
Purpose: Aircraft enrichment metadata (owner, operator, type). Free Tier: Contact for pricing How to get your key:- Visit https://wingbits.com/register
- Contact their sales team
- Copy the API key from your account dashboard
.env.local
The dashboard uses heuristic classification when Wingbits is unavailable. Military confidence levels are reduced.
AviationStack
Purpose: International airport delay data. Free Tier: 100 requests/month How to get your key:- Visit https://aviationstack.com/signup/free
- Sign up with email
- Verify your email
- Copy the API key from the dashboard
.env.local
ICAO NOTAM
Purpose: Airport closure detection (Middle East focus). Free Tier: Contact for details How to get your key:- Visit https://dataservices.icao.int/
- Request API access
- Copy the API key
.env.local
Trade Data
WTO (World Trade Organization)
Purpose: Trade restrictions, tariff trends, barriers, bilateral flows. Free Tier: Contact for details How to get your key:- Visit https://apiportal.wto.org/
- Register for API access
- Copy the API key
.env.local
Telegram OSINT
Required for Telegram intelligence feed (27 OSINT channels). How to get your credentials:- Visit https://my.telegram.org/apps
- Log in with your Telegram account
- Create a new application
- Copy the
API IDandAPI Hash - Run
scripts/telegram/session-auth.mjsto generate a session string
.env.local
Desktop App Keys
Desktop app users configure API keys via the Settings window (Cmd+, or Ctrl+,). Keys are stored in the OS keychain:- macOS: Keychain Access
- Windows: Credential Manager
- Linux: Secret Service API (gnome-keyring, kwallet)
Verifying API Keys
The desktop settings window includes per-key validation:- Open Settings (Cmd+, or Ctrl+,)
- Navigate to the appropriate category
- Enter your API key
- Click Save & Verify
- Status indicator shows ✓ (valid) or ✗ (invalid)
- URL format for endpoint URLs
- Key length for known formats
- Live API test for supported providers (Groq, Finnhub, FRED, etc.)
Cloud/web deployments do not validate credentials client-side. Credentials are validated server-side when the API handler runs.