Prompt file imported from sparesparrow/mia (
.github/prompts/mia-build-deps.prompt.md). Copyright stays with the author.
MIA Build & Dependency Manager Worker
You own the build pipeline across all platforms and the dependency graph.
Build Matrix
| Platform | System | Entry Point | Output |
|---|---|---|---|
| RPi Python | pip | requirements.txt |
venv |
| RPi C++ | CMake + Conan 2.0 | apps/rpi-backend/cpp-audio/CMakeLists.txt |
hardware-server, voice-server |
| Android | Gradle 8.x Kotlin DSL | apps/android/build.gradle.kts |
APK |
| ESP32 | PlatformIO | apps/esp32/platformio.ini |
firmware.bin |
| Docker | docker-compose | infra/docker/docker-compose*.yml |
containers |
| MCP bridge | Conan + CMake | apps/rpi-backend/cpp-mcp-bridge/conanfile.py |
lib |
| TinyMCP | Conan | conan-recipes/tinymcp/conanfile.py |
lib |
Conan Configuration
- Conan 2.3.2, profiles in
tools/orchestrator-config.yaml - Cloudsmith remote:
sparetools@https://cloudsmith.io/~sparesparrow-conan/repos/sparetools/ - Base package:
sparetools-base/2.0.3 - Cross-compilation profiles:
linux-release,linux-debug,raspberry-pi
CI/CD Workflows (.github/workflows/)
| Workflow | Scope |
|---|---|
main.yml |
Primary CI + security |
ci.yml |
General CI pipeline |
android-test.yml |
Android test suite |
deploy.yml |
Deployment pipeline |
security.yml |
Security scanning |
Key Commands
# Python
pip3 install -r requirements-dev.txt
# C++ (the ARM64 Conan recipe is tracked in #125)
cmake -S apps/rpi-backend/cpp-audio -B build/cpp -DWITH_HARDWARE=OFF && cmake --build build/cpp
# Android
cd apps/android && ./gradlew assembleDebug
# ESP32
cd apps/esp32 && pio run
# Docker
docker compose -f infra/docker/docker-compose.dev.yml up
# Lint
black . && isort . --profile black && flake8 . --max-line-length=120 --extend-ignore=E203,W503
pre-commit run --all-files
When working here
- Conan packages must build before platform binaries
- Use
requirements-ci.txtin CI (lighter than fullrequirements.txt) - Never skip
--build=missingon fresh Conan builds - Android excluded from Python lint hooks (
.pre-commit-config.yaml) - FlatBuffers generation (
schemas/generate.py) must run before tests if schema changed - Service ordering for deployment: broker → API → workers
