Docs

How to run FrameloopOS locally.

This is the operating manual for the current local cockpit: what it records, how to run it, what the empty states mean, and how to verify the system before you trust a render pass.

Getting started

Launch the local cockpit.

FrameloopOS is still local-first. The UI is a production surface over manifest state, not a cloud app.

Run it
pnpm typecheck
pnpm build
PORT=5175 pnpm start

# hot reload while developing:
PORT=5175 pnpm dev

Then open http://localhost:5175. If 5175 is occupied, pick another free localhost port. The root scripts delegate into orchestrator/; direct equivalents are pnpm --dir orchestrator start and pnpm --dir orchestrator dev.

What loads

The UI scans known roots for frameloop.json projects, then renders the selected project with a status strip, workbench shot board, selected-shot inspector, and observational copilot rail.

Project types

What Frameloop actually produces today.

Three project-type plugins are registered in the orchestrator, each a self-contained action set — not a roadmap slide.

Music video

Song + concept -> shot list -> Seedance generation -> watermark scrub -> mux -> 16:9/9:16/1:1 masters.

  • regenerate_shot
  • scrub_all
  • mux_all
  • assemble_master
  • generate_portrait
  • build_gallery
  • dub stub
Essay video

Markdown script + narration -> compiled shots (NASA / motion / Manim / citation / local sources) -> takes -> master mux with music ducking.

  • compile_script
  • resolve_shot
  • render_shot
  • assemble_takes
  • assemble_master
  • review
Social clip batch

Long-form source -> transcript-aligned clip mining -> themed frame generation -> caption burn-in -> contact sheet -> vertical export packaging.

  • ingest_source
  • transcribe_source
  • propose_clips
  • approve_cuts
  • generate_theme_assets
  • approve_theme
  • render_batch
  • build_contact_sheet
  • package_exports
Cockpit tour

The current surfaces.

Everything visible in the cockpit must be backed by manifest or ledger state. Empty states are intentional; they mean the workflow has not recorded that class of event yet.

Status strip

Summarizes project health, shot completion, review warnings, attempt counts, failure counts, fallback counts, and paid/planned ledger totals.

Status stripreal-data summary
01project status / shots done
02review warnings / attempt records
03failed attempts / fallback count
04manifest budget + paid/planned ledger totals
Selected-shot inspector

Shows the prompt, refs, outputs, attempt history, provider routes, review gates, export readiness, provenance, and explicit action buttons for the selected shot.

Selected shotattempt + route detail
01provider / model / status
02created / updated timestamps
03cost rows: paid, planned, refunded
04artifact refs, log refs, notes, errors
Ledger semantics

What the new records mean.

The ledger turns the manifest into production memory. It records what happened, what it cost, and what the operator should trust.

RecordPurposeCurrent usage
attemptsExecution history, costs, artifacts, failures, fallback notes.Action jobs write attempts automatically; portrait generation enriches them with real OpenAI accounting.
provider_routesWhy a provider/model was selected and what it was expected to cost.Dreamina stub and OpenAI portrait path now write selected routes.
review_gatesPreflight/output/export review verdicts.Essay review now records an output gate and links RENDER_REPORT.md.
provenance_recordsSource/license trace for reusable assets.Schema/UI support is present; workflows should start filling it next.
How to test

Smoke tests before trusting a release.

Run code checks first, then verify behavior in the browser with a real project selected.

Code verification
pnpm verify

# or run the pieces:
pnpm --dir orchestrator exec bun test src/shared/manifest-ledger.test.ts
pnpm --dir orchestrator typecheck
pnpm --dir orchestrator build
pnpm --dir site verify
Browser checklist
  • Project loads without a blank screen.
  • Status strip, inspector, and copilot rail render.
  • Selecting a different shot updates the inspector.
  • If an attempt exists, its timestamps/costs/refs render.
  • No console/page errors during the interaction.
Known gaps

What still needs to land

Real provider execution for more routes, enforced review gates, a global asset brain, speaker-documentary mode, and public-proof screenshots from the local cockpit once the browser automation path is stable.

Operator note

Empty states are receipts too.

If the cockpit says “Not recorded yet,” the system is telling the truth: that part of the workflow has not written a durable record. The right fix is to teach the action to write the ledger, not to hide the gap.