Skip to content

FRAME-26/Homer

Repository files navigation

Autonomous AI Production Director

AI-driven autonomous camera switching and live production direction — Hackathon MVP

A monorepo project that closes the loop from mobile camera capture → backend signaling → director console preview, built on a four-layer architecture:

  • Capture — Browser getUserMedia camera acquisition
  • Platform — FastAPI WebSocket signaling + SQLite persistence
  • AI & Direction — Simulated AI director with 2.5s debounce switching
  • Production — Next.js multiview operator console

Project Structure

/
├── packages/
│   ├── frontend/             # Next.js 14 director console + camera page
│   │   └── app/
│   │       ├── camera/       # Camera capture page (?role=camera)
│   │       └── director/     # Director console (?role=director)
│   ├── backend/              # FastAPI signaling + API + SQLite
│   │   └── app/
│   │       ├── api/          # REST routes
│   │       ├── models/       # SQLAlchemy ORM models
│   │       ├── services/     # Director rule engine
│   │       └── websocket/    # Connection manager
│   └── ai-service/           # Inference service (MVP placeholder)
│       └── src/
├── docker-compose.yml
└── README.md

Quick Start (Development)

Prerequisites

  • Node.js >= 18
  • pnpm (npm install -g pnpm) or npm
  • Python >= 3.10
  • Poetry (pip install poetry)

1. Start Backend

cd packages/backend
poetry install
poetry run uvicorn app.main:app --reload --port 8000

Backend runs at http://localhost:8000

2. Start Frontend

# From project root
cd packages/frontend
npm install
npx next dev --port 3000

Frontend runs at http://localhost:3000

3. Start AI Service (optional, MVP placeholder)

cd packages/ai-service
pip install -r requirements.txt
python -m src.main

AI service runs at http://localhost:8001

4. Docker Compose (one-click start)

docker-compose up -d

Access Points

Page URL Description
Home http://localhost:3000 Role selection + room ID input
Camera Feed http://localhost:3000/camera?room_id=xxx Camera capture with getUserMedia
Director Console http://localhost:3000/director?room_id=xxx Multiview switching panel

Usage Flow

  1. Open the home page, enter a room ID (e.g., room1)
  2. Click "Join as Camera" → Allow camera permissions → Enter a camera label (e.g., "Speaker") → Click Connect
  3. Open a new tab, enter the same room ID, click "Join as Director"
  4. The director console shows a multiview grid (MVP phase uses simulated feeds)
  5. Click "Manual Switch" to cycle through camera feeds
  6. Toggle "AI Auto Mode" — the program feed auto-switches every 2.5 seconds

Architecture

Four-Layer Separation

Camera (Capture) → WebSocket (Platform) → Director Engine (AI) → Operator Console (Production)

Code Annotation Convention

  • Core Infrastructure — Production-ready core infrastructure code
  • MVP Placeholder — Placeholder implementation, to be replaced in future iterations

Database Tables

Table Description
session Production rooms / sessions
camera Camera devices registered in a session
director_decision AI director decision history

Tech Stack

Layer Technology
Frontend Next.js 14 + TypeScript + TailwindCSS
Backend FastAPI + SQLAlchemy + SQLite
AI Python 3.10+ (ONNX model interface reserved)
Real-time WebSocket (signaling) + WebRTC (video)

Team

Role Name
Lead / Mastermind Caeser
Team Member N/A
Team Member N/A

Organization: FRAME-26

Future Scope (Post-MVP)

  • Cross-camera person re-identification (Re-ID)
  • Virtual PTZ cropping
  • Physical PTZ control
  • OBS auto-control integration
  • ONNX model inference
  • PostgreSQL migration
  • Local recording / playback

About

AUTONOMOUS AI PRODUCTION DIRECTOR

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors