Milimo System Architect Skill

SkillMedia

Provides 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.

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

  1. Split Architecture:

    • Frontend: React 18, Vite, TypeScript.
    • Backend: Python 3.10+, FastAPI, SQLModel (SQLite).
    • Microservice: SAM 3 runs on port 8001 as a separate, isolated backend service for object tracking and segmentation.
  2. 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 useShallow selectors and transient updates (store .getState() references in useRef for 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).
  3. Job Management & SSE (Backend/Frontend Sync):

    • Long-running generation/inpainting tasks are offloaded to BackgroundTasks in FastAPI.
    • The backend job_utils.py tracks active jobs in a global mapping and broadcasts progress via Server-Sent Events (SSE).
    • The frontend SSEProvider.tsx listens for progress, complete, error, and cancelled events, syncing status directly to the Shot or corresponding Element.
    • On page load, jobPoller.ts triggers one-shot queries to /status/{lastJobId} to hydrate active state from the database.
  4. Multi-Track Playback Loop:

    • Playback is driven by a headless requestAnimationFrame loop in PlaybackEngine.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).

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 to schemas.py and database.py.
  • Handling Progress: Any task that takes longer than 2 seconds MUST log a Job to the DB and broadcast progress via job_utils.broadcast_progress. Provide actionable progress messages.
  • Microservice Integration: When calling SAM 3, do not import its modules. Make HTTP requests via InpaintingManager or TrackingManager to 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.ts dictates 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"] and raise 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