Milimo System Architect Skill
SkillMediaProvides deep expertise on the Milimo Video system architecture, including the split React/FastAPI design, Zustand God Store, Server-Sent Events (SSE) job tracking, and the SAM 3 microservice integration. Use this when you are adding new features that cross the frontend/backend boundary, modifying database schemas, or debugging state synchronization issues.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Milimo System Architect Skill skill
What this skill tells your AI
The instructions your AI receives, as published by mainza-ai/milimovideo in skills/skills/milimo-system-architect/SKILL.md and read by ahel’s review.
As an expert on the Milimo Video system architecture, you understand how the React/Vite frontend communicates with the FastAPI backend to orchestrate the AI Cinematic Studio.
Core Architectural Understanding
-
Split Architecture:
- Frontend: React 18, Vite, TypeScript.
- Backend: Python 3.10+, FastAPI, SQLModel (SQLite).
- Microservice: SAM 3 runs on port
8001as a separate, isolated backend service for object tracking and segmentation.
-
The God Store Pattern (Frontend State):
- The application relies on a massive Zustand store (
timelineStore.ts) built from 7 slices: Project, Shot, Playback, UI, Track, Element, Server. - CRITICAL: Never add new React Contexts for global state. Always add to the appropriate Zustand slice.
- Performance is maintained via
useShallowselectors and transient updates (store.getState()references inuseReffor render loops). - The timeline relies on a "Magnetic V1" layout: Track 0 (V1) items snap together sequentially. V2 and A1 tracks use free placement (
startFrame).
- The application relies on a massive Zustand store (
-
Job Management & SSE (Backend/Frontend Sync):
- Long-running generation/inpainting tasks are offloaded to
BackgroundTasksin FastAPI. - The backend
job_utils.pytracks active jobs in a global mapping and broadcasts progress via Server-Sent Events (SSE). - The frontend
SSEProvider.tsxlistens forprogress,complete,error, andcancelledevents, syncing status directly to the Shot or corresponding Element. - On page load,
jobPoller.tstriggers one-shot queries to/status/{lastJobId}to hydrate active state from the database.
- Long-running generation/inpainting tasks are offloaded to
-
Multi-Track Playback Loop:
- Playback is driven by a headless
requestAnimationFrameloop inPlaybackEngine.tsx. - Audio sync is handled by
GlobalAudioManager.ts(Web Audio API) to bypass Safari media tag drift. Do not use<audio>elements for timeline tracks. - Video elements (
CinematicPlayer.tsx) listen to the store via strict drift-correction thresholds (250ms).
- Playback is driven by a headless
Guidelines for Feature Implementation
- Adding an Endpoint: Create it in the appropriate router domain (
projects.py,jobs.py,assets.py,elements.py,storyboard.py). Wire it toschemas.pyanddatabase.py. - Handling Progress: Any task that takes longer than 2 seconds MUST log a
Jobto the DB and broadcast progress viajob_utils.broadcast_progress. Provide actionable progress messages. - Microservice Integration: When calling SAM 3, do not import its modules. Make HTTP requests via
InpaintingManagerorTrackingManagerto localhost:8001.
Rules
- No Canvas Rendering for NLE: The timeline must remain DOM-based CSS rendering. Do not attempt to rewrite the timeline in HTML5 Canvas.
- Maintain Single Source of Truth:
timelineStore.tsdictates the state. Local component state is only for transient UI interactions (e.g. dragging, hover states). - Graceful Cancellation: All long-running tasks must periodically check
active_jobs[job_id]["cancelled"]andraise RuntimeError("Cancelled")to free GPU resources.
Signals
- GitHub stars
- 85
- Forks
- 19
- Last commit
- Mar 2026
Advanced
- Catalog kind
- skill
- Gateway key
milimo-system-architect- Source
- github.com/mainza-ai/milimovideo