Available Voice Commands in God's Eye View: Complete Guide to Hands-Free Control

God's Eye View provides 28 distinct voice commands that enable hands-free control of the globe, data layers, camera movements, and analytical functions through OpenAI's Realtime API.

The open-source God's Eye View (GEV) project implements a comprehensive Hands-free Voice Control layer that transforms natural speech into executable actions. According to the bilawalsidhu/gods-eye-view source code, when a user speaks a command, the client constructs a tool request that is dispatched to the GEV Action Runner defined in src/voice/gevActions.js. This architecture allows users to manipulate the 3D globe, toggle visualization layers, and execute complex analytical queries without touching the interface.

How Voice Commands Work in God's Eye View

The voice system bridges OpenAI's Realtime API with the application's core functionality. When the GEV MIC button is activated, speech is streamed to the Realtime API, which parses intent into structured tool calls. These calls match predefined schemas declared in both vite.config.js (server-side validation) and src/voice/gevActions.js (client-side execution).

Each command maps to a voice tool—a JavaScript function that receives parameters extracted from natural language. The runner executes the corresponding logic and returns results to the UI. This bidirectional flow enables real-time feedback, such as flying to locations or toggling the Heads-Up Display (HUD).

Complete List of 28 Voice Commands

The available voice commands in God's Eye View span navigation, visualization, data manipulation, and media control. Below is the categorized reference of all implemented tools based on the source code in src/voice/gevActions.js.

These commands manipulate the camera position, zoom levels, and tracking behavior.

  • fly_to_location — Flies the camera to a specified place name, coordinates, or location ID (lines 71‑78).
  • adjust_camera_zoom — Adjusts zoom level by specified increments: small, medium, or lot (lines 13‑20).
  • zoom_to_globe — Resets the view to the default global perspective (lines 98‑108).
  • move_camera — Pans or tilts the camera to a new position while preserving flight-mode constraints (lines 172‑176).
  • fly_route — Executes multi-waypoint flight paths for planned trajectories (lines 178‑186).
  • track_entity — Initiates continuous tracking of a specific aircraft, vessel, or satellite (lines 140‑142).
  • stop_tracking — Terminates any active entity tracking session (lines 144‑146).

Data Layers and Entity Selection

These tools manage the visibility and selection of geospatial data layers.

  • set_layer_visibility — Toggles any data layer on or off globally (lines 22‑41).
  • select_nearest_aircraft — Activates the flight layer and selects the closest aircraft to a given location (lines 21‑75).
  • show_data_layers_menu — Opens the data-layers panel with optional focus on a specific layer (lines 49‑58).
  • set_context_mode — Changes the operational context mode (e.g., setting contacts display to flights) (lines 86‑94).
  • get_entity_context — Retrieves metadata and context for the currently selected entity (lines 38‑44).
  • get_current_view_state — Returns the camera's current latitude, longitude, heading, and altitude (lines 42‑46).

Visualization and Interface Control

These commands modify the visual appearance and UI panels.

  • set_visual_style — Switches between globe styles such as normal, retro, or surveillance modes (lines 76‑80).
  • set_panel_open — Opens or closes specific UI panels including data, location, or control interfaces (lines 83‑88).
  • set_hud — Controls HUD visibility and layout configurations (lines 46‑58).
  • set_detection — Configures detection overlays, including mode, density, and allocation parameters (lines 60‑66).
  • set_map_stack — Changes the basemap stack between Photoreal, OSM, Bing, Esri, and other providers (lines 70‑75).
  • set_post_processing — Adjusts bloom and sharpen post-processing effects (lines 78‑85).

Scenes, Media, and CCTV

These tools control scripted sequences and media playback.

  • control_scene — Lists, starts, stops, or advances through scripted narrative scenes (lines 96‑104).
  • control_cctv — Manages CCTV layer states, camera selection, focus operations, and coverage toggles (lines 106‑124).
  • control_cockpit — Enters or exits cockpit view, cycles through targets, and changes aircraft classifications (lines 112‑124).
  • control_radio — Controls internet radio playback including play/pause, track skipping, country selection, and volume (lines 126‑138).

Analysis and Annotation

These commands support spatial analysis and map markup.

  • analyst_query — Executes free-form analytical queries against the data engine (lines 188‑190).
  • next_iss_pass — Calculates and displays the next International Space Station pass over the current viewport (lines 192‑194).
  • annotate_map — Adds persistent vector annotations including points, lines, and polygons with labels (lines 152‑165).
  • clear_annotations — Removes all persistent map annotations (lines 167‑170).
  • frame_overhead — Captures a snapshot of the current view for reporting purposes (lines 148‑150).

