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.
- 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
- 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.
| 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). |
| 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.
-
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 .env
Key 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.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 dev
Interface runs at http://localhost:3000 with hot-reload.
-
Build:
yarn build
-
Local preview:
yarn preview
-
For custom hosting, serve the Nuxt directory (
yarn start).
For speech output without OpenAI:
pip install "piper-tts[http]"
piper-http-server --port 5001Set USE_PIPER=true and adjust PIPER_PORT.
Model ID (SPEECH_MODEL_ID) can also be set in .env.
Local models via WSL+Docker is planned but not yet implemented. Placeholders and TODOs exist in the code.
app/ # Nuxt frontend (pages, components, stores)
server/ # API routes, services, utilities (ATC, Auth, LLM)
shared/ # Shared types and helpers
content/ # Markdown news & CMS content
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!