diff --git a/apps/videos/src/compositions/x-launch/scenes/AiShowcaseScene.tsx b/apps/videos/src/compositions/x-launch/scenes/AiShowcaseScene.tsx
new file mode 100644
index 00000000..01a4b9b0
--- /dev/null
+++ b/apps/videos/src/compositions/x-launch/scenes/AiShowcaseScene.tsx
@@ -0,0 +1,142 @@
+import type React from "react";
+import { AbsoluteFill, interpolate, Sequence, useCurrentFrame } from "remotion";
+import { BeforeAfter } from "@/components/BeforeAfter";
+import { ClipReveal } from "@/components/ClipReveal";
+import { PhotoPlaceholder } from "@/components/PhotoPlaceholder";
+import { COLOR } from "@/lib/colors";
+import { FONT } from "@/lib/fonts";
+
+const Checkerboard: React.FC<{ width: number; height: number }> = ({ width, height }) => (
+
+);
+
+const BgRemovalDemo: React.FC = () => (
+ }
+ after={
+
+ }
+ scanStartFrame={5}
+ scanDuration={40}
+ width={400}
+ height={300}
+ />
+);
+
+const UpscaleDemo: React.FC = () => {
+ const frame = useCurrentFrame();
+ return (
+
+
+ {Array.from({ length: 16 }).map((_, i) => (
+
+ ))}
+
+
+ 4x
+
+
+
+ );
+};
+
+export const AiShowcaseScene: React.FC = () => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+ after={}
+ scanStartFrame={5}
+ scanDuration={40}
+ width={400}
+ height={300}
+ />
+
+
+
+
+ 15 AI models. Your hardware. No cloud.
+
+
+ );
+};
diff --git a/apps/videos/src/compositions/x-launch/scenes/HookScene.tsx b/apps/videos/src/compositions/x-launch/scenes/HookScene.tsx
new file mode 100644
index 00000000..0841eca4
--- /dev/null
+++ b/apps/videos/src/compositions/x-launch/scenes/HookScene.tsx
@@ -0,0 +1,36 @@
+import type React from "react";
+import { AbsoluteFill, interpolate, useCurrentFrame } from "remotion";
+import { ClipReveal } from "@/components/ClipReveal";
+import { COLOR } from "@/lib/colors";
+import { TEXT } from "@/lib/fonts";
+
+export const HookScene: React.FC = () => {
+ const frame = useCurrentFrame();
+ const glowOpacity = Math.sin(frame * 0.08) * 0.03 + 0.08;
+
+ return (
+
+
+
+
+
+ Your images.
+
+
+
+ Stay yours.
+
+
+
+ );
+};
diff --git a/apps/videos/src/compositions/x-launch/scenes/TerminalInstallScene.tsx b/apps/videos/src/compositions/x-launch/scenes/TerminalInstallScene.tsx
new file mode 100644
index 00000000..74eb6c76
--- /dev/null
+++ b/apps/videos/src/compositions/x-launch/scenes/TerminalInstallScene.tsx
@@ -0,0 +1,37 @@
+import type React from "react";
+import { AbsoluteFill } from "remotion";
+import { Terminal } from "@/components/Terminal";
+
+const COMMAND = [
+ { text: "docker", color: "#ff7b72" },
+ { text: " run ", color: "#e6edf3" },
+ { text: "-p ", color: "#79c0ff" },
+ { text: "3000:3000", color: "#a5d6ff" },
+ { text: " ", color: "#e6edf3" },
+ { text: "snapotter/snapotter", color: "#7ee787" },
+];
+
+const OUTPUT = [
+ { text: "v2.4.0", color: "#f59e0b", delay: 0 },
+ { text: "49 tools loaded", color: "#7ee787", delay: 3 },
+ { text: "15 AI models ready", color: "#7ee787", delay: 6 },
+ { text: "✓ Server running on :3000", color: "#3fb950", delay: 9 },
+];
+
+export const TerminalInstallScene: React.FC = () => {
+ return (
+
+
+
+ );
+};
diff --git a/apps/videos/src/compositions/x-launch/scenes/ToolGridRevealScene.tsx b/apps/videos/src/compositions/x-launch/scenes/ToolGridRevealScene.tsx
new file mode 100644
index 00000000..0b1db34e
--- /dev/null
+++ b/apps/videos/src/compositions/x-launch/scenes/ToolGridRevealScene.tsx
@@ -0,0 +1,47 @@
+import type React from "react";
+import { AbsoluteFill, interpolate, useCurrentFrame } from "remotion";
+import { Counter } from "@/components/Counter";
+import { ToolGrid } from "@/components/ToolGrid";
+import { COLOR } from "@/lib/colors";
+import { TEXT } from "@/lib/fonts";
+
+export const ToolGridRevealScene: React.FC = () => {
+ const frame = useCurrentFrame();
+
+ const gridOpacity = interpolate(frame, [0, 20], [0, 1], {
+ extrapolateLeft: "clamp",
+ extrapolateRight: "clamp",
+ });
+
+ return (
+
+
+
+
+
+
+
+
+
+ );
+};