Implementing Voice Commands Programmatically

Developers can invoke voice commands directly through JavaScript using the createGevActionRunner factory function. This approach bypasses the speech recognition layer for programmatic control or automated testing.

import { createGevActionRunner } from './src/voice/gevActions.js';
import { viewer, styleManager, dataManager } from './src/main.js';

const runGev = createGevActionRunner({
  viewer,
  styleManager,
  dataManager,
  // additional optional dependencies
});

async function executeCommands() {
  // Navigate to specific location
  await runGev('fly_to_location', { 
    locationQuery: 'Zilker Park Austin' 
  });
  
  // Enable flight tracking layer
  await runGev('set_layer_visibility', { 
    layerId: 'flights', 
    enabled: true 
  });
  
  // Add persistent annotation
  await runGev('annotate_map', {
    annotations: [{ 
      target: 'Zilker Park', 
      label: 'Park', 
      persist: true 
    }],
  });
}

executeCommands();

The runner returns promises that resolve when the Cesium-based viewer completes the requested animation or data operation.

Voice-Only Usage Workflow

For end users, the voice interface operates through the GEV MIC button in the application toolbar:

  1. Click the GEV MIC button to initialize the OpenAI Realtime session.
  2. Speak natural commands such as "Fly to Zilker Park Austin" to trigger fly_to_location.
  3. Use layer commands like "Show flights layer" to execute set_layer_visibility.
  4. Create annotations by saying "Annotate Zilker Park as a park" which invokes annotate_map.

The system handles natural language variations through the Realtime API's function calling capability, mapping utterances to the strict tool schemas defined in vite.config.js.

Key Source Files and Architecture

Understanding the voice command architecture requires examining these critical files in the bilawalsidhu/gods-eye-view repository:

  • src/voice/gevActions.js — Contains the GEV Action Runner with dispatch logic for all 28 voice tools. Each if (name === 'tool_name') branch implements specific command behavior (lines 13‑194).
  • src/voice/gevRealtime.js — Manages the OpenAI Realtime WebSocket session, cost tracking tokens, and UI status indicators during active listening.
  • vite.config.js — Declares the tool schema that validates incoming voice commands server-side, ensuring parameter types match client expectations.
  • README.md — Documents the complete tool list in the Voice commands section for user reference.

Summary

  • God's Eye View exposes 28 voice commands through the GEV Action Runner in src/voice/gevActions.js.
  • Commands utilize OpenAI's Realtime API for natural language parsing and function calling.
  • Available tools cover camera navigation, data layer management, visualization styling, CCTV/scene control, and spatial analysis.
  • The system supports both voice activation via the GEV MIC button and programmatic execution through createGevActionRunner.
  • Tool schemas are synchronized between client (gevActions.js) and server (vite.config.js) for validation integrity.

Frequently Asked Questions

How do I activate voice commands in God's Eye View?

Click the GEV MIC button in the application toolbar to initiate an OpenAI Realtime session. Once the microphone indicator shows active status, speak natural commands such as "Fly to New York" or "Show the flights layer". The system processes speech locally through the browser and transmits audio to the Realtime API, returning structured tool calls to the GEV Action Runner.

Can I add custom voice commands to the system?

According to the current implementation in src/voice/gevActions.js, commands are hardcoded as conditional branches within the runner function. To add new commands, developers must modify gevActions.js to include new if (name === 'custom_command') logic, update the tool schema in vite.config.js for parameter validation, and register the new function signature in the OpenAI Realtime session configuration.

Do voice commands work without an internet connection?

No. The voice system requires a persistent connection to OpenAI's Realtime API endpoints. The gevRealtime.js module manages this WebSocket connection, and voice processing occurs on OpenAI's servers. However, once a command is parsed and sent to the gevActions.js runner, subsequent execution occurs locally using the Cesium.js viewer and local data managers.

Which voice command tracks aircraft in real-time?

Use track_entity to begin tracking a specific aircraft, vessel, or satellite, and stop_tracking to discontinue monitoring. For finding nearby traffic, select_nearest_aircraft activates the flight layer and automatically selects the closest aircraft to your specified location or current view center. These commands interface with the dataManager to poll real-time ADS-B and AIS feeds.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →