cozyclay 3.0.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/INSTALL_FOR_AGENTS.md +146 -0
  3. package/README.md +74 -192
  4. package/THIRD_PARTY_NOTICES.md +0 -21
  5. package/bin/agent/agent-routes.mjs +22 -56
  6. package/bin/agent/agent-runner.mjs +5 -3
  7. package/bin/agent/main-agent.mjs +70 -0
  8. package/bin/agent/main-prompt.mjs +17 -0
  9. package/bin/agent/session-store.mjs +2 -2
  10. package/bin/agent/studio-prompt.mjs +1 -1
  11. package/bin/agent/studio-task-routes.mjs +185 -0
  12. package/bin/agent/studio-tasks.mjs +156 -0
  13. package/bin/agent/studio-tools.mjs +3 -2
  14. package/bin/agent/studio-turn-transaction.mjs +76 -0
  15. package/bin/cozyclay.mjs +5 -7
  16. package/dist/app/index.html +7 -6
  17. package/dist/assets/TaskBoard-DdDXMgZm.js +1 -0
  18. package/dist/assets/app-B2BpfCl2.js +5088 -0
  19. package/dist/assets/app-BlwOpest.css +1 -0
  20. package/dist/assets/compile-worker-D0pKioa0.js +5 -0
  21. package/dist/assets/landing-y3EqDgSZ.js +1 -0
  22. package/dist/assets/modulepreload-polyfill-P2Xu9kJm.js +1 -0
  23. package/dist/assets/motion3-compile-B887n77J.js +1 -0
  24. package/dist/assets/scene-asset-sync-COGOlF5T.css +1 -0
  25. package/dist/assets/scene-asset-sync-CQzEdsqu.js +13 -0
  26. package/dist/assets/task-board-BKaM7d-9.js +14 -0
  27. package/dist/assets/workflow-B8Dhzexj.js +179 -0
  28. package/dist/assets/x-bot-tpose-body-BusyR3eg.json +1 -0
  29. package/dist/assets/y-bot-tpose-body-Dy1VKChZ.json +1 -0
  30. package/dist/cozyclay-package.json +1 -1
  31. package/dist/greybox-to-video/index.html +2 -3
  32. package/dist/index.html +7 -57
  33. package/dist/llms.txt +2 -1
  34. package/dist/previs-software/index.html +2 -2
  35. package/dist/privacy/index.html +3 -7
  36. package/dist/seedance-camera-control/index.html +2 -2
  37. package/dist/sitemap.xml +5 -5
  38. package/dist/sw.js +5 -1
  39. package/dist/thumbs/blank-stage-dark.webp +0 -0
  40. package/dist/thumbs/blank-stage-light.webp +0 -0
  41. package/dist/workflow/index.html +5 -4
  42. package/mcp/mesh-file.mjs +3 -1
  43. package/mcp/server.mjs +3 -0
  44. package/package.json +3 -3
  45. package/src/App.jsx +50 -281
  46. package/src/analytics.js +3 -148
  47. package/src/app-stage.jsx +1 -1
  48. package/src/asset-pane.jsx +5 -10
  49. package/src/auto-flat.js +10 -0
  50. package/src/bus-tasks.js +11 -5
  51. package/src/command-bus.js +1 -1
  52. package/src/commands/motion3-compile.js +51 -27
  53. package/src/commands/motion3.js +3 -3
  54. package/src/commands/project.js +1 -1
  55. package/src/commands/shot.js +16 -4
  56. package/src/controls.jsx +0 -11
  57. package/src/cuts.js +11 -0
  58. package/src/domains/cast.js +3 -2
  59. package/src/domains/motion.js +3 -10
  60. package/src/domains/playback.js +32 -0
  61. package/src/domains/scenes.js +3 -22
  62. package/src/domains/shots.js +5 -5
  63. package/src/dualview.jsx +11 -15
  64. package/src/hierarchy-panel.css +18 -4
  65. package/src/hierarchy-panel.jsx +12 -11
  66. package/src/kits/held.js +3 -2
  67. package/src/light-blockers.js +2 -2
  68. package/src/main.jsx +5 -0
  69. package/src/motion/ground.js +5 -14
  70. package/src/motion/playback-frame-store.js +79 -0
  71. package/src/motion/playback-probe.js +16 -0
  72. package/src/motion/playback-subject.js +7 -0
  73. package/src/motion/timeline.css +43 -5
  74. package/src/motion/timeline.jsx +4 -3
  75. package/src/motion3/body.js +37 -5
  76. package/src/motion3/carried.js +11 -3
  77. package/src/motion3/compile-job.js +1 -1
  78. package/src/motion3/compiler/compile.js +7 -1
  79. package/src/motion3/compiler/finger-close.js +137 -0
  80. package/src/motion3/compiler/limbs.js +18 -3
  81. package/src/motion3/compiler/pose.js +6 -0
  82. package/src/motion3/compiler/validate-objects.js +17 -2
  83. package/src/motion3/compiler/validate-parts.js +2 -1
  84. package/src/motion3/compiler/vocab.js +4 -4
  85. package/src/motion3/describe.js +2 -2
  86. package/src/motion3/fix/index.js +5 -3
  87. package/src/motion3/flight.js +38 -0
  88. package/src/motion3/free-motion.js +10 -7
  89. package/src/motion3/load.js +125 -0
  90. package/src/motion3/mass.js +23 -0
  91. package/src/motion3/object-keys.js +11 -6
  92. package/src/motion3/object-pose.js +11 -3
  93. package/src/motion3/pipeline.js +3 -0
  94. package/src/motion3/qa/explain.js +3 -1
  95. package/src/motion3/qa/grasp-checks.js +123 -0
  96. package/src/motion3/qa/hints-grasp.js +71 -0
  97. package/src/motion3/qa/index.js +3 -1
  98. package/src/motion3/qa/object-checks.js +7 -2
  99. package/src/motion3/qa/patch.js +2 -1
  100. package/src/motion3/qa/spec-checks.js +10 -1
  101. package/src/motion3/schema/fields.js +3 -3
  102. package/src/motion3/schema/topics.js +9 -8
  103. package/src/motion3/schema/types.js +4 -1
  104. package/src/motion3/seat.js +84 -0
  105. package/src/motion3/settle.js +11 -6
  106. package/src/motion3/shapes.js +70 -0
  107. package/src/motion3/skills/catch.js +71 -0
  108. package/src/motion3/skills/index.js +10 -3
  109. package/src/motion3/skills/info.js +13 -0
  110. package/src/motion3/skills/throw.js +72 -0
  111. package/src/object-catalog.jsx +0 -4
  112. package/src/object-gizmo.jsx +2 -1
  113. package/src/object-path.js +1 -1
  114. package/src/panels/ProjectPanel.jsx +42 -21
  115. package/src/panels/details.css +15 -4
  116. package/src/popover.js +37 -0
  117. package/src/posestudio.jsx +15 -10
  118. package/src/project-browser-art.jsx +19 -0
  119. package/src/project-browser.css +74 -121
  120. package/src/project-browser.jsx +36 -60
  121. package/src/props.jsx +4 -7
  122. package/src/retired-kinds.js +37 -0
  123. package/src/scene-objects.js +3 -7
  124. package/src/scenes.js +4 -5
  125. package/src/settings-menu.jsx +1 -20
  126. package/src/shell/BottomDock.jsx +9 -9
  127. package/src/shell/MenuBar.jsx +1 -9
  128. package/src/shell/PreferencesDialog.jsx +3 -4
  129. package/src/shell/ViewportToolbar.jsx +3 -3
  130. package/src/shell/add-camera-shot.js +11 -0
  131. package/src/shell/glass-regions.css +3 -2
  132. package/src/shell/glass.css +0 -5
  133. package/src/shell/lens-scrub-math.js +51 -0
  134. package/src/shell/lens-scrub.css +73 -0
  135. package/src/shell/lens-scrub.jsx +98 -0
  136. package/src/shell/mode.css +6 -5
  137. package/src/shell/preferences.css +1 -32
  138. package/src/shell/shell.css +18 -1
  139. package/src/shell/studio-shell-context.js +5 -0
  140. package/src/shot-frame.js +26 -0
  141. package/src/stage-canvas-rigs.jsx +7 -8
  142. package/src/stage-characters.jsx +26 -0
  143. package/src/stage-gizmo.js +43 -0
  144. package/src/stage-labels-ko.js +0 -6
  145. package/src/stage-startup-defaults.js +3 -9
  146. package/src/starter-scenes.js +5 -11
  147. package/src/studio-agent-commands.js +2 -2
  148. package/src/studio-agent-protocol.js +2 -7
  149. package/src/studio-app-binding.js +1 -1
  150. package/src/studio-elements.js +1 -1
  151. package/src/styles/themes.css +13 -0
  152. package/src/styles.css +6 -674
  153. package/src/text/text-object.jsx +1 -1
  154. package/src/ui.jsx +8 -16
  155. package/src/use-embed-bridge.js +3 -6
  156. package/src/use-render-activity.js +3 -1
  157. package/src/view-ghosts.jsx +5 -3
  158. package/src/viewport-visible-rect.js +37 -0
  159. package/src/workflow/AgentPanel.jsx +75 -42
  160. package/src/workflow/AgentProgressCard.jsx +1 -1
  161. package/src/workflow/TaskBoard.jsx +102 -0
  162. package/src/workflow/TaskInline.jsx +114 -0
  163. package/src/workflow/agent-client.js +11 -25
  164. package/src/workflow/agent-panel.css +14 -1
  165. package/src/workflow/attachment-image.js +10 -3
  166. package/src/workflow/attachment-video.js +91 -0
  167. package/src/workflow/task-board.css +98 -0
  168. package/src/workflow/task-board.js +169 -0
  169. package/tools/check-eslint.mjs +2 -1
  170. package/tools/check-knip.mjs +2 -1
  171. package/tools/dev/pages/greybox-to-video.html +2 -3
  172. package/tools/dev/pages/previs-software.html +2 -2
  173. package/tools/dev/pages/privacy.html +3 -7
  174. package/tools/dev/pages/seedance-camera-control.html +2 -2
  175. package/tools/dev-full.mjs +11 -2
  176. package/tools/eslint-baseline.json +6 -6
  177. package/tools/knip-baseline.json +0 -11
  178. package/tools/loc-baseline.json +30 -31
  179. package/tools/metrics-snapshot.mjs +43 -5
  180. package/tools/render-start-thumbs.mjs +175 -0
  181. package/tools/run-tests.mjs +7 -14
  182. package/tools/sitemap.mjs +1 -1
  183. package/dist/assets/analytics-BibyE5ar.js +0 -6
  184. package/dist/assets/app-DhRJ-PBz.js +0 -5088
  185. package/dist/assets/app-f-fkV5uP.css +0 -1
  186. package/dist/assets/compile-worker-DqiA4AaN.js +0 -5
  187. package/dist/assets/first-shot-handoff-Qx7SKl38.js +0 -1
  188. package/dist/assets/landing-DYg87MDY.js +0 -1
  189. package/dist/assets/scene-asset-sync-DBYQBR0T.js +0 -20
  190. package/dist/assets/scene-asset-sync-_S8NQl5B.css +0 -1
  191. package/dist/assets/workflow-BSA22Ofr.js +0 -179
  192. package/dist/scenes/city-block.cclayproject +0 -1
  193. package/src/burn-in.js +0 -91
  194. package/src/camera-tutorial.jsx +0 -520
  195. package/src/facing-marks.js +0 -88
  196. package/src/first-shot-handoff.js +0 -44
  197. package/src/panels/motion.css +0 -197
  198. package/src/set-pieces.jsx +0 -183
  199. package/src/tutorial-analytics.js +0 -86
  200. package/src/tutorial-walk.js +0 -17
  201. package/src/use-camera-tutorial.js +0 -50
  202. package/src/use-semantic-state.js +0 -12
  203. package/tools/metrics/archive-traffic.mjs +0 -138
  204. package/tools/perf/ik-camera-drag.mjs +0 -138
package/CHANGELOG.md CHANGED
@@ -2,6 +2,73 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 3.1.0 - 2026-10-23
6
+
7
+ Hands that hold, throw and catch with weight, Studio tasks in the chat, faster playback, and a leaner first run.
8
+
9
+ Motion
10
+
11
+ - Hands hold what they carry. Fingers close until they touch the held
12
+ surface, a ball rests in the palm and fingers, and spheres and cylinders
13
+ are round to the compiler. QA flags a finger through the object
14
+ (`FINGER_PEN`), a finger short of it (`FINGER_GAP`) and a hand that does
15
+ not hold it (`SUPPORT`).
16
+ - A held thing has weight: `objects.<id>.mass` sags the arm, and a load past
17
+ one hand asks for two (`LOAD`, `observations.load`).
18
+ - New skills `throwObject` and `catchObject`. A thrown thing leaves with the
19
+ hand's speed and lands on the first surface its path comes down onto; a
20
+ hand meets a flying ball where it can reach and gives with it.
21
+ - Grasp issues say why and carry the fix that repair applies.
22
+
23
+ Studio and agent
24
+
25
+ - Tasks: a **Tasks** switch in the agent composer. With it on, the main
26
+ agent answers at once while Studio tasks edit the scene in their own
27
+ scopes, on a pool of two compile workers. Running tasks show as one line
28
+ in the chat. Off by default.
29
+ - A video can be attached to the agent; it travels as a contact sheet.
30
+ - A fresh install opens the project chooser with one "+ New project" card.
31
+ - The Shot Camera card draws the live shot in every mode, and a focal-length
32
+ scrub replaces the read-only lens label.
33
+ - The project menu, scene dropdown and Outliner menu no longer open behind
34
+ the panels and close each other.
35
+ - + Add shot on a full take grows the take; dock tabs are clickable; Pose
36
+ enters from the editor view and releases IK focus on exit.
37
+
38
+ Performance
39
+
40
+ - Timeline playback no longer re-renders the whole app every frame.
41
+ - The motion body fits (~0.5 MB) load after first paint instead of in the
42
+ first bundle.
43
+
44
+ Fixes
45
+
46
+ - `npm test` and `npm run lint` run on a Windows checkout, and the MCP server
47
+ removes its live endpoint file when it exits on Windows.
48
+ - `npm run dev` exits within about 1.5 s on Ctrl+C instead of hanging.
49
+ - mcp: `proxy-addr` 2.0.8 (CVE-2026-90711).
50
+
51
+ Removed
52
+
53
+ - The built-in set pieces: Chair, Car and Plane (aircraft), with their Set
54
+ pieces group, Content › Sets folder and renderers. An old project that has
55
+ one opens it as a plain cube with the same transform and size.
56
+ - The City Block starter scene and its thumbnails. The chooser's "+ New
57
+ project" card is now the one blank entry; the Blank Stage card, the Samples
58
+ page and the category tabs are gone. `--scene <id>` and `?scene=` stay; an
59
+ unknown id is ignored with a console warning.
60
+ - The camera tutorial: the Studio overlay, Help › Tutorial, the Settings and
61
+ Learn entries, `?tutorial=camera`, the first-shot handoff, the `tutorial:*`
62
+ analytics events, and the seven-step tutorial and project download on the
63
+ home-page playground (which now opens a blank stage).
64
+
65
+ Docs
66
+
67
+ - The README is short again: install, what it does, the three AI surfaces, docs.
68
+ - `INSTALL_FOR_AGENTS.md` is the install, run and connect guide for an AI agent given the
69
+ repository link. It ships in the npm package.
70
+ - The README links the CozyClay Discord server and GitHub Sponsors.
71
+
5
72
  ## 3.0.3 - 2026-10-20
6
73
 
7
74
  Grasp round 2, from a user's own cup, ball and steering-wheel sessions on 3.0.2.
@@ -0,0 +1,146 @@
1
+ # CozyClay: install and run guide for AI agents
2
+
3
+ You are an AI agent. A user gave you this repository and asked you to install CozyClay, run it, or
4
+ connect to it. Follow this file. The [README](README.md) is the short version for people.
5
+
6
+ CozyClay is a previs studio that runs in a browser tab. The user blocks a scene, poses
7
+ characters and cuts cameras. The studio then exports the shot for an AI video model. You install it
8
+ with npm. You do not need a GPU, Python, a model download or a build step.
9
+
10
+ ## 1. Check the requirements
11
+
12
+ | Need | Check | If it fails |
13
+ | --- | --- | --- |
14
+ | Node.js 22.19 or newer | `node --version` | Install Node 22 LTS or newer. Do not continue on an older Node. |
15
+ | npm (or bun) | `npm --version` | It comes with Node. |
16
+ | A Chromium-based browser (Chrome, Edge, Brave, Arc) | Ask the user | Safari and Firefox are not supported. |
17
+
18
+ ## 2. Install and start (normal case)
19
+
20
+ Do not clone the repository unless the user wants to change the source code. The npm package
21
+ contains the built studio.
22
+
23
+ ```sh
24
+ npx -y cozyclay --no-star
25
+ ```
26
+
27
+ - This is a long-running server. Start it in the background and keep it running.
28
+ - It is ready when it prints `CozyClay is running at http://127.0.0.1:5180/app/`.
29
+ - It opens the default browser. Add `--no-open` when there is no screen, and give the user the URL.
30
+ - `--port 5200` serves on another port. Use it when the output is `port 5180 is taken`.
31
+ - `--no-star` stops the "star the repo" question when the process exits. An agent cannot answer it.
32
+
33
+ For a permanent install, run `npm install -g cozyclay`. Then `cclay` and `cozyclay` are the same
34
+ command. `cclay update` installs the latest release.
35
+
36
+ Tell the user:
37
+
38
+ - The URL to open, in a Chromium browser.
39
+ - **Assets › Characters** adds a character, and the timeline at the bottom holds the shots.
40
+ - `Cmd/Ctrl+B` opens the Agent panel. In that panel the user signs in with a ChatGPT account, or
41
+ chooses a model from another provider (section 5).
42
+
43
+ ## 3. Control the studio yourself
44
+
45
+ Pick one surface. Do not use two that start a live hub on the same port (see "One hub per port").
46
+
47
+ ### a. Terminal agent (coding agent with a shell): `cclay live`
48
+
49
+ Use this when you have a shell and the studio from step 2 is running. You need a browser tab open
50
+ on the studio URL, because the tab is the editor.
51
+
52
+ ```sh
53
+ npx -y cozyclay live status --wait # wait for an editor tab; required first step
54
+ npx -y cozyclay live inspect --scope scene # read before you edit
55
+ npx -y cozyclay live capture --out shot.png # check the result as an image
56
+ ```
57
+
58
+ The loop: wait for the editor. Read the scene. Apply one change (`arrange-objects`,
59
+ `arrange-characters`, `frame-shot`, `patch`, or `run <command>`). Verify it (`verify`, `capture`).
60
+ Each edit returns a receipt, and `undo --receipt <id>` takes it back. The output is one JSON
61
+ object per command. Exit codes: 0 ok, 1 editor or receipt error, 2 usage, 3 no hub, 4 workspace,
62
+ 5 timeout or uncertain apply, 6 stale scene or busy target.
63
+
64
+ - Look at the result with `capture` PNGs. Do not screenshot the browser window.
65
+ - `UNCERTAIN_APPLY`: inspect the scene before you try again. Do not repeat the edit blindly.
66
+ - `npx -y cozyclay live --help` lists every verb.
67
+ - Full guide with worked sessions: [`docs/agent-cli.md`](docs/agent-cli.md).
68
+
69
+ ### b. MCP client (Claude Desktop, Claude Code, Cursor, any MCP client)
70
+
71
+ Add this server to the client's MCP config, then restart the client:
72
+
73
+ ```json
74
+ {
75
+ "mcpServers": {
76
+ "cozyclay": { "command": "npx", "args": ["-y", "cozyclay", "mcp"] }
77
+ }
78
+ }
79
+ ```
80
+
81
+ For Claude Code: `claude mcp add cozyclay -- npx -y cozyclay mcp`.
82
+
83
+ - The first start installs the MCP SDK (about 95 packages). This takes some time once.
84
+ - Without an editor tab, the scene, camera, prompt and project-file tools work in memory.
85
+ - With an editor tab connected, the tools move the visible viewport. `live_status` tells you if
86
+ a tab is connected. `capture_frame`, `apply_batch` and `import_mesh` need a connected tab.
87
+ - Tool list and protocol: [`mcp/README.md`](mcp/README.md).
88
+
89
+ ### One hub per port
90
+
91
+ The studio (`cozyclay`) and the MCP server (`cozyclay mcp`) each try to host the live hub on
92
+ port 5184. The second one to start loses the port and does not report an error:
93
+
94
+ - MCP server second: it works in memory only and does not move the editor.
95
+ - Studio second: its Agent panel has no hub.
96
+
97
+ To run both, give them different ports, with `COZYCLAY_LIVE_PORT` set in each one's environment.
98
+ To drive a running studio from a shell, use `cclay live` (it connects to the hub and does not host
99
+ one).
100
+
101
+ ## 4. Make motion
102
+
103
+ Motion is compiled in the browser, not generated. You write a motion spec (key poses, hand
104
+ anchors, props, walks), compile it with `motion.compile`, and read the QA report (collisions, foot
105
+ slide, reach, contacts). Spec format and loop: [`docs/motion3-agent-guide.md`](docs/motion3-agent-guide.md).
106
+ Motion works on rigged characters in Animation projects. Capsule figures and Storyboard projects
107
+ refuse it with `TARGET_NOT_READY` or `NOT_IN_MODE`.
108
+
109
+ ## 5. Agent panel models (optional)
110
+
111
+ The Agent panel inside the studio can use ChatGPT (sign in in the panel), Anthropic, OpenAI,
112
+ Google Gemini, OpenRouter or CLIProxyAPI. Set the key in the environment of the process that starts
113
+ the studio (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `OPENROUTER_API_KEY`,
114
+ `CLIPROXY_API_KEY`), or let the user paste it in the panel. Keys go to
115
+ `~/.config/cozyclay/providers.json` (mode 0600). Never print a key or put it in a command line
116
+ that is logged. Details: [`docs/agent-cli.md`](docs/agent-cli.md#models-and-providers).
117
+
118
+ ## 6. From source (only to change the code)
119
+
120
+ ```sh
121
+ git clone https://github.com/NomaDamas/CozyClay.git
122
+ cd CozyClay
123
+ npm install
124
+ npm run dev # studio, agent sidecar and live hub on http://127.0.0.1:5180/app/
125
+ npm test # build, then every verification file
126
+ ```
127
+
128
+ Contribution rules (branches, PR checks, the lint ratchet) are in [`AGENTS.md`](AGENTS.md).
129
+
130
+ ## Troubleshooting
131
+
132
+ | Symptom | Fix |
133
+ | --- | --- |
134
+ | `port 5180 is taken` | Another studio runs. Open its URL, or start with `--port 5200`. |
135
+ | `live status` shows `"editors":[]` | No tab is open on the studio URL, or the tab uses a different live port. Open or reload the tab. |
136
+ | `NO_EDITOR` on an edit | Same as above. Run `live status --wait` first. |
137
+ | Blank page or WebGL error | The browser is not Chromium, or hardware acceleration is off. |
138
+ | The studio tab stops responding | Reload the tab (`Cmd+R` on macOS, `Ctrl+R` elsewhere). Your project autosaves in the browser. |
139
+ | MCP tools do not move the editor | See "One hub per port". |
140
+
141
+ ## Privacy
142
+
143
+ The official npm package sends anonymous usage counts and prints the disclosure on first
144
+ launch. It never sends project content. Turn it off with `cclay telemetry off`, or with
145
+ `COZYCLAY_TELEMETRY=0` or `DO_NOT_TRACK=1`. Source checkouts send nothing. Details:
146
+ [`docs/privacy.md`](docs/privacy.md).
package/README.md CHANGED
@@ -3,11 +3,8 @@
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <em>Block a scene, pose the cast, cut the camera — in a browser tab.</em>
7
- </p>
8
-
9
- <p align="center">
10
- Created and maintained by <a href="https://github.com/HaD0Yun">Doyun</a> at <a href="https://github.com/NomaDamas">NomaDamas</a>.
6
+ <b>Make the scene first. Then make it a video.</b><br>
7
+ <em>Open source previs in a browser tab: block the set, move the cast, cut the camera, hand the shot to an AI video model.</em>
11
8
  </p>
12
9
 
13
10
  <p align="center">
@@ -15,229 +12,114 @@
15
12
  <a href="https://www.npmjs.com/package/cozyclay"><img alt="npm" src="https://img.shields.io/npm/v/cozyclay"></a>
16
13
  <img alt="Node 22.19+" src="https://img.shields.io/badge/node-22.19%2B-brightgreen">
17
14
  <a href="https://github.com/NomaDamas/CozyClay/stargazers"><img alt="Stars" src="https://img.shields.io/github/stars/NomaDamas/CozyClay?style=flat"></a>
15
+ <a href="https://discord.gg/Hp9V5wwgjF"><img alt="Discord" src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white"></a>
18
16
  </p>
19
17
 
20
18
  <p align="center">
21
19
  <a href="https://cozyclay.org/#try">Try it in the browser</a> ·
22
20
  <a href="#quick-start">Quick start</a> ·
23
- <a href="#what-you-can-do">Features</a> ·
24
- <a href="#ai-control">AI control</a> ·
25
- <a href="#workflow-canvas">Workflow</a> ·
26
- <a href="#controls">Controls</a> ·
27
- <a href="#documentation">Docs</a> ·
28
- <a href="https://github.com/NomaDamas/CozyClay/issues">Issues</a>
21
+ <a href="INSTALL_FOR_AGENTS.md">Guide for AI agents</a> ·
22
+ <a href="#docs">Docs</a> ·
23
+ <a href="CHANGELOG.md">Changelog</a> ·
24
+ <a href="https://discord.gg/Hp9V5wwgjF">Discord</a>
29
25
  </p>
30
26
 
31
- ---
32
-
33
- CozyClay is a browser-based previs studio built with Three.js and React Three Fiber. Block a scene, pose the cast, cut the camera on a timeline, then hand the same shot to an AI video model (Seedance, Kling, Veo, or your own) as a first frame, a reference clip, or a prompt — all from one local workspace. The keyframe pack's greybox clip is the input Seedance 2.5 documents as white-model control: "Use the white-model reference video as the sole guide for camera movement, pacing, framing, subject motion, and blocking" (seed.bytedance.com/en/seedance2_5). MiniMax H3, Wan 3.0, LTX Desktop and fal render-to-real take the same plain RGB clip.
34
-
35
- ```bash
36
- npx cozyclay
27
+ <table>
28
+ <tr>
29
+ <td width="50%"><video src="https://github.com/user-attachments/assets/00f28c2f-e8e2-43eb-b253-b6c2436e1818" controls muted width="100%"></video></td>
30
+ <td width="50%"><video src="https://github.com/user-attachments/assets/4c9b1e29-4803-435c-8305-f2c899fb1c2c" controls muted width="100%"></video></td>
31
+ </tr>
32
+ <tr>
33
+ <td align="center"><sub>Top: the greybox blocked in CozyClay. Bottom: the AI video made from it.</sub></td>
34
+ <td align="center"><sub>Same idea, a parkour jump: the blocking holds the timing and the camera.</sub></td>
35
+ </tr>
36
+ </table>
37
+
38
+ ## Why
39
+
40
+ AI video costs money per take, and one miss means paying again. A text prompt cannot hold a
41
+ whole scene: where everyone stands, how they move, where the camera is, when it cuts.
42
+
43
+ CozyClay lets you make those decisions first, in 3D, where they are cheap to change. Then the video
44
+ model gets the shot as a first frame, a greybox reference clip and a prompt that describes the
45
+ real framing. It follows the blocking instead of guessing.
46
+
47
+ ```mermaid
48
+ flowchart LR
49
+ 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"]
37
50
  ```
38
51
 
39
- That is the whole install. Not sure yet? **[Try it in the browser first](https://cozyclay.org/#try)** — a seven-step camera tutorial on a live scene — then keep going on your machine with the same set:
52
+ ## Quick start
40
53
 
41
54
  ```bash
42
- npx cozyclay --scene city-block
55
+ npx cozyclay
43
56
  ```
44
57
 
45
- The camera tutorial seeds a compiled walk, so you can scrub the timeline, drive the cameras and draw a dolly rail straight away. New motion is compiled in the browser from a motion spec — no GPU box or sidecar needed.
46
-
47
- ## Demo
58
+ That is the whole install. You need Node.js 22.19 or newer and a Chromium browser. You do not need
59
+ a GPU, Python or a model download. The studio opens at `http://127.0.0.1:5180/app/`.
48
60
 
49
- https://github.com/user-attachments/assets/1d0113e5-6922-443d-affc-1bdabc666247
61
+ > **Asking an AI agent to set it up?** Give it this repository link. Its instructions are in
62
+ > [`INSTALL_FOR_AGENTS.md`](INSTALL_FOR_AGENTS.md).
50
63
 
51
64
  ## What you can do
52
65
 
53
- | | |
66
+ | | |
54
67
  | --- | --- |
55
- | **Stage a scene** | Create primitives and set pieces, then move, rotate and scale them with the transform strip's gizmo. Cast people from **Assets › Characters**: a rigged character you can pose and animate, or a **Capsule figure** — a rigless stand-in with one posture (stand, sit or lie) chosen in Details, for blocking where nobody needs to move their limbs. Capsule figures follow root paths and per-panel placements like any character but refuse pose, IK and motion tools, with the reason in the tooltip. Grid snapping is a preference, not a law — hold `Ctrl` mid-drag to invert it. A bird's-eye Top-View drives 2D root waypoints for character paths. **View ▾** on the viewport bar holds the reference grid and Auto Color — Blender's random viewport color, so twenty grey blockout boxes stay tellable apart without touching the colors you authored (captures include the display colors while it is on). |
56
- | **Fly the camera** | Right-drag flies (WASD walks, Q/E cranes), middle-drag pans, Alt+drag orbits the selection, click selects, `F` frames — the muscle memory you already have from a 3D editor. Fly, pan and orbit lock the pointer for the hold, so the view can turn past the window edge. Selecting the camera switches to Camera mode. **Look through** in the Shot monitor puts you behind the shot camera with the same bindings; click the on-screen **Shot camera** indicator or press `Esc` to return to the free camera. |
57
- | **Cut and move the camera** | Add shots on the timeline, draw a dolly rail on the Top-View, set speed, height and crane, and preview the move through the shot camera. Each shot carries a **Target model** (Seedance 2.5, Kling 2, Veo 3, self-hosted MiniMax-H3) and is flagged when the cut runs past that model's limits. |
58
- | **Export for AI video** | One **Export ▾** menu: a keyframe pack (first/last frame, clip, camera JSON, prompt, README) as a zip, an mp4 of the shot, depth + normal conditioning passes, a storyboard contact sheet, and an OTIO cut list. Seedance 2.5 reads the pack's greybox clip as its white-model reference video, and MiniMax H3, Wan 3.0, LTX Desktop and fal render-to-real accept the same clip. The **Shot Prompt** turns the framing into a structured prompt for the model you picked. |
59
- | **Undo anything** | Every scene mutation goes through one history store: a drag, a scrub, an inspector edit, an agent's camera key is exactly one undo entry. `Esc` cancels an in-flight drag and restores the pre-drag transform. |
60
- | **Compile motion** | The agent writes a motion spec — key poses, hand anchors, props, walks, hinged doors — and a deterministic compiler bakes every frame on the X Bot or Y Bot rig, then QA measures collisions, foot slide, reach and the contacts the spec declares ([`docs/motion3-agent-guide.md`](docs/motion3-agent-guide.md)). A compiled take is saved as its spec and replays identically; sparse IK keys and range pins correct any frame on top. |
61
- | **Direct it with an AI** | Open the **Agent panel** (`Cmd/Ctrl+B`), sign in with your ChatGPT account, and ask for a shot in plain language; the conversation survives reloads and you can paste a reference screenshot into it. Or connect Claude — or any MCP client — or drive the Studio from a terminal with `cclay live`. All three place the cast, frame "a low wide profile", compile motion, and the viewport moves in front of you. See [AI control](#ai-control). |
68
+ | **Stage** | Build 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. |
69
+ | **Move** | Describe 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. |
70
+ | **Shoot** | Put shots on a timeline, draw dolly rails, look through the lens. Each shot knows the limits of the video model you target. |
71
+ | **Export** | Keyframe pack (first and last frame, greybox clip, camera, prompt), mp4, depth and normal passes, contact sheet, OTIO cut list. |
72
+ | **Storyboard** | Prefer stills? A Storyboard project is a row of panels with captions, an animatic and a contact sheet. |
73
+ | **Undo anything** | Every edit, including each change the agent makes, is one undo step. |
62
74
 
63
- ## Modes
75
+ ## Direct it with AI
64
76
 
65
- A project is either a **Storyboard** or an **Animation**. Pick it on the start screen (the badge in the top bar shows which one you are in); a project keeps its mode when saved and reopened.
77
+ The same scene can be driven from three places, live, while you watch the viewport.
66
78
 
67
- | | Storyboard | Animation |
79
+ | Surface | Start | For |
68
80
  | --- | --- | --- |
69
- | **Choose it when** | You want a row of still panels: framing, who stands where, a caption and a hold per panel | You want moving shots: motion on a timeline, camera moves, takes |
70
- | **Timeline** | The **Board** dock tab: one card per panel with a greybox thumbnail, caption, hold, duplicate, delete and drag-to-reorder | Shots on the timeline, with the compiled take |
71
- | **Cast** | Rigged characters or capsule figures; each panel can keep its own placement ("Use stage placement" clears it) | Rigged characters with Pose and Motion mode; capsule figures for blocking |
72
- | **Motion tools** | Hidden: no Motion mode (`4`) | Available |
73
- | **Agent** | **Agent · Storyboard** builds one panel per request and never generates motion | The full Studio tool set |
74
- | **Exports** | **Stylize** a panel through the image route, **Send to Workflow** (the stylized image or the greybox) from its card, plus the Export ▾ menu: **Contact sheet (PNG)**, **Panel pack (zip)**, **All panels (zip)**, **Animatic (mp4)**, **Cut list (OTIO)** and **Depth + normal (PNG)**; File ▸ **Export as Animation project…** turns the panels into an Animation. There is no keyframe pack or shot video in a storyboard | Export ▾: keyframe pack, mp4, depth + normal passes, contact sheet, OTIO cut list |
81
+ | **Agent panel** | `Cmd/Ctrl+B` in the studio | Chat in the studio. Sign in with ChatGPT or use your own key (Anthropic, OpenAI, Gemini, OpenRouter, CLIProxyAPI). |
82
+ | **MCP server** | `npx -y cozyclay mcp` | Claude Desktop, Claude Code, Cursor or any MCP client. |
83
+ | **Terminal** | `cclay live status --wait` | Coding agents that drive a running studio, JSON in and out. |
75
84
 
76
- Start in Storyboard when you are deciding what the shots are, then open the idea as an Animation when it needs motion.
77
-
78
- ## Quick start
79
-
80
- You need Node.js 22.19 or newer, npm or bun, and a Chromium-based browser.
81
-
82
- ```bash
83
- npx cozyclay
84
- # or
85
- bunx cozyclay
85
+ ```json
86
+ { "mcpServers": { "cozyclay": { "command": "npx", "args": ["-y", "cozyclay", "mcp"] } } }
86
87
  ```
87
88
 
88
- That downloads the built studio and opens it at `http://127.0.0.1:5180/app/`. Nothing to compile, no dependency tree to install. Useful flags: `--port 5200`, `--no-open`, `--no-motion`, `--scene city-block` (start on the bundled starter scene instead of an empty room; the first-run dialog offers the same under **Start from a scene**, and a `.cclayproject` downloaded from the browser tutorial opens with **Open a project**).
89
-
90
- A global install gives you `cclay`, the same command with less typing. Once a day the launcher checks npm for a newer release and prints a one-line notice after the studio is up; it stays quiet when you're current or offline. `cclay update` installs the latest release, and `--no-update-check` skips the check entirely.
91
-
92
- New to the camera? The seven-step tutorial runs inside the Studio on the City Block set: **Settings ▾ → Camera tutorial**, or open `http://127.0.0.1:5180/app/?tutorial=camera`. Each step points at the control it needs and completes only when you actually make the move.
93
-
94
- ### From source
89
+ ## From source
95
90
 
96
91
  ```bash
97
- git clone https://github.com/NomaDamas/CozyClay.git
98
- cd CozyClay
92
+ git clone https://github.com/NomaDamas/CozyClay.git && cd CozyClay
99
93
  npm install
100
- npm run dev
101
- ```
102
-
103
- Open `http://127.0.0.1:5180/app/` for the Studio (the root redirects there) and `http://127.0.0.1:5180/workflow/` for the Workflow canvas. `npm run dev` starts the studio together with its local OAuth and agent sidecar; `npm run dev:ui` starts the browser UI alone.
104
-
105
- ## AI control
106
-
107
- Three surfaces drive the same scene, live, through one hub: a chat panel in the Studio, an MCP server for external assistants, and a terminal CLI.
108
-
109
- ### Agent panel in the Studio
110
-
111
- **View ▾ → Panels → Agent panel** (or `Cmd/Ctrl+B`) opens a chat column that signs in with your ChatGPT account (Codex OAuth; the token lives in `~/.config/cozyclay/`) and works the scene in front of you:
112
-
113
- > "Put a detective and a courier in an alley, give me a low wide profile shot,
114
- > then make her stand up from the chair, sprint, and trip."
115
-
116
- - Every change comes back as a receipt that highlights the Inspector and hierarchy rows it touched, and `Cmd/Ctrl+Z` takes it back like any other edit.
117
- - The conversation is stored under `~/.config/cozyclay/agent-sessions/` and resumes across reloads and restarts; **History** lists earlier sessions.
118
- - Paste or drop up to four images into the composer — a reference frame, a storyboard panel — and they go with the turn.
119
- - The agent has nine Studio tool families, from `inspect_studio` and `arrange_characters` to `patch_elements`, which sets any declared authored field (a character's tint, a shot's target model, the key light) by path. How it turns a pasted video prompt into blocking — what it asks, infers, or leaves empty — is the rule in [`docs/agent-prompt-to-scene.md`](docs/agent-prompt-to-scene.md).
120
-
121
- The panel is not tied to ChatGPT. Models come from six providers: ChatGPT (your Codex sign-in), Anthropic, OpenAI, Google Gemini, OpenRouter and CLIProxyAPI. A model id reads `provider/model`, so you pick one in the dropdown and that is where the turn goes. The five API-key providers take a key from an environment variable (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY` or `GOOGLE_API_KEY`, `OPENROUTER_API_KEY`, `CLIPROXY_API_KEY`) or from `~/.config/cozyclay/providers.json`, written at mode 0600 and never echoed back by any route; ChatGPT still signs in the way it always did. On the Workflow canvas you can steer a turn while it runs instead of stopping it. Conversations are saved in a new transcript format, so sessions recorded before this version are ignored rather than converted: the old files stay on disk, unread. The provider table, the key routes, the steer route and the session format are in [`docs/agent-cli.md`](docs/agent-cli.md).
122
-
123
- The agent runs on [pi](https://github.com/earendil-works/pi), an open-source agent harness: `@earendil-works/pi-ai` and `@earendil-works/pi-agent-core` (MIT) are the only runtime dependencies the package declares, and the sidecar loads them lazily, when a turn starts.
124
-
125
- The same panel sits on the right of the Workflow canvas, where it builds and runs canvas nodes.
126
-
127
- ### MCP server
128
-
129
- The studio ships an [MCP](https://modelcontextprotocol.io) server, so any MCP client can drive it — the same scene, the same viewport:
130
-
131
- ```json
132
- {
133
- "mcpServers": {
134
- "cozyclay": {
135
- "command": "npx",
136
- "args": ["-y", "cozyclay", "mcp"]
137
- }
138
- }
139
- }
94
+ npm run dev # http://127.0.0.1:5180/app/
95
+ npm test
140
96
  ```
141
97
 
142
- Drop that into `claude_desktop_config.json` (or any MCP client config) and restart the client. The first run automatically installs the MCP SDK's 95-package tree; opening the studio never waits on it, so those dependencies are fetched only when you actually want the server.
143
-
144
- - **Editor open?** Tool calls move the visible viewport — camera, cast, set, compiled motion on the timeline.
145
- - **No editor?** Scene and project tools run headless: block scenes, derive film vocabulary ("wide shot · right profile · knee level · 24mm"), render AI video prompts, and write `.cclayproject` files. `capture_frame` and `apply_batch` require the live editor.
146
-
147
- Tools, transports and the live-control protocol are documented in [`mcp/README.md`](mcp/README.md).
148
-
149
- ### From a terminal
150
-
151
- `cclay live` is a small CLI that reads the scene, places and moves things, frames and keys shots, patches declared fields (`cclay live patch --target stage --set '{"keyLight.intensity":2.4}'`), verifies the result with a capture PNG, and undoes by receipt — one JSON object per command, stable error codes, no browser of your own required (only the studio tab itself). It is the intended surface for a coding agent that has to manage a running Studio. The full guide, with three worked sessions against a real editor, is in [`docs/agent-cli.md`](docs/agent-cli.md).
152
-
153
- ## Workflow canvas
154
-
155
- The Workflow canvas at `http://127.0.0.1:5180/workflow/` is a node editor around the Studio: a **CozyClay Scene** node with a live viewport that previews the shot camera, a **Shot Prompt** node that builds a structured prompt from the capture, **Image** nodes (versions, A/B, pinned references) and a **Video** node that runs through your own ComfyUI (`COZYCLAY_COMFY_URL`) or fal (`FAL_KEY`) — bring your own key, nothing is proxied. Graphs are saved in the browser and execute locally.
156
-
157
- ## Controls
158
-
159
- | Input | Action |
160
- | --- | --- |
161
- | Right-drag | Look around (fly) |
162
- | RMB + WASD | Walk while flying |
163
- | RMB + Q/E | Crane down / up |
164
- | RMB + Shift | Boost fly speed 2.6× |
165
- | Middle-drag | Pan |
166
- | Alt + drag | Orbit the selection |
167
- | Scroll | Dolly; while flying, sets the fly speed instead |
168
- | Click | Select; empty space clears |
169
- | Transform strip | Move / rotate / scale tool, snap |
170
- | Ctrl/Cmd (during drag) | Invert grid snapping |
171
- | Ctrl/Cmd+Z, Ctrl/Cmd+Shift+Z | Undo / redo |
172
- | Esc | Cancel the in-flight drag |
173
- | End | Drop the selection to the surface |
174
- | Ctrl/Cmd+D | Duplicate the selection |
175
- | Delete / Backspace | Delete the selection |
176
- | F | Frame the selection |
177
- | Look through / Esc | Fly / leave the shot camera |
178
- | Cmd/Ctrl+B | Show / hide the Agent panel |
179
-
180
- Every control's home is recorded in [`docs/studio-ui-ia.md`](docs/studio-ui-ia.md), with the rule behind each placement.
181
-
182
- ## Documentation
98
+ ## Docs
183
99
 
184
100
  | Read | For |
185
101
  | --- | --- |
186
- | [`docs/motion3-agent-guide.md`](docs/motion3-agent-guide.md) | How the agent writes a motion spec, compiles it and reads QA |
187
- | [`docs/agent-cli.md`](docs/agent-cli.md) | Driving the Studio from a terminal with `cclay live` |
188
- | [`docs/agent-prompt-to-scene.md`](docs/agent-prompt-to-scene.md) | The ask / infer / omit rule the Agent follows when turning a video prompt into blocking, and the one-panel-per-request rule in storyboards |
189
- | [`mcp/README.md`](mcp/README.md) | MCP tools, transports, and the live-control protocol |
190
- | [`docs/studio-ui-ia.md`](docs/studio-ui-ia.md) | Where every Studio control lives and why |
191
- | [`docs/privacy.md`](docs/privacy.md) | The full analytics disclosure: events, identifiers, opt-out, internal QA marking |
192
- | [`workers/api/README.md`](workers/api/README.md) | The cozyclay.org API Worker: sign-in and the hosted video-model route |
193
- | [`docs/releasing.md`](docs/releasing.md) | Publishing a signed npm release |
194
- | [`CHANGELOG.md`](CHANGELOG.md) | What changed in each release |
102
+ | [`INSTALL_FOR_AGENTS.md`](INSTALL_FOR_AGENTS.md) | Install, run and connect, written for AI agents |
103
+ | [`docs/motion3-agent-guide.md`](docs/motion3-agent-guide.md) | Motion specs, compile and QA |
104
+ | [`docs/agent-cli.md`](docs/agent-cli.md) | `cclay live`, model providers, sessions |
105
+ | [`mcp/README.md`](mcp/README.md) | MCP tools and the live protocol |
106
+ | [`docs/studio-ui-ia.md`](docs/studio-ui-ia.md) | Every control and where it lives |
107
+ | [`docs/privacy.md`](docs/privacy.md) | Anonymous telemetry and how to turn it off (`cclay telemetry off`) |
108
+ | [`AGENTS.md`](AGENTS.md) | Contribution rules |
195
109
 
196
- Longer reads on the site: [Greybox to AI video](https://cozyclay.org/greybox-to-video/), [Seedance 2.5 camera control](https://cozyclay.org/seedance-camera-control/), [Camera control for AI video](https://cozyclay.org/ai-camera-control/), [Previs software compared](https://cozyclay.org/previs-software/).
110
+ ## Guides
197
111
 
198
- ## Validate
199
-
200
- | Command | Covers |
112
+ | Read | For |
201
113
  | --- | --- |
202
- | `npm run test:history` | Undo/redo store and transaction coordinator |
203
- | `npm run test:scene-objects` | Scene-object model |
204
- | `npm run test:hierarchy` | Hierarchy panel model |
205
- | `npm run test:objects` | Gizmo interaction in a real browser — needs `npm run dev:ui` in another shell |
206
- | `npm run test:theme` / `test:appearance` / `test:layout` | UI theme, appearance, layout |
207
- | `npm run test:lifecycle` | Dev-server process lifecycle |
208
- | `npm run test:ardy` | IK pipeline, range pins and timeline helpers |
209
- | `node tools/run-tests.mjs` | Every Node verification file (what CI runs) |
210
- | `npm run qa:browser -- node test/qa-camera-tutorial-browser.mjs` | The seven-step tutorial driven with real input, beacons pinned to their controls |
211
- | `QA_URL=… CDP_PORT=… OUT=/tmp/count npm run qa:browser -- node tools/qa/studio-control-count.mjs` | Simultaneously visible controls per mode (budget: Scene ≤35 / Camera ≤38 / Motion ≤52) |
212
- | `cd mcp && npm install && npm run verify` | MCP server over real stdio — all 420 framing combinations |
213
- | `cd mcp && npm run verify:live` | Live-control protocol against a fake editor (same `npm install` first) |
214
- | `npm run build` | Production build |
215
-
216
- Ad-hoc browser QA, while a dev server is available (the browser opens the studio at `/app/`):
217
-
218
- ```bash
219
- npm run qa:browser -- node <qa-script>
220
- ```
221
-
222
- ## Contributing
223
-
224
- Found something broken, or want a feature? [Open an issue](https://github.com/NomaDamas/CozyClay/issues) — bug reports with a repro are the most useful thing you can send. Contributions are accepted under `AGPL-3.0-or-later`.
225
-
226
- **Repository hygiene.** Generated motion archives, QA output, build output, logs and local runtime artifacts are not source files and must not be committed. Keep `artifacts/`, `dist/`, `.gjc/` and `.npz` files local.
227
-
228
- Every runtime library except the two agent packages (`@earendil-works/pi-ai`, `@earendil-works/pi-agent-core`) intentionally lives in `devDependencies`, because the published npm package ships the prebuilt `dist/`, so `npx cozyclay` must not install the studio's dependency tree.
229
-
230
- ## Analytics & privacy
231
-
232
- Anonymous usage counts, no cookies, no recordings, never your project content — on the hosted site via PostHog and in the official npm package, which prints the disclosure once on first launch. Source checkouts, forks, dev servers, CI and tests send nothing.
233
-
234
- ```bash
235
- cclay telemetry status
236
- cclay telemetry off
237
- ```
114
+ | [Greybox to AI video](https://cozyclay.org/greybox-to-video/) | Why a grey blockout is the most reliable input for a video model, and the block-then-generate loop |
115
+ | [Previs software compared](https://cozyclay.org/previs-software/) | Free, open source and browser-based previs tools side by side |
116
+ | [Seedance 2.5 camera control](https://cozyclay.org/seedance-camera-control/) | Getting the same camera on every take with a reference clip |
117
+ | [Camera control for AI video](https://cozyclay.org/ai-camera-control/) | Why camera prompts drift and what the models actually accept |
238
118
 
239
- `COZYCLAY_TELEMETRY=0` or `DO_NOT_TRACK=1` disables collection for a launch; **Settings ▾ → Privacy** is the same switch inside the Studio. The event list, what each identifier is, how internal QA traffic is marked and the first-edit definition are in [`docs/privacy.md`](docs/privacy.md).
119
+ Found a bug or want a feature? [Open an issue](https://github.com/NomaDamas/CozyClay/issues).
240
120
 
241
- ## License & credits
121
+ ## License
242
122
 
243
- GNU Affero General Public License v3.0 or later — see [`LICENSE`](LICENSE) and the transition details in [`LICENSING.md`](LICENSING.md). Modified network services must offer their users the corresponding source. Third-party projects retain their own licenses and copyright; see [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).
123
+ AGPL-3.0-or-later. See [`LICENSE`](LICENSE), [`LICENSING.md`](LICENSING.md) and
124
+ [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md). Made by [Doyun](https://github.com/HaD0Yun) at
125
+ [NomaDamas](https://github.com/NomaDamas).
@@ -34,27 +34,6 @@ ARDY is not bundled with CozyClay. Users must obtain, install, and operate ARDY
34
34
 
35
35
  ARDY model checkpoints and other model assets may be governed by separate terms, including the NVIDIA Open Model License identified by the ARDY project. Users are responsible for reviewing and complying with those terms before downloading or using the models.
36
36
 
37
- ## NVIDIA Kimodo
38
-
39
- CozyClay provides an optional bridge and data-conversion workflow for externally installed [Kimodo](https://github.com/nv-tlabs/kimodo), a human-motion generation project from NVIDIA Research, and [kimodo.cpp](https://github.com/localai-org/kimodo.cpp).
40
-
41
- Kimodo runtimes and model weights are not bundled with CozyClay. Users must obtain, install, and operate them separately under NVIDIA's terms and the applicable runtime licenses.
42
-
43
- - Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES (Kimodo skeleton data)
44
- - Kimodo source license: Apache License 2.0
45
- - Source: https://github.com/nv-tlabs/kimodo
46
- - Source license: https://github.com/nv-tlabs/kimodo/blob/main/LICENSE
47
- - kimodo.cpp source license: Apache License 2.0
48
- - Source: https://github.com/localai-org/kimodo.cpp
49
- - Source license: https://github.com/localai-org/kimodo.cpp/blob/main/LICENSE
50
-
51
- `tools/kimodo/local-output.mjs` embeds skeleton constants extracted from the `nv-tlabs/kimodo` SOMA77 definitions and `kimodo/assets/skeletons/somaskel77/` assets at commit `1aece8c124d73d255ceff5086d983b844c9f4e94`: the joint hierarchy, neutral-pose offsets, and relaxed-hand rotation matrices. The source assets are pinned by SHA256:
52
-
53
- - `joints.p`: `dc5fd8e39e0ff312f5d0f536a87ac22ac58445e13443fcb8ab54e6817cb97ce7`
54
- - `relaxed_hands_rest_pose.npy`: `64a3828e0d1ef1f1de8228c74eba8040c0810d898169f1892d8997a213b2b64c`
55
-
56
- Kimodo model checkpoints and other model assets may be governed by separate terms, including the NVIDIA Open Model License identified by the Kimodo project. Users are responsible for reviewing and complying with those terms before downloading or using the models.
57
-
58
37
  ## Meta Llama 3
59
38
 
60
39
  ARDY's text encoder is based on Meta Llama 3 (`Meta-Llama-3-8B-Instruct`).