Enterprise-grade OTA firmware management platform with canary deployments and real-time fleet monitoring.
A premium firmware fleet management platform for orchestrating OTA updates across device groups with canary deployment support. Built with React, FastAPI, and PostgreSQL—featuring real-time telemetry, rollout monitoring, and a high-end "LumaOS" interface.
- 🚀 Canary Deployments: Test firmware updates on small device groups before full rollout
- 📊 Real-time Monitoring: Live dashboard with fleet health metrics and deployment status
- 🎯 Targeted Updates: Deploy to specific device groups (canary, stable, custom segments)
- 📦 Version Management: Upload, manage, and track firmware releases with changelogs
- 🔍 Device Inventory: Comprehensive view of all devices with filtering and search
- ⚡ Modern UI: Premium "LumaOS" interface with glassmorphism and smooth animations
- 🔄 Auto-rollback: Safety mechanisms for failed deployments
- 📈 Analytics: Deployment success rates and device health metrics
- React 19 - UI framework
- Vite - Build tool and dev server
- TailwindCSS v3 - Utility-first styling
- Framer Motion - Smooth animations
- Lucide React - Icon library
- Axios - HTTP client
- Python 3.13 - Runtime
- FastAPI - Modern async API framework
- SQLAlchemy - ORM for database operations
- Uvicorn - ASGI server
- Pydantic - Data validation
- SQLite (Development) - File-based database
- PostgreSQL (Production-ready) - Swap via
DATABASE_URLenv var
- Node.js 18+ and npm
- Python 3.13+
- Git
git clone https://github.com/pradyumnakr/Firmware-Fleet-Manager.git
cd Firmware-Fleet-Manager# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r backend/requirements.txt# Install dependencies
npm installsource venv/bin/activate
uvicorn backend.main:app --reloadThe API will be available at http://localhost:8000
API Documentation: http://localhost:8000/docs
npm run devThe UI will be available at http://localhost:5173
curl -X POST http://localhost:8000/seedFirmware-Fleet-Manager/
├── backend/
│ ├── main.py # FastAPI application entry
│ ├── database.py # Database connection
│ ├── models.py # SQLAlchemy models
│ ├── schemas.py # Pydantic schemas
│ ├── logic.py # Deployment distribution logic
│ └── requirements.txt # Python dependencies
├── database/
│ └── schema.sql # SQL schema (PostgreSQL)
├── src/
│ ├── components/
│ │ ├── Dashboard.jsx # Overview page
│ │ ├── Devices.jsx # Fleet inventory
│ │ ├── Firmware.jsx # Version management
│ │ └── Deployments.jsx # Rollout console
│ ├── App.jsx # Main layout & routing
│ ├── api.js # Axios configuration
│ └── index.css # Global styles
├── public/ # Static assets
└── package.json # Node dependencies
| Method | Endpoint | Description |
|---|---|---|
| GET | / |
API health check |
| GET | /devices |
List all devices |
| POST | /devices |
Register new device |
| GET | /firmwares |
List firmware versions |
| POST | /firmwares |
Upload new firmware |
| POST | /deploy |
Trigger deployment |
| GET | /stats |
Fleet statistics |
| POST | /seed |
Seed sample data |
Create a .env file in the project root:
# Database (optional - defaults to SQLite)
DATABASE_URL=postgresql://user:password@localhost:5432/fleet_db
# API Settings
API_HOST=0.0.0.0
API_PORT=8000- Install PostgreSQL
- Create database:
createdb fleet_db - Run schema:
psql fleet_db < database/schema.sql - Set
DATABASE_URLin.env - Install driver:
pip install psycopg2-binary
- Add Devices: Use
/seedendpoint or manually create devices - Upload Firmware: Go to "Firmware" tab, create version (e.g.,
v2.0.0) - Deploy to Canary:
- Navigate to "Deployments"
- Select firmware version
- Choose "Canary Group"
- Click "Initialize Sequence"
- Monitor: Check "Dashboard" for deployment status
- View Fleet: Go to "Fleet" tab to see updated devices
npm run buildOutput: dist/ folder
uvicorn backend.main:app --host 0.0.0.0 --port 8000Use any static file server:
npx serve dist -p 3000Or deploy to:
- Vercel (Frontend)
- Railway/Render (Backend)
- AWS EC2/DigitalOcean (Full Stack)
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
Pradyumna K R
- GitHub: @pradyumnakr
- Built for Tesla Low Voltage Software Team workflows
⭐ Star this repo if you find it helpful!



