> ## Documentation Index
> Fetch the complete documentation index at: https://hyperframes-codex-docs-human-first-refactor.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# What is HyperFrames?

> Tell an AI agent what you want. It builds a real, editable video project — you refine it in Studio and export the film.

export const ShowcaseWall = () => {
  const CDN = "https://static.heygen.ai/hyperframes-oss/docs/images/showcase";
  const FILMS = [{
    id: "grading",
    tile: "tile-grading-v2",
    full: "full-grading-4k-v2",
    title: "Colour grading and media effects",
    note: "Real footage graded with LUTs, curves, and scopes — inside Studio.",
    length: "48s"
  }, {
    id: "variables",
    title: "One shoot, many cuts",
    note: "The same footage rendered as several vertical videos from one project.",
    length: "44s"
  }, {
    id: "music",
    title: "Cut to the music",
    note: "A track analysed for beats and sections, then everything snapped to that grid.",
    length: "90s"
  }, {
    id: "prvideo",
    title: "A pull request, explained",
    note: "A code change turned into a review anyone on the team can watch.",
    length: "32s"
  }, {
    id: "timeline",
    title: "Editing on a timeline",
    note: "Trimming, splitting, and retiming a project by hand.",
    length: "34s"
  }, {
    id: "hypecard",
    title: "A year in review",
    note: "Personal data turned into a shareable card, generated per person.",
    length: "27s"
  }];
  const [openId, setOpenId] = useState(null);
  const [reduced, setReduced] = useState(false);
  useEffect(() => {
    const q = window.matchMedia("(prefers-reduced-motion: reduce)");
    setReduced(q.matches);
    const onChange = e => setReduced(e.matches);
    q.addEventListener("change", onChange);
    return () => q.removeEventListener("change", onChange);
  }, []);
  const open = FILMS.find(f => f.id === openId) || null;
  if (open) {
    return <div style={{
      margin: "1.5rem 0"
    }}>
        <video key={open.id} src={`${CDN}/${open.full || `full-${open.id}`}.mp4`} poster={`${CDN}/${open.tile || `tile-${open.id}`}.jpg`} controls autoPlay playsInline style={{
      width: "100%",
      display: "block",
      borderRadius: "12px",
      background: "#000",
      margin: 0
    }} />
        <div style={{
      display: "flex",
      alignItems: "baseline",
      justifyContent: "space-between",
      gap: "1rem",
      marginTop: "0.6rem",
      flexWrap: "wrap"
    }}>
          <span style={{
      fontSize: "0.875rem",
      opacity: 0.75
    }}>
            <strong>{open.title}</strong> · {open.length} · made with HyperFrames
          </span>
          <button type="button" onClick={() => setOpenId(null)} style={{
      fontSize: "0.8125rem",
      padding: "0.35rem 0.7rem",
      borderRadius: "7px",
      border: "1px solid currentColor",
      background: "transparent",
      color: "inherit",
      opacity: 0.7,
      cursor: "pointer"
    }}>
            ← Back to all films
          </button>
        </div>
      </div>;
  }
  return <div style={{
    display: "grid",
    gridTemplateColumns: "repeat(auto-fit, minmax(240px, 1fr))",
    gap: "0.85rem",
    margin: "1.5rem 0"
  }}>
      {FILMS.map(film => <button key={film.id} type="button" onClick={() => setOpenId(film.id)} aria-label={`Play ${film.title}, ${film.length}, with sound`} style={{
    display: "block",
    width: "100%",
    padding: 0,
    border: "1px solid rgba(128,128,128,0.28)",
    borderRadius: "11px",
    overflow: "hidden",
    background: "transparent",
    color: "inherit",
    textAlign: "left",
    cursor: "pointer"
  }}>
          <video src={reduced ? undefined : `${CDN}/${film.tile || `tile-${film.id}`}.mp4`} poster={`${CDN}/${film.tile || `tile-${film.id}`}.jpg`} autoPlay={!reduced} muted loop={!reduced} playsInline preload="metadata" style={{
    width: "100%",
    aspectRatio: "16 / 9",
    objectFit: "cover",
    display: "block",
    background: "#000",
    margin: 0
  }} />
          <span style={{
    display: "block",
    padding: "0.7rem 0.85rem 0.85rem"
  }}>
            <span style={{
    display: "block",
    fontWeight: 600,
    fontSize: "0.9375rem"
  }}>
              {film.title}
            </span>
            <span style={{
    display: "block",
    fontSize: "0.8125rem",
    opacity: 0.7,
    marginTop: "0.15rem"
  }}>
              {film.note}
            </span>
            <span style={{
    display: "block",
    fontSize: "0.75rem",
    opacity: 0.55,
    marginTop: "0.35rem"
  }}>
              ▶ Play with sound · {film.length}
            </span>
          </span>
        </button>)}
    </div>;
};

