Forge reasons about physical scenes and generates the failures your training data missed. One real moment becomes a branching set of physics-verified futures, delivered inside iMessage.
+1-415-FORGE-01Every other video model is one-shot. Prompt in, pray, accept whatever comes out. Forge runs a closed loop: scene reasoning proposes branches, generation renders them, reasoning verifies them, failures regenerate. Chain-of-thought, but for video.
actors: [ { id: "forklift_01", speed: 8.1 }, { id: "worker_02", speed: 1.2 } ] occlusion: "pallet_stack_02" ttc_est: 2.3
branches: [ { type: "unsafe", prompt: "forklift approaches corner at..." }, { type: "safe", prompt: "forklift decelerates at 1.4s..." } ]
model: "seedance-2.0" mode: "image_to_video" anchor: "frame_0247.jpg" duration: 4.0 resolution: "720p" native_audio: true shots: 1
verifier: "ionrouter/qwen-vl" physics_check: "pass" intent_match: 0.91 rules: ["OSHA 29 CFR 1910.178"] verdict: "verified"
Forge is not three products. It is one closed-loop primitive that accepts different inputs. Real footage becomes counterfactual futures. Robot demos become adversarial test cases. Text scenarios become labeled synthetic datasets. The engine is the same.
The difference between a wrapper and a system. Forge does not ship the first generation it produces. An independent verifier inspects each branch for physics violations, intent mismatch, and rule compliance. Rejected clips regenerate. You only see what passed.
A live view into Forge's scenario bank. Every branch generated, every verification pass, every rejection. Because the reasoning is structured, your synthetic data comes with provenance that holds up in a code review or a compliance audit.
Every scene analysis is a JSON risk tree. Every generation ships with its reasoning trace. Every verification record is queryable. You can reject bad branches in code, not by re-prompting.
// Cosmos Reason 2 output for frame 0247
{
"scene_id": "wh_0042_f0247",
"actors": [
{ "id": "forklift_01",
"speed_kmh": 8.1,
"heading": 32 },
{ "id": "worker_02",
"speed_kmh": 1.2,
"heading": 218 }
],
"risk_factors": [
"blind_corner",
"occlusion:pallet_stack_02",
"no_audible_warning"
],
"ttc_est_s": 2.3,
"intervention_window_s": 0.8,
"verdict": "high_risk_near_miss"
}# 1. Submit a clip curl -X POST forge.ai/v1/scenarios \ -H "Authorization: Bearer $KEY" \ -F "clip=@warehouse_0042.mp4" \ -F "mode=nearmiss" \ -F "branches=2" # 2. Stream the branches back curl forge.ai/v1/scenarios/sk_8f4b2/stream # Response (streamed): event: scene_analysis event: branch_prompt (x2) event: generation_start (x2) event: verification (x2) event: branch_complete (x2)
+1-415-FORGE-01 in iMessage.6s.120s.