Detlef reported that the prompt for a blank (e.g. "runway") often ended up on the line above the input itself, forcing him to look back up to remember what he was typing. Each preceding text segment is now paired with its following input field into a `.cloze-group`. The group uses `inline-flex; flex-wrap: nowrap` so its label and input stay on one line, while the outer `.cloze` container still wraps groups normally. On narrow viewports (<640px) the group falls back to wrapping internally so it never overflows. Co-Authored-By: Claude Opus 4.7 <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). |
| 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, Auth, LLM)
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!