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

> Explore 28 voice commands in God's Eye View for hands-free control of globe, data layers, camera, and analytics. Master the complete guide to navigate your geospatial data effortlessly.

- Repository: [Bilawal Sidhu/gods-eye-view](https://github.com/bilawalsidhu/gods-eye-view)
- Tags: how-to-guide
- Published: 2026-09-13

---

**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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/vite.config.js) (server-side validation) and [`src/voice/gevActions.js`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/src/voice/gevActions.js).

### Navigation and Camera Control

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.

```javascript
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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/src/voice/gevRealtime.js)** — Manages the OpenAI Realtime WebSocket session, cost tracking tokens, and UI status indicators during active listening.
- **[`vite.config.js`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/vite.config.js)** — Declares the **tool schema** that validates incoming voice commands server-side, ensuring parameter types match client expectations.
- **[`README.md`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/gevActions.js)) and server ([`vite.config.js`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/src/voice/gevActions.js), commands are hardcoded as conditional branches within the runner function. To add new commands, developers must modify [`gevActions.js`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/gevActions.js) to include new `if (name === 'custom_command')` logic, update the tool schema in [`vite.config.js`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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`](https://github.com/bilawalsidhu/gods-eye-view/blob/main/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.