Edition 01 / Vol. IColumbus, OH · 41.0°N

AI Video Analysis Agent

The state-of-the-art AI video analysis agent.

Upload any video, ask anything. Gemini 2.5 Flash for timestamped structure, Whisper for voice, on React 19 and tRPC 11. Neural Noir design.

  • TypeScript 5.9
  • React 19
  • Vite 7
  • tRPC 11
  • Drizzle ORM
  • MIT License

01 / Why Ellie

Understand media without scrubbing timelines by hand.

Ellie is a video intelligence agent for people who need to understand media without scrubbing timelines by hand. Upload a video, let Gemini 2.5 Flash produce timestamped structure, then ask natural-language questions over the generated context. The experience is deliberately Neural Noir: dark, cinematic, fast, and agentic without hiding the engineering underneath.

Product BoxWhat It DoesCurrent Implementation
Video IntelligenceConverts media into summaries, scenes, frames, audio events, and emotions.analysis.analyze calls Gemini 2.5 Flash through the LLM gateway.
Ask Anything ChatAnswers questions against video analysis with timestamp-aware responses.chat.send uses browser-held history plus persisted analysis context.
Voice InputTurns recorded audio into text before it enters the assistant surface.voice.transcribe calls Whisper-compatible speech-to-text.
Typed Product CoreKeeps client and server contracts aligned as the agent surface evolves.React 19 consumes an Express/tRPC 11 backend with shared TypeScript.
Deployment BaselineShips with validation scripts, Docker packaging, and health probes.pnpm ci, Dockerfile, /api/health, /api/readiness, /api/ready.

02 / Capabilities

Six surfaces. One agent.

The README is product-forward, but the repository is not a mockup. The core routes implement upload, multimodal analysis, chat, transcription, session helpers, and operational readiness endpoints.

SurfaceRoute or ModuleLimits and Behavior
Uploadvideo.uploadAccepts MP4, WebM, MOV, and AVI as base64 payloads up to 100 MB.
Analyzeanalysis.analyzeProduces structured JSON results with type, timestamp, content, and confidence.
Retrieve Resultsanalysis.resultsReads persisted analysis rows for a video from the Drizzle/MySQL data layer.
Chatchat.sendAnswers against stored analysis context with ephemeral browser-side chat history.
Transcribevoice.transcribeAccepts WebM, MP3, WAV, OGG, M4A, and MPEG audio up to 16 MB via Whisper.
Systemsystem.*Exposes health and readiness signals for smoke tests and deployment probes.

03 / Architecture

Heavy client. Thin orchestration boundary.

Ellie uses a heavy-client, thin-orchestration backend model. The browser owns the immediate product feel and ephemeral conversation memory. The backend owns the safe boundary for uploads, storage, provider calls, persistence, rate limits, and readiness checks.

request flow

  1. browser
  2. trpc
  3. express
  4. gateway
  5. gemini
  6. drizzle
BoundaryResponsibilityWhy It Exists
Client Agent UIUpload flow, video workspace, chat state, visual feedback.Preserves speed and keeps short-lived interaction state near the user.
tRPC ContractTyped procedure calls between browser and server.Reduces drift between frontend assumptions and backend behavior.
Express RuntimeProvider calls, storage writes, DB updates, rate limits, sessions.Keeps secrets and operational state out of the browser.
Data PlaneUsers, videos, analysis results, conversations, and messages.Gives the product durable entities without overbuilding the first agent milestone.
Provider GatewayGemini 2.5 Flash chat/completions and Whisper transcription.Centralizes AI access behind environment-managed credentials.
Operations SurfaceHealth, readiness, production validation, Docker packaging.Makes the repository deployable and reviewable by maintainers.

04 / Stack

TypeScript across the product boundary.

Modern, but intentionally familiar. React and Vite for the browser, Express and tRPC for the API, Drizzle and MySQL for persistence, Forge-compatible helpers for Gemini and Whisper.

LayerTechnologyVersion or Track
LanguageTypeScript5.9.3
FrontendReact, React DOM, Vite19.2.x, 7.x
Design SystemTailwind CSS, Radix UI, framer-motion4.x, Radix primitives, 12.x
Routing + Datawouter, TanStack Query, tRPC React Query3.x, 5.x, 11.6.x
Backend RuntimeNode.js, ExpressExpress 4.21.x
API ContracttRPC server/client11.6.x
DatabaseDrizzle ORM, mysql20.44.x, 3.15.x
ValidationZod4.1.x
AI + VoiceGemini 2.5 Flash, Whisper-compatible STTProvider-gateway configured
Testing + QualityVitest, Prettier, TypeScript compiler2.1.x, 3.6.x, 5.9.3
PackagingDocker, Docker ComposeRepository-defined
Package Managerpnpm10.15.1

05 / Run Locally

One pnpm workflow. Six commands to a dev server.

Configure environment values first, install with the lockfile, then run the TypeScript server in development mode.

zsh · elliev1.0.0 · MIT
01$ gh repo clone Alexi5000/Ellie
02$ cd Ellie
03$ pnpm install --frozen-lockfile
04$ cp .env.example .env
05$ pnpm validate:env
06$ pnpm dev
Clone on GitHubBring your own keys. Self host.
CommandPurpose
pnpm devDevelopment server with TypeScript watch.
pnpm checkTypeScript no-emit gate.
pnpm testRuns the Vitest suite.
pnpm buildVite client and bundled server runtime.
pnpm validate:envChecks required local environment configuration.
pnpm validate:env:productionChecks production-only environment requirements.
pnpm ciRuns the full repository validation sequence.
pnpm startRuns the built production server from dist/.

06 / Operations

Prepared for review, not just screenshots.

Ellie ships with a root Dockerfile, a Compose file, CI-compatible scripts, environment validation, and liveness/readiness endpoints. Some GitHub workflow checks depend on repository-level secrets and permissions, so local validation remains the authoritative green gate until those secrets are configured.

GateCommand or EndpointExpected Signal
Installpnpm install --frozen-lockfileLockfile-consistent dependency graph.
Environmentpnpm validate:envRequired local variables are accounted for.
Production Envpnpm validate:env:productionProduction-only variables are accounted for.
Typespnpm checkTypeScript passes without emitting files.
Testspnpm testVitest suite completes.
Buildpnpm buildVite client and server bundle are generated.
Full Local Gatepnpm ciEnvironment, types, tests, and build pass together.
HealthGET /api/healthRuntime liveness response.
ReadinessGET /api/readiness | /api/readyDependency-aware deployment probe.

07 / Roadmap

The next step is deeper production orchestration.

Ellie's current shape is intentionally lean: strong browser experience, typed backend orchestration, persisted analysis, and real provider calls.

  1. 01 / Trackplanned

    Durable Conversations

    Persist chat threads and add source-linked answer citations.

  2. 02 / Trackplanned

    Processing Queue

    Move long-running video analysis into workers with retry telemetry.

  3. 03 / Trackplanned

    Signed Uploads

    Replace the base64 upload flow with direct-to-storage signed URLs.

  4. 04 / Trackplanned

    Provider Observability

    Track model, prompt version, latency, token usage, and failure mode.

  5. 05 / Trackplanned

    Tenant Readiness

    Add organizations, roles, audit logs, and retention policies.

  6. 06 / Trackplanned

    Evaluation Harness

    Golden-video tests for scene, transcript, frame, and chat quality.