The initial active frequency was only set via a hardcoded EDDF special-case (121.900); every other airport — and any arrival that begins on Center/Approach rather than Delivery — kept a stale/default active frequency. That triggered an immediate "check frequency" on the pilot's very first call (e.g. IFR enroute start: on 121.900 but Center expects 121.800). Now the radio is tuned to expectedFrequencyForState() for the start position when the session begins, so the first call is always on the right frequency and subsequent handoffs change to the correct next-position frequency. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
OpenSquawk
OpenSquawk is an open, cost-efficient AI-ATC platform for flight simulators. Built with Nuxt 4, it provides a web interface that combines training, radio communication, and classroom content for simulator pilots. On the server side, via Node.js Open AI deliver speech synthesis, decision trees, and account management. Goal: a community-driven alternative to other costly AI-ATC solutions while being open and extensible.
Current Features
- Modern web UI (Nuxt 4, Tailwind, Vuetify) with landing and classroom pages
- Server APIs for ATC logic, decision trees, classroom content, and authentication
- MongoDB storage
- OpenAI integration for speech and text models with configurable voices
- Optional local Speaches server for self-hosted speech in/output
Roadmap & Integrations
- Simulator Bridges: Planned connection to Microsoft Flight Simulator and X-Plane to receive live flight data. Implementation is scheduled but will take a few more months.
- SimBrief: Upcoming direct integration of SimBrief data (flight plans, briefings) for seamless cockpit dispatch info.
- VATSIM: No integration for now due to unclear licensing. We are monitoring the situation but will avoid coupling until approval is granted.
Requirements
| Component | Note |
|---|---|
| Node.js 22 | Specified in package.json. |
| Yarn | |
| MongoDB 7+ | Local instance or hosted database. Configure via MONGODB_URI. |
| ffmpeg | Needed for audio processing (fluent-ffmpeg), must be on the system PATH. |
| OpenAI API Key | For TTS and LLM calls (OPENAI_API_KEY). |
| Live ATC backend | The /pm Live ATC mode requires the Python decision backend (OpenSquawk-LiveATC-api). Point NUXT_PUBLIC_RADIO_BACKEND_URL at it (default http://127.0.0.1:8000). Other features run without it. |
| Optional: Piper TTS | For local speech (pip install "piper-tts[http]"). |
You can connect to any OpenAI-compatible (self-hosted or third-party) API by setting OPENAI_BASE_URL to the service's base URL.
Setup
-
Clone the repository:
git clone https://github.com/OpenSquawk/OpenSquawk.git cd OpenSquawk -
Enable corepack and install dependencies:
corepack enable yarn install -
Configure environment variables:
cp .env.example .envKey variables:
MONGODB_URI: MongoDB connection string (defaultmongodb://127.0.0.1:27017/opensquawk).JWT_SECRET&JWT_REFRESH_SECRET: Random strings for tokens.OPENAI_BASE_URL: Optional override for any OpenAI API–compatible service; defaults to the OpenAI platform when unset.OPENAI_API_KEY, optionalOPENAI_PROJECT,LLM_MODEL,TTS_MODEL,VOICE_ID.ATC_OUT_DIR: Directory for generated audio files.FLIGHTLAB_TTS_CACHE_DIR: Disk cache directory for FlightLab TTS audio (defaults to./.cache/flightlab-tts, git-ignored).USE_PIPER,PIPER_PORT: Enable local Piper TTS instance.- SMTP settings (
NOTIFY_*) if emails should be sent.
-
Start MongoDB and ensure
ffmpegis on the PATH. -
Launch the dev server:
yarn devInterface runs at http://localhost:3000 with hot-reload.
Production & Preview
-
Build:
yarn build -
Local preview:
yarn preview -
For custom hosting, serve the Nuxt directory (
yarn start).
Optional Local Speech Services
Piper TTS
For speech output without OpenAI:
pip install "piper-tts[http]"
piper-http-server --port 5001
Set USE_PIPER=true and adjust PIPER_PORT.
Model ID (SPEECH_MODEL_ID) can also be set in .env.
Local STT/TTS
Local models via WSL+Docker is planned but not yet implemented. Placeholders and TODOs exist in the code.
Project Structure
app/ # Nuxt frontend (pages, components, stores)
server/ # API routes, services, utilities (ATC TTS/STT, Auth, flow editor)
shared/ # Shared types and helpers
content/ # Markdown news & CMS content
Contributing & Community
We welcome issues, pull requests, and ideas—especially Nuxt/Node expertise, ATC knowledge, MSFS/X-Plane test flights, and infrastructure/cost optimization. Contact: info@opensquawk.de.
OpenSquawk thrives on community collaboration—priorities are set together. Join in!