AI-powered Air Traffic Control training platform. Speak to AI pilots, receive realistic clearances, and watch aircraft move in X-Plane 12.
AIrport connects a controller's voice to a fleet of AI-powered aircraft. The controller talks into a microphone; the system transcribes the audio, routes the message to the correct ATC phase agent (Delivery, Ground, or Tower), generates a realistic ICAO-compliant response, and feeds movement commands back to X-Plane 12.
Each ATC phase is handled by a dedicated AI agent running on Google Cloud Run, backed by Gemini. A central Orchestrator tracks each aircraft's lifecycle through DEL → GND → TWR and routes incoming transmissions accordingly.
Services:
| Service | Responsibility |
|---|---|
| Controller HMI | Web UI (flight strips, ground radar), API proxy |
| ASR | Whisper transcription + callsign correction |
| Orchestrator | Agent routing, aircraft state machine |
| Flight Plan | IFR flight plan generation (flightplandatabase.com) |
| Weather | METAR, TAF, ATIS generation |
All three agents run on Google Cloud Run with Gemini and are stateless between sessions. The Orchestrator provides each agent with the relevant aircraft context (flight plan, clearances, weather) on every call.
| Agent | Frequency | Responsibilities |
|---|---|---|
| DEL (Clearance Delivery) | DEL | Issues IFR clearances |
| GND (Ground Control) | GND | Assigns pushback approval and taxi routes |
| TWR (Tower) | TWR | Issues takeoff / landing clearances, manages runway sequencing |
Aircraft progress through the phases: DEL → GND → TWR. The Orchestrator stores each aircraft's phase in PostgreSQL and routes future transmissions accordingly.
| Layer | Technology |
|---|---|
| Voice ASR | Whisper fine-tuned for ATC via faster-whisper |
| Voice TTS | X-Plane 12 built-in TTS |
| AI Agents | Google ADK + Gemini (gemini-3-flash-preview) on Cloud Run |
| Web Framework | FastAPI + Uvicorn (all services) |
| Async HTTP | httpx |
| Simulator | X-Plane 12 (Python plugin API) |
| Primary DB | PostgreSQL 15 |
| Cache | Redis 7 |
| Metrics | InfluxDB 2.7 |
| Containerization | Docker Compose |
| Package Manager | uv |
- Docker + Docker Compose
- X-Plane 12
- Google Cloud project with Vertex AI enabled
- Service account key (JSON) with Vertex AI permissions
- Deployed DEL/GND/TWR agents on Cloud Run (see
agents/)
cp .env.example .envEdit .env and fill in:
# Google Cloud
VERTEX_PROJECT=your-gcp-project
VERTEX_LOCATION=global
GEMINI_MODEL=gemini-3-flash-preview
GOOGLE_APPLICATION_CREDENTIALS_JSON='{...}' # service account JSON inline
# Cloud Run agent URLs
DEL_AGENT_URL=https://del-agent-xxxx-uc.a.run.app
GND_AGENT_URL=https://gnd-agent-xxxx-uc.a.run.app
TWR_AGENT_URL=https://twr-agent-xxxx-uc.a.run.app
# Flight plan API
FLIGHT_PLAN_GENERATOR_KEY=your-key
# Postgres credentials
POSTGRES_PASSWORD=change_medocker compose up --buildNavigate to http://localhost:8005
| Variable | Default | Description |
|---|---|---|
VERTEX_PROJECT |
— | GCP project ID |
VERTEX_LOCATION |
global |
Vertex AI region |
GEMINI_MODEL |
gemini-3-flash-preview |
Gemini model used by agents |
DEL_AGENT_URL |
— | Cloud Run URL for DEL agent |
GND_AGENT_URL |
— | Cloud Run URL for GND agent |
TWR_AGENT_URL |
— | Cloud Run URL for TWR agent |
ASR_HF_MODEL |
jacktol/whisper-medium.en-fine-tuned-for-ATC-faster-whisper |
Whisper model |
ASR_WHISPER_DEVICE |
cpu |
cpu or cuda |
ASR_WHISPER_COMPUTE_TYPE |
int8 |
Whisper quantisation |
FLIGHT_PLAN_GENERATOR_KEY |
— | flightplandatabase.com API key |
| Component | Status |
|---|---|
| ASR (Whisper) | ✅ |
| DEL / GND / TWR agents | ✅ |
| Orchestrator | ✅ |
| Controller HMI (flight strips, ground radar) | ✅ |
| Flight Plan Service | ✅ |
| Weather / ATIS Service | ✅ |
| TTS (X-Plane built-in) | ✅ |
| X-Plane Plugin | 🚧 In progress |
| Analytics / InfluxDB dashboards | 🚧 In progress |
This project is part of an academic research initiative. For more information, visit the professor's page: