How to Troubleshoot Common God's Eye View Errors: A Complete Guide
Most God's Eye View errors stem from missing API credentials in .env or upstream rate limits, surfacing as JSON error responses from the Vite proxy server defined in vite.config.js.
God's Eye View (GEV) aggregates real-time aviation, satellite, and IoT data through a unified Node Vite proxy architecture. When gods eye view errors appear as toast notifications or console messages, they typically indicate authentication failures, quota exhaustion, or upstream service interruptions within the server middleware.
Understanding the Error Architecture
The application runs a single Node Vite server that proxies all external API calls through vite.config.js. This proxy layer validates credentials against your .env file (or Pinokio’s ENVIRONMENT file) before forwarding requests.
The proxy implements three critical behaviors:
- Credential validation inspects environment variables before forwarding
- Rate-limit awareness adapts cache TTL via
openskyAdaptiveTtlMsbased on upstream headers likex-rate-limit-remaining - Error isolation prevents caching of failure responses (see lines 29-31 in
vite.config.js), ensuring you see fresh error states on every reload
When validation fails, the proxy returns structured JSON payloads (e.g., {"error":"OpenSky auth missing..."}) that the client surfaces as UI notifications.
Common God's Eye View Errors and Solutions
OpenSky Authentication Failures (vite.config.js
If you encounter {"error":"OpenSky auth missing..."} or {"error":"OpenSky auth invalid..."}, the server is running in basic mode without valid credentials.
The proxy checks for OPENSKY_USERNAME and OPENSKY_PASSWORD at lines 3189-3195. To resolve:
# .env (copy from .env.example)
OPENSKY_USERNAME=your_email@example.com
OPENSKY_PASSWORD=your_password
# Optional for OAuth mode:
# OPENSKY_CLIENT_ID=your_client_id
# OPENSKY_CLIENT_SECRET=your_client_secret
Alternatively, switch to anonymous mode by setting OPENSKY_AUTH_MODE=anon, though this provides limited access.
OpenSky Rate Limit Exceeded (vite.config.js
The error {"error":"Rate limit exceeded"} originates at line 534 when the upstream OpenSky API returns HTTP 429. The proxy maintains an adaptive cache to respect rate limits, but once the quota is exhausted, it returns this error immediately.
Reduce polling frequency in the UI or obtain a higher-quota OpenSky token through their developer portal. Run npm run doctor to view your current quota status.
Cesium Ion and Google Maps Token Errors (vite.config.js
Missing 3D map tiles or base layers trigger {"error":"no_key"} generated at lines 1799-1802. This occurs when CESIUM_ION_TOKEN or Google Maps keys are absent.
Provide credentials via the POWER UP UI or directly in .env:
CESIUM_ION_TOKEN=your_public_ion_token # requires assets:read scope only
GOOGLE_MAPS_API_KEY=your_maps_key
NASA FIRMS Active Fire Data Failures (vite.config.js
Fire tracking requires a free NASA FIRMS API key. The error generates at line 2026 when the key is missing. Add the following to .env:
NASA_FIRMS_KEY=your_firms_key
Radio Browser Catalog Refresh Errors (vite.config.js
The message {"error":"Radio Browser catalog refresh did not meet health policy"} appears at lines 1202-1206 when the proxy cannot fetch fresh station lists from the upstream service.
Restart the dev server to trigger a fresh fetch. If the error persists, verify network connectivity to the Radio Browser service and check their status page for outages.
Launch Library 2 Unavailability (vite.config.js
Rocket launch data errors surface at lines 1722-1725 as {"error":"Launch Library 2 unavailable"}. This indicates the upstream Thespacedevs API is returning 5xx/4xx errors.
Verify the API endpoint is reachable from your network. If you are hitting rate limits, supply a higher-quota API key in your environment configuration.
CCTV Mesh and General Proxy Failures
City-specific camera feeds may return {"error":"no_key"} for missing municipal API credentials, or {"error":"upstream"} for network failures. These generate from various catch (error) blocks throughout the proxy.
Check the server console for full stack traces. Ensure outbound HTTPS access is not blocked by corporate firewalls or VPN policies.
Step-by-Step Troubleshooting Workflow
Follow this systematic approach to diagnose gods eye view errors:
-
Open the POWER UP panel (bottom-right corner) to identify providers showing red 🔴 warning indicators
-
Inspect
.envagainst.env.examplefor missing or empty key values -
Run the built-in diagnostic:
npm run doctorThis prints each provider status (e.g.,
OpenSky auth missing) and quota usage -
Check server console for warning lines like
console.warn('[OpenSky] ...')that include specific failure reasons -
Restart the dev server after any
.envchanges, as environment variables are cached at startup:npm run dev -- --host 0.0.0.0 --port 4173 -
Test endpoints directly to bypass UI layers:
fetch('/api/opensky?mode=basic') .then(r => r.json()) .then(console.log); // → { error: 'Rate limit exceeded' } or valid data
Summary
- God's Eye View errors surface as JSON responses from the Vite proxy in
vite.config.js, not direct client-side failures - Authentication errors (lines 3189-3195, 1799-1802, 2026) require valid credentials in
.envor Pinokio’s environment file - Rate limiting (line 534) requires quota management or upgrading to higher-tier API keys
- Error responses are never cached (lines 29-31), ensuring fresh diagnostics on every application reload
- Use
npm run doctorto verify provider health before debugging individual data layers
Frequently Asked Questions
Why do I see "OpenSky auth missing" even after adding credentials to .env?
The Vite server caches environment variables at startup. You must restart the dev server after editing .env. Additionally, verify you are editing the correct file—Pinokio users should check pinokio/ENVIRONMENT instead of the root .env file, as the proxy prioritizes the Pinokio environment when present.
How can I test if a specific provider is working without using the UI?
Use the browser console to test proxy endpoints directly. This bypasses React state management and shows the raw JSON error generated by the server:
fetch('/api/opensky?mode=basic')
.then(r => r.json())
.then(console.log);
This returns the exact error object defined in vite.config.js (e.g., {"error":"Rate limit exceeded"}).
What is the fastest way to identify which API key is causing errors?
Run npm run doctor from the project root. This command iterates through all provider configurations in vite.config.js and reports missing or invalid credentials for OpenSky, Cesium Ion, NASA FIRMS, and Radio Browser in a single terminal view, color-coding pass/fail states.
Can I run God's Eye View without any API keys?
Partially. Set OPENSKY_AUTH_MODE=anon for limited flight tracking and omit optional layers like Cesium Ion (the app will fallback to default map tiles). However, NASA FIRMS active fire data and CCTV mesh features strictly require their respective API keys to function, and will return {"error":"no_key"} until configured.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →