CozyClay

HaD0YunAGPL-3.0活跃维护

浏览器里就能用的开源预演(previs)工具,可快速搭建场景、摆角色姿势、编排镜头与剪辑,再把同一套镜头交给 AI 视频模型生成。

Open source previs software in the browser: block a scene, pose characters, author camera moves and cuts, then take the same shots to an AI video model.

v3.2.2发布于 2026-11-07 09:30 UTC1,701star +132 / 7 天191fork同步于 2026-11-10 17:49 UTC

怎么上手

由 README 提炼,执行前请确认
npx cozyclay
硬件要求按 README 说明

README 明确说明不需要 GPU、Python 或下载模型,只需 Node.js 22.19 或更新版本和一个 Chromium 浏览器;未提及具体显存或 GPU 型号要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

浏览器里的开源预演工具,先在3D里摆好场景和镜头,再交给AI视频模型生成

浏览器里就能用的开源预演(previs)工具,可快速搭建场景、摆角色姿势、编排镜头与剪辑,再把同一套镜头交给 AI 视频模型生成。

核心能力

  • 用基础几何体搭景并摆放绑定角色或胶囊替身
  • 用自然语言描述动作,由浏览器内确定性编译器逐帧烘焙并做碰撞与脚滑QA
  • 在时间线上排镜头、画推轨、按目标视频模型限制取景
  • 导出首末帧、灰盒参考片段、相机与提示词、mp4、深度法线通道和OTIO剪辑表
  • 通过Agent面板、MCP服务器或cclay终端实时驱动同一场景

容易踩的坑

需要 Node.js 22.19 及以上版本,低版本无法运行;默认打开地址是 http://127.0.0.1:5180/app/,端口被占用时需注意;从源码运行需先 npm install 再 npm run dev。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v3.2.2
  1. v3.2.2CozyClay v3.2.2最新正式版2026-11-07 · 2026-11-07 09:30 UTC

    A patch for the motion compiler and the agent: faster compiles, holds and automatic legs, arms, gaze and tempo, steadier agent turns, and depth exports that read right.

    Export

    • A depth video whose frames show no empty background (a backdrop that fills the frame, a closed corridor) keeps a readable range instead of going all black. (#1090)
    • Rigged characters render in their current pose in depth frames and blocking-depth.mp4, not in the T-pose. (#1094)
    • export.shotVideo takes passKind: "depth" and depthCurve: "inverse" for an inverse-distance depth curve that keeps close-up relief. (#1096)

    Camera

    • A rail camera aimed at a rising or falling object follows its height each frame instead of one shot-average height. (#1095)
    • Agents can hold camera framing. (#1027)

    Motion

    • Compiles run about 1.5x faster: pose()'s bone edits run in WebAssembly, with takes the same bit for bit. (#1088)
    • Holds, and automatic tempo, knee poles, foot heading, free-arm swing and gaze (set.look) where the keys leave them out. (#1080, #1081, #1082)
    • Two-hand carries hold a box from below at its sides; letting go and throwing no longer jump.
    • Repair and retime run by default, with QA-guarded key thinning. (#1006)
    • MotionBricks transition fills (opt-in), a native mode and the Smart Primitive runner, with named poses and fills that hold up in scenes with objects. (#1008, #1017, #1023)
    • A grasp out of reach says so, instead of blaming the grip. (#1066)

    Agent

    • Provider failures retry gateway 5xx and honour Retry-After; usage limits read as quota; sign-in waits say why they stopped. (#1043, #1044)
    • Refusals name the failing field. (#1042)
    • Tasks: a main turn that makes no progress ends, the watchdog waits on running tools and names a model that did not answer, finished tasks undo after a scene round trip, and paused tasks resume instead of refusing. (#1002, #1004, #1010, #1051, #1056, #1058)
    • Every edited turn is checked, with pictures and relations given to the model, and the panel shows the review and the context used. (#1000, #1030)
    • A handled prop is staged within reach. (#1066)
    • Camera, blocking and review previs workflow. (#1014)

    Studio

    • Contact sheets show a character behind scene bodies. (#1024)
    • An empty cast is allowed; cancelling the file picker no longer counts as a refusal. (#1041)
    • Pose mode picks the one rigged character; the first-success guide starts with Add a character. (#1047, #1048)
    • Fixed a playback update-depth loop (React #185) and crashes under page translation. (#1045, #1046)
    • A slab resting on the deck no longer z-fights with it. (#1075)

    CLI

    • cclay live save --out file.cclayproject [--force] saves the open project from the terminal. (#1072)
    • cclay live capture --frames A-B --out-dir DIR renders a run of frames in one session. (#1074)
    • live run, cmd and tool take --args-file <path> or --args - (stdin), so large payloads such as GLB data URLs fit. (#1092)
    • asset.import decodes meshopt and Draco compressed GLB. (#1092)
    • inspect pages entities with --limit and --cursor; live captures from a hidden Studio tab are refused. (#1070, #1071)
    • shot.set camera keys document framing.yaw and pitch as radians. (#1093)

    Other

    • three.js 0.187; MCP SDK 1.32.2.
    • Landing page: the shot and the way in on the first screen, a sharper hero take, and a daily GitHub star count.
  2. v3.2.1CozyClay v3.2.12026-10-28 · 2026-10-28 00:24 UTC
    查看更新说明

    A patch that makes the numbers readable: hosted builds report their version, and the export funnel and agent failures can be split by cause; plus a script-driven tutorial recorder.

    Studio

    • The Update chip now agrees across open Studio tabs at once: closing it, pressing Update now or an install finishing in one tab shows in the others without waiting for their next check.
    • Help › About shows the version you are running.
    • In Sculpt mode, click a part of the sculpt to select it: the part gets an outline, and its row lights up in the new Parts tree in the Sculpt panel. A click on a mirrored copy selects the part it mirrors. A click on empty space, or Esc, clears it.
    • Sculpt shelf. Save to shelf in Sculpt mode keeps a sculpt as a card in Content › Sculpts, with a thumbnail. Drag a card into any scene of any project to place a copy. Export a card as .cozysculpt.json and import it on another machine.
    • After a one-click update, Restart now starts the new version on the same port in the same terminal (macOS and Linux), and the Studio reloads when it answers. A project with unsaved changes asks you to save, then reload. Windows keeps the copy command by design.
    • A selected sculpt part gets a gizmo: W moves it, E rotates it and R scales it (Shift scales evenly), and W/E/R go back to the turntable views once the part is cleared. One drag is one undo, a mirrored pair moves together, and an edit the recipe refuses snaps back with the reason. Delete with a part selected no longer deletes the whole sculpt.
    • A capsule figure set to Sit now sits on the floor in an L, with its legs reaching forward the way it faces, instead of only getting shorter. Its bounds, and so framing, follow the new shape. (#999)

    CLI

    • cclay update --off turns the update line and the Studio's Update chip off for good; cclay update --on turns them back on. cclay update --check still answers either way.

    Agent

    • A task that read a whole character is told when another task edits one of that character's layers, so a placement built on an old position is flagged on its next step. (#981, #982)
    • Task mode in the agent panel is on by default. Turning it off is remembered in this browser. (#998)

    Sculpt

    • Multi-view compare. The blueprint sheet is cropped into front, side, back and top views, each with its own mask; a view whose mask fails is dropped with a notice. sculpt.compare takes views: [{ yaw, reference, weight }] and weighs front, side and back 0.6, 0.25 and 0.15, giving 0 to a view whose proportions differ from the front by more than 35%. Start compares against the cropped side and back next to the front reference. Generate blueprint shows only with a ChatGPT sign-in. (#970, #995)

    Analytics

    • Hosted builds report the version they run. (#989)
    • Opening the Export menu is counted, with whether the browser can encode MP4, so the export funnel can be read. The privacy page lists the new export:menu_opened event. (#990)
    • Agent failures say whether the provider failed, the request got no network answer, or the cause is unknown, instead of one catch-all. (#991)
    • MCP tool events carry the tool name, and studio_commands counts as a read. The privacy page lists the tool_name property. (#994)
    • Reference exports made by QA scripts no longer count as user export attempts. (#993)
    • Usage analytics no longer switch themselves off in source checkouts, forks or CI (a CI variable alone does not disable them), and the browser's Do-Not-Track setting is no longer read. Turn them off with cclay telemetry off, COZYCLAY_TELEMETRY=0 or DO_NOT_TRACK=1; the analytics toggle in Preferences and the launch notice are gone. An unreadable state file now reads as the defaults, with analytics on, and a Studio served on a local network address counts as local. The star question is asked once per version when the Studio starts, instead
  3. v3.2.0CozyClay v3.2.02026-10-26 · 2026-10-26 07:47 UTC
    查看更新说明

    Motion gets physics you can see and trust: props swing and settle after the hand stops, balance and jumps are judged by real mass and gravity and the Studio draws why, and characters no longer pass through each other when you drag or compile.

    Studio

    • Physics overlay. Tick Physics in the motion controls, or call motion.physicsOverlay, to draw the centre of mass (green inside the feet, red outside, grey in the air), the support polygon under the feet, each jump's actual hips path next to its gravity arc, and a short trail behind swinging props. It shows in scrub, playback and video export, and red frames are exactly the ones QA calls BALANCE. (#950)
    • Dragging a hand or foot IK handle into another character now stops at that character's body instead of passing through, even on a fast drag across a thin forearm. Hold Alt while dragging to pass through on purpose; a one-time notice says so. The other character never moves. (#949)

    Motion3

    • Prop spring. objects.<id>.spring = { length, stiffness, damping } makes a carried or free prop (a bag, a lantern, a club) swing a beat behind the hand and settle. length is the string or rod length; stiffness defaults to gravity over length and damping to 0.5, so spring: { length: 0.5 } already swings naturally. Put the prop's base at the hand with at/along, because the swing pivots at the base; QA notes a base that sits far from the hand. The swing is computed once at compile time, stops when a dropped prop lands, and never pushes the prop into the floor. (#945)
    • BALANCE now uses a mass-weighted centre of mass against the support polygon of the grounded feet, instead of a four-point average and a box. Its hint gives the distance and direction (for example 0.10 m ahead of the feet), and a lean that changes direction stays one issue. A hint that moves the root now moves every key that holds the pose, so the body does not slide between them. (#944, #937)
    • FLOAT issues come with a fix: the root keyed onto the gravity arc between takeoff and landing, returning to the original motion at both ends. When the correction would be too large, the hint gives the apex height or the air time that would fit instead. (#943)
    • fix.person (on by default) moves a character's arms out of another character's body at compile time, keeps contact you allowed in checks.allow, and gives the same take after saving and reopening. (#948)

    Agent

    • Kimi K3 models (kimi-k3* on the Moonshot hosts) work on the OpenAI-compatible provider with their reasoning efforts and full output limit. A turn that spends every output token before answering now says so and suggests a lower reasoning effort, instead of failing with no output. (#951, #947)

    Package and tests

    • jpeg-js, which the MCP image tools import, is a root dev dependency, so a development checkout runs the MCP tests without a separate install. The test runner now skips the MCP suites with a clear message when mcp/node_modules is missing. (#946, #936)
    • The Studio camera QA enters look-through from the dock's Shot Camera card, where the Studio shows it. (#952, #925)
  4. v3.1.6CozyClay v3.1.62026-10-25 · 2026-10-25 06:20 UTC
    查看更新说明

    The npm package ships the MCP module the live tools need, so the Studio's live tools and cozyclay mcp work on a fresh install.

    Studio

    • A 3.1.5 global install shows the Update chip in the top bar for the first time, since this is the first release after the chip shipped. Update now, or the command it offers to copy, installs 3.1.6; then restart cclay.

    MCP

    • The npm package now ships mcp/project-camera.mjs, so the Studio's live tools and cozyclay mcp start on an npm install instead of failing with "Cannot find module" (broken since 3.1.2). The package check now fails a release whose bin/ or mcp/ code imports a file the package leaves out.
  5. v3.1.5CozyClay v3.1.52026-10-25 · 2026-10-25 05:09 UTC
    查看更新说明

    The Studio tells you when a new release is out and installs it in one click, Claude models work in the agent panel again, IK edits stay on their own character, turns and walks look more natural, and anonymous analytics show where the Studio gets in the way.

    Agent

    • Agent turns on Claude models no longer fail with a 400 error about a deferred placeholder tool.
    • When a turn is already running, the failure chip reads busy instead of upstream. The message text is unchanged.

    Motion

    • The head turns first and leads the body into a turn, by about 5 frames at 24 fps, the way a person's does. flow.headLead sets the frames (0 to 12), and false turns it off. A keyed head look still wins.
    • Takes that walk report observations.gait: cadence, step length, speed, stance and pelvis motion, with warnings outside a person's range. It is a reading only and never changes the QA result.
    • Grasp QA reads each finger: FINGER_ROM (a joint past its range), FINGER_SELF (two fingers inside each other) and THUMB_OFF (a held object without the thumb on it).
    • A carried ball keeps the thumb on it. A finger that misses a held object turns toward it at the knuckle, and the ring and little fingers curl together. Stacked hand presets no longer over-curl.

    Studio

    • An npm studio shows a small Update chip in the top bar when a newer release is out, once per version. A global install whose folder npm can write gets Update now, which installs the release and then asks you to restart cclay. Other installs get the command to copy, and npx gets "run npx cozyclay again". Update now waits while an agent turn, an export or a recording runs. A failed install names the cause (permissions, network, Node version, npm missing) and keeps the command.
    • An IK edit stays with its own character. Selecting another character mid-drag no longer poses it, and undo no longer reverts or deletes the other character. Switching characters applies a pending IK edit and shows a notice.
    • Ctrl+Z after an IK drag puts the pose back, with or without a take loaded.
    • On a browser without WebGL, the unavailable notice appears one frame after the Studio first draws instead of during it.

    CLI

    • cclay update --check prints the current and latest version without installing, and exits 0 (up to date), 10 (update available) or 11 (unknown). cclay update now refuses a release your Node.js cannot run.
    • A source checkout reports itself as clone, and a Windows global install is no longer mistaken for npx.

    Site

    • A redesigned cozyclay.org: a black first screen with a greybox-to-video reel, how-it-works clips from the tutorial, and Try it opens the Studio.

    Analytics

    • The anonymous usage analytics now cover where the Studio gets in the way:
      • the agent loop: refused commands, a summary per agent turn, each motion draft and its QA result, and each prompt sent, so retry loops and hesitation show
      • model connect: the sign-in steps and where they stop, and model changes
      • exports: retries, the stage a failed or stopped export reached, and saved files. Storyboard PNG, render pass and OTIO exports are now counted.
      • clicks, shortcuts and search: repeated or dead clicks on the main controls, shortcuts that did nothing, searches with no result, and switching panels or orbiting the camera back and forth
      • playback, boot and crashes: time to the first frame, playback runs and late frames, the first-success guide, render crashes and lost WebGL
      • the update notice: when it shows, which button was pressed, and whether the install worked
      • one friction summary per session
    • Every value is a closed bucket or a fixed id. No text, names, paths, object ids, click coordinates or npm output are sent. Prompt text never leaves the browser; only a length bucket and a similarity grade to the last prompt do.
    • First-edit events count only your own edits, not the agent's, and report

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Why

    AI video costs money per take, and one miss means paying again. A text prompt cannot hold a whole scene: where everyone stands, how they move, where the camera is, when it cuts.

    CozyClay lets you make those decisions first, in 3D, where they are cheap to change. Then the video model gets the shot as a first frame, a greybox reference clip and a prompt that describes the real framing. It follows the blocking instead of guessing.

    flowchart LR
      S["Stage<br/>set + cast"] --> M["Motion<br/>compiled + QA"] --> C["Camera<br/>shots + cuts"] --> E["Export<br/>frame · clip · prompt"] --> V["AI video model"]
    

    Quick start

    npx cozyclay
    

    That is the whole install. You need Node.js 22.19 or newer and a Chromium browser. You do not need a GPU, Python or a model download. The studio opens at http://127.0.0.1:5180/app/.

    Updating. npx cozyclay fetches the newest release each time you run it. After npm install -g cozyclay, the studio shows a small Update chip in the top bar when a newer release is out. Update now installs it, and Restart now starts the new version in the same terminal; the studio reloads once your project is saved. On Windows the chip gives you the command to copy instead: one-click stays off there by design. cclay update does the same from the terminal. --no-update-check or COZYCLAY_NO_UPDATE_CHECK=1 turns the check off for one launch; cclay update --off turns it off for good, and cclay update --on brings it back.

    Asking an AI agent to set it up? Give it this repository link. Its instructions are in INSTALL_FOR_AGENTS.md.

    What you can do

    StageBuild the set from primitives. Add rigged characters, or capsule stand-ins when nobody needs to move a limb. Fly the view like a 3D editor.
    MoveDescribe the action. The agent writes a motion spec, and a deterministic compiler in the browser bakes every frame. QA checks collisions, foot slide, reach and hand contact before you see it.
    ShootPut shots on a timeline, draw dolly rails, look through the lens. Each shot knows the limits of the video model you target.
    ExportKeyframe pack (first and last frame, greybox clip, camera, prompt), mp4, depth and normal passes, contact sheet, OTIO cut list.
    StoryboardPrefer stills? A Storyboard project is a row of panels with captions, an animatic and a contact sheet.
    Undo anythingEvery edit, including each change the agent makes, is one undo step.

    Direct it with AI

    The same scene can be driven from three places, live, while you watch the viewport.

    SurfaceStartFor
    Agent panelCmd/Ctrl+B in the studioChat in the studio. Sign in with ChatGPT or use your own key (Anthropic, OpenAI, Gemini, MiniMax, OpenRouter, CLIProxyAPI).
    MCP servernpx -y cozyclay mcpClaude Desktop, Claude Code, Cursor or any MCP client.
    Terminalcclay live status --waitCoding agents that drive a running studio, JSON in and out.
    { "mcpServers": { "cozyclay": { "command": "npx", "args": ["-y", "cozyclay", "mcp"] } } }
    

    From source

    git clone https://github.com/HaD0Yun/CozyClay.git && cd CozyClay
    npm install
    npm run dev     # http://127.0.0.1:5180/app/
    npm test
    

    Docs

    ReadFor
    INSTALL_FOR_AGENTS.mdInstall, run and connect, written for AI agents
    docs/motion3-agent-guide.mdMotion specs, compile and QA
    docs/agent-cli.mdcclay live, model providers, sessions
    mcp/README.mdMCP tools and the live protocol
    docs/studio-ui-ia.mdEvery control and where it lives
    docs/privacy.mdAnonymous telemetry and how to turn it off (cclay telemetry off)
    AGENTS.mdContribution rules

    Guides

    ReadFor
    Greybox to AI videoWhy a grey blockout is the most reliable input for a video model, and the block-then-generate loop
    Previs software comparedFree, open source and browser-based previs tools side by side
    Seedance 2.5 camera controlGetting the same camera on every take with a reference clip
    Camera control for AI videoWhy camera prompts drift and what the models actually accept

    Found a bug or want a feature? Open an issue.

    License

    AGPL-3.0-or-later. See LICENSE, LICENSING.md and THIRD_PARTY_NOTICES.md. Made by Doyun at NomaDamas.