MiQ, short for Machine Instruction Query, is a desktop assistant that combines a Java Swing client with a FastAPI backend. The project focuses on voice-driven interaction, intent classification, shortcut management, and local AI-assisted responses.
- Voice-triggered desktop assistant flow
- Intent detection for actions such as open, add, remove, list, chat, and exit
- User shortcut management backed by a database
- Local chat integration support for private/offline experimentation
- Java desktop UI paired with a Python AI/API backend
frontend/: Java 21 Swing desktop appbackEnd/: FastAPI backend, database access, and AI integration
- Frontend: Java 21, Maven, Vosk, JNativeHook
- Backend: Python, FastAPI, SQLAlchemy, Transformers, RapidFuzz
- Local AI tooling: Hugging Face Transformers, optional GGUF chat model flow
- Create and activate a Python virtual environment.
- Install dependencies:
cd backEnd
pip install -r ai/requirements.txt- Start the API server:
uvicorn main:app --reloadIf you have a locally exported intent model, point the app to it with MIQ_MODEL_DIR. Chat GGUF assets can be downloaded locally with the helper in backEnd/ai/download_chat_model.py.
- Install Java 21 and Maven.
- Add any local runtime assets you want to use under
frontend/lib/such as Vosk models and optional jars. - Start the desktop app:
cd frontend
powershell -ExecutionPolicy Bypass -File .\run-dev.ps1The included icon and activation sound now load from the project directory instead of a machine-specific path.
- Dataset files are intentionally excluded from version control.
- Large trained model folders, generated output, IDE files, and caches are ignored.
- Some runtime assets are expected to be restored locally instead of being committed.