<Frame caption="A website goes in; HyperFrames plans it, builds it, and renders the film. The finished launch film, made with HyperFrames — press play for sound.">
  <video className="aspect-video w-full object-cover bg-zinc-100 dark:bg-zinc-900" src="https://static.heygen.ai/hyperframes-oss/docs/images/showcase/hero-web2vid-v2.mp4" poster="https://static.heygen.ai/hyperframes-oss/docs/images/showcase/hero-web2vid-v2.jpg" autoPlay muted loop playsInline controls preload="metadata" />
</Frame>

Start from an idea, a website, a script, a recording, a pull request, or a song. The agent does the first build. You keep control of the result.

## From request to video

<Steps>
  <Step title="Describe it">
    Tell the agent what the viewer should understand, feel, or do — and attach a source if you have one.
  </Step>

  <Step title="Approve the direction">
    The agent confirms the creative choices before it spends time building.
  </Step>

  <Step title="Refine it in Studio">
    The first version opens as a real project, not a flattened export. Scenes, timing, text, media, and animation all stay editable — change what you can point at, or ask the agent for a broader revision.
  </Step>

  <Step title="Export">
    Render a standard video, a transparent overlay, a high-resolution file — or keep it as a navigable presentation.
  </Step>
</Steps>

## What can it make?

Every one of these is a finished film made with HyperFrames. Each tile plays silently where it sits — click one to watch it properly, with sound.

<ShowcaseWall />

There is a path for each kind of video:

<CardGroup cols={2}>
  <Card title="Product and website videos" icon="rocket" href="/guides/product-launch-video">
    Launches, tours, and promos built from a real product interface.
  </Card>

  <Card title="Visual explainers" icon="lightbulb" href="/guides/faceless-explainer">
    Notes, articles, and hard ideas turned into a visual story.
  </Card>

  <Card title="Captions and recuts" icon="closed-captioning" href="/guides/captions-and-recuts">
    Subtitles, titles, and overlays added to footage you already have.
  </Card>

  <Card title="Motion graphics" icon="wand-magic-sparkles" href="/guides/motion-graphics">
    Titles, statistics, charts, logo stings, transparent overlays.
  </Card>

  <Card title="Music-driven videos" icon="music" href="/guides/music-to-video">
    Footage and motion cut to the structure of a track.
  </Card>

  <Card title="Interactive presentations" icon="display" href="/workflows#a-presentation">
    Decks with reveals, notes, branches, and presenter mode.
  </Card>
</CardGroup>

[Watch finished work →](/examples) · [Browse the catalog →](/catalog)

## Who does what

The agent does the source-heavy work — research, media, narration, building scenes. You direct it and control the visible result.

**Reach for Studio** when you can point at the thing: this text, this clip, this colour, this timing.
**Ask the agent** when the change is bigger than a click: the story, several scenes at once, or new media.

You never have to touch HTML, packages, or the rendering engine to make and review a video. Those live in [Developers](/developers), for people integrating or extending HyperFrames.

## Your next step

<Card title="Make your first video" icon="play" href="/quickstart" horizontal arrow>
  The shortest complete path — your own source material to a finished export, in about ten minutes.
</Card>

Prefer to look around first? Open the [Playground](https://www.hyperframes.dev/) with nothing to install, or learn [Studio](/studio) if an agent already built you a project.
