clayvoyant 0.3.2__tar.gz

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 (258) hide show
  1. clayvoyant-0.3.2/.env.example +5 -0
  2. clayvoyant-0.3.2/.gitignore +70 -0
  3. clayvoyant-0.3.2/LICENSE +21 -0
  4. clayvoyant-0.3.2/PKG-INFO +309 -0
  5. clayvoyant-0.3.2/README.md +264 -0
  6. clayvoyant-0.3.2/SECURITY.md +48 -0
  7. clayvoyant-0.3.2/docs/.nojekyll +0 -0
  8. clayvoyant-0.3.2/docs/API_SETUP.md +89 -0
  9. clayvoyant-0.3.2/docs/ARCHITECTURE.md +139 -0
  10. clayvoyant-0.3.2/docs/ASSET_LICENSES.md +101 -0
  11. clayvoyant-0.3.2/docs/CHANGELOG.md +263 -0
  12. clayvoyant-0.3.2/docs/CHARACTERS.md +152 -0
  13. clayvoyant-0.3.2/docs/CLAY_MOTION.md +180 -0
  14. clayvoyant-0.3.2/docs/CONFIGURATION.md +118 -0
  15. clayvoyant-0.3.2/docs/DIRECTION.md +310 -0
  16. clayvoyant-0.3.2/docs/GLOSSARY.md +42 -0
  17. clayvoyant-0.3.2/docs/INDIA.md +162 -0
  18. clayvoyant-0.3.2/docs/INSTALLATION.md +83 -0
  19. clayvoyant-0.3.2/docs/QUICKSTART.md +70 -0
  20. clayvoyant-0.3.2/docs/RENDERING.md +200 -0
  21. clayvoyant-0.3.2/docs/REQUIREMENTS.md +53 -0
  22. clayvoyant-0.3.2/docs/ROADMAP.md +145 -0
  23. clayvoyant-0.3.2/docs/SCENES.md +150 -0
  24. clayvoyant-0.3.2/docs/SHOWCASE.md +57 -0
  25. clayvoyant-0.3.2/docs/TESTING.md +160 -0
  26. clayvoyant-0.3.2/docs/TROUBLESHOOTING.md +202 -0
  27. clayvoyant-0.3.2/docs/VOICE_PROVIDERS.md +286 -0
  28. clayvoyant-0.3.2/docs/WHY.md +112 -0
  29. clayvoyant-0.3.2/docs/WRITING_WITH_AN_ASSISTANT.md +70 -0
  30. clayvoyant-0.3.2/docs/index.html +120 -0
  31. clayvoyant-0.3.2/docs/media/brand/logo-for-dark.png +0 -0
  32. clayvoyant-0.3.2/docs/media/brand/logo-for-light.png +0 -0
  33. clayvoyant-0.3.2/docs/media/brand/mark-512.png +0 -0
  34. clayvoyant-0.3.2/docs/media/brand/mark-clay-1024.png +0 -0
  35. clayvoyant-0.3.2/docs/media/brand/mark-clay-256.png +0 -0
  36. clayvoyant-0.3.2/docs/media/brand/mark-clay-512.png +0 -0
  37. clayvoyant-0.3.2/docs/media/brand/mark-clay-64.png +0 -0
  38. clayvoyant-0.3.2/docs/media/brand/mark-mono.svg +9 -0
  39. clayvoyant-0.3.2/docs/media/brand/mark-on-dark.svg +9 -0
  40. clayvoyant-0.3.2/docs/media/brand/mark.svg +9 -0
  41. clayvoyant-0.3.2/docs/media/characters/aarav.png +0 -0
  42. clayvoyant-0.3.2/docs/media/characters/cast-1600x900.png +0 -0
  43. clayvoyant-0.3.2/docs/media/characters/clay-lineup.jpg +0 -0
  44. clayvoyant-0.3.2/docs/media/characters/clay-proof.jpg +0 -0
  45. clayvoyant-0.3.2/docs/media/characters/leo.png +0 -0
  46. clayvoyant-0.3.2/docs/media/characters/mira.png +0 -0
  47. clayvoyant-0.3.2/docs/media/characters/nadia.png +0 -0
  48. clayvoyant-0.3.2/docs/media/characters/rook.png +0 -0
  49. clayvoyant-0.3.2/docs/media/characters/styles.png +0 -0
  50. clayvoyant-0.3.2/docs/media/film/VERIFY.md +88 -0
  51. clayvoyant-0.3.2/docs/media/film/cover-1280x640.png +0 -0
  52. clayvoyant-0.3.2/docs/media/film/cover-1920x1080.png +0 -0
  53. clayvoyant-0.3.2/docs/media/film/loop.gif +0 -0
  54. clayvoyant-0.3.2/docs/media/film/nineteen-thirty-sheet.jpg +0 -0
  55. clayvoyant-0.3.2/docs/media/film/sets.jpg +0 -0
  56. clayvoyant-0.3.2/docs/media/film/stills/01-title.png +0 -0
  57. clayvoyant-0.3.2/docs/media/film/stills/02-dialogue.png +0 -0
  58. clayvoyant-0.3.2/docs/media/film/stills/03-key-point.png +0 -0
  59. clayvoyant-0.3.2/docs/media/film/stills/04-closing.png +0 -0
  60. clayvoyant-0.3.2/docs/media/film/stills/05-hindi.png +0 -0
  61. clayvoyant-0.3.2/docs/media/film/the-fast-one-poster.jpg +0 -0
  62. clayvoyant-0.3.2/docs/media/film/the-fast-one-sheet.jpg +0 -0
  63. clayvoyant-0.3.2/docs/media/film/the-fast-one.gif +0 -0
  64. clayvoyant-0.3.2/docs/media/film/thumbnail-1280x720.png +0 -0
  65. clayvoyant-0.3.2/docs/media/india/not-so-fast-sheet.hi-IN.jpg +0 -0
  66. clayvoyant-0.3.2/docs/media/india/phone-film.hi-IN.jpg +0 -0
  67. clayvoyant-0.3.2/docs/media/india/phone-film.hi-Latn.jpg +0 -0
  68. clayvoyant-0.3.2/docs/media/india/poster-pin.en-IN.jpg +0 -0
  69. clayvoyant-0.3.2/docs/media/india/poster-the-call.hi-IN.jpg +0 -0
  70. clayvoyant-0.3.2/docs/media/india/poster-the-call.hi-Latn.jpg +0 -0
  71. clayvoyant-0.3.2/docs/media/nineteen-thirty.en-IN.vtt +98 -0
  72. clayvoyant-0.3.2/docs/media/nineteen-thirty.hi-Latn.vtt +115 -0
  73. clayvoyant-0.3.2/docs/media/proof/eyelines.jpg +0 -0
  74. clayvoyant-0.3.2/docs/media/proof/framing-wide.jpg +0 -0
  75. clayvoyant-0.3.2/docs/media/proof/laptop-closes.jpg +0 -0
  76. clayvoyant-0.3.2/docs/media/proof/light-tuned.jpg +0 -0
  77. clayvoyant-0.3.2/docs/media/proof/over-the-shoulder.jpg +0 -0
  78. clayvoyant-0.3.2/docs/media/proof/reaction-cut.jpg +0 -0
  79. clayvoyant-0.3.2/docs/media/proof/steam-and-clock.jpg +0 -0
  80. clayvoyant-0.3.2/docs/media/screenshots/01-doctor.png +0 -0
  81. clayvoyant-0.3.2/docs/media/screenshots/02-scenes.png +0 -0
  82. clayvoyant-0.3.2/docs/media/screenshots/03-script.png +0 -0
  83. clayvoyant-0.3.2/docs/media/screenshots/04-studio-yaml.png +0 -0
  84. clayvoyant-0.3.2/docs/media/screenshots/05-render.png +0 -0
  85. clayvoyant-0.3.2/docs/media/screenshots/06-manifest.png +0 -0
  86. clayvoyant-0.3.2/docs/media/the-fast-one.en-GB.vtt +59 -0
  87. clayvoyant-0.3.2/docs/releases/v0.1.0.md +70 -0
  88. clayvoyant-0.3.2/docs/releases/v0.2.0.md +63 -0
  89. clayvoyant-0.3.2/docs/releases/v0.3.0.md +96 -0
  90. clayvoyant-0.3.2/docs/releases/v0.3.1.md +40 -0
  91. clayvoyant-0.3.2/docs/releases/v0.3.2.md +15 -0
  92. clayvoyant-0.3.2/examples/nineteen-thirty/README.md +45 -0
  93. clayvoyant-0.3.2/examples/nineteen-thirty/scenes/01_the_call.yaml +143 -0
  94. clayvoyant-0.3.2/examples/nineteen-thirty/studio.yaml +106 -0
  95. clayvoyant-0.3.2/examples/quillmere/README.md +45 -0
  96. clayvoyant-0.3.2/examples/quillmere/assets/characters/aarav.png +0 -0
  97. clayvoyant-0.3.2/examples/quillmere/assets/characters/leo.png +0 -0
  98. clayvoyant-0.3.2/examples/quillmere/assets/characters/mira.png +0 -0
  99. clayvoyant-0.3.2/examples/quillmere/assets/characters/nadia.png +0 -0
  100. clayvoyant-0.3.2/examples/quillmere/assets/logo.png +0 -0
  101. clayvoyant-0.3.2/examples/quillmere/scenes/02_too_good_email.yaml +52 -0
  102. clayvoyant-0.3.2/examples/quillmere/scenes/03_passwords_and_mfa.yaml +57 -0
  103. clayvoyant-0.3.2/examples/quillmere/scenes/11_report_early.yaml +53 -0
  104. clayvoyant-0.3.2/examples/quillmere/studio.yaml +141 -0
  105. clayvoyant-0.3.2/examples/the-fast-one/README.md +37 -0
  106. clayvoyant-0.3.2/examples/the-fast-one/assets/logo.png +0 -0
  107. clayvoyant-0.3.2/examples/the-fast-one/scenes/01_the_fast_one.yaml +54 -0
  108. clayvoyant-0.3.2/examples/the-fast-one/scenes/02_nearly.yaml +58 -0
  109. clayvoyant-0.3.2/examples/the-fast-one/studio.yaml +120 -0
  110. clayvoyant-0.3.2/pyproject.toml +86 -0
  111. clayvoyant-0.3.2/src/sastudio/__init__.py +3 -0
  112. clayvoyant-0.3.2/src/sastudio/__main__.py +3 -0
  113. clayvoyant-0.3.2/src/sastudio/audio/__init__.py +1 -0
  114. clayvoyant-0.3.2/src/sastudio/audio/ffmpeg.py +190 -0
  115. clayvoyant-0.3.2/src/sastudio/brief.py +135 -0
  116. clayvoyant-0.3.2/src/sastudio/build.py +551 -0
  117. clayvoyant-0.3.2/src/sastudio/claydesign.py +244 -0
  118. clayvoyant-0.3.2/src/sastudio/cli.py +721 -0
  119. clayvoyant-0.3.2/src/sastudio/data/__init__.py +0 -0
  120. clayvoyant-0.3.2/src/sastudio/data/elevenlabs.json +107 -0
  121. clayvoyant-0.3.2/src/sastudio/data/fonts/AtkinsonHyperlegibleNext[wght].ttf +0 -0
  122. clayvoyant-0.3.2/src/sastudio/data/fonts/Mukta-Bold.ttf +0 -0
  123. clayvoyant-0.3.2/src/sastudio/data/fonts/Mukta-Regular.ttf +0 -0
  124. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansBengali[wdth,wght].ttf +0 -0
  125. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansGujarati[wdth,wght].ttf +0 -0
  126. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansGurmukhi[wdth,wght].ttf +0 -0
  127. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansKannada[wdth,wght].ttf +0 -0
  128. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansMalayalam[wdth,wght].ttf +0 -0
  129. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansOriya[wdth,wght].ttf +0 -0
  130. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansTamil[wdth,wght].ttf +0 -0
  131. clayvoyant-0.3.2/src/sastudio/data/fonts/NotoSansTelugu[wdth,wght].ttf +0 -0
  132. clayvoyant-0.3.2/src/sastudio/data/fonts/OFL-AtkinsonHyperlegibleNext.txt +93 -0
  133. clayvoyant-0.3.2/src/sastudio/data/fonts/OFL-Mukta.txt +93 -0
  134. clayvoyant-0.3.2/src/sastudio/data/fonts/OFL-NotoSans-Indic.txt +102 -0
  135. clayvoyant-0.3.2/src/sastudio/data/fonts/__init__.py +0 -0
  136. clayvoyant-0.3.2/src/sastudio/data/romanize_hi.json +33 -0
  137. clayvoyant-0.3.2/src/sastudio/data/sarvam.json +342 -0
  138. clayvoyant-0.3.2/src/sastudio/direction.py +695 -0
  139. clayvoyant-0.3.2/src/sastudio/doctor.py +164 -0
  140. clayvoyant-0.3.2/src/sastudio/engine/__init__.py +0 -0
  141. clayvoyant-0.3.2/src/sastudio/engine/characters/__init__.py +0 -0
  142. clayvoyant-0.3.2/src/sastudio/engine/characters/aarav.json +69 -0
  143. clayvoyant-0.3.2/src/sastudio/engine/characters/leo.json +66 -0
  144. clayvoyant-0.3.2/src/sastudio/engine/characters/mira.json +66 -0
  145. clayvoyant-0.3.2/src/sastudio/engine/characters/nadia.json +63 -0
  146. clayvoyant-0.3.2/src/sastudio/engine/characters/rook.json +64 -0
  147. clayvoyant-0.3.2/src/sastudio/engine/clay/acting.py +884 -0
  148. clayvoyant-0.3.2/src/sastudio/engine/clay/claymat.py +237 -0
  149. clayvoyant-0.3.2/src/sastudio/engine/clay/faceops.py +98 -0
  150. clayvoyant-0.3.2/src/sastudio/engine/clay/film.py +1326 -0
  151. clayvoyant-0.3.2/src/sastudio/engine/clay/guest.py +239 -0
  152. clayvoyant-0.3.2/src/sastudio/engine/clay/handrig.py +371 -0
  153. clayvoyant-0.3.2/src/sastudio/engine/clay/puppet.py +564 -0
  154. clayvoyant-0.3.2/src/sastudio/engine/clay/setkit.py +993 -0
  155. clayvoyant-0.3.2/src/sastudio/engine/clay/sets.py +389 -0
  156. clayvoyant-0.3.2/src/sastudio/engine/sculpt/bodies.py +376 -0
  157. clayvoyant-0.3.2/src/sastudio/engine/sculpt/build.py +123 -0
  158. clayvoyant-0.3.2/src/sastudio/engine/sculpt/hair.py +222 -0
  159. clayvoyant-0.3.2/src/sastudio/engine/sculpt/heads.py +326 -0
  160. clayvoyant-0.3.2/src/sastudio/engine/sculpt/sdfkit.py +130 -0
  161. clayvoyant-0.3.2/src/sastudio/errors.py +73 -0
  162. clayvoyant-0.3.2/src/sastudio/lipsync.py +168 -0
  163. clayvoyant-0.3.2/src/sastudio/migrate.py +31 -0
  164. clayvoyant-0.3.2/src/sastudio/models.py +275 -0
  165. clayvoyant-0.3.2/src/sastudio/posters.py +166 -0
  166. clayvoyant-0.3.2/src/sastudio/project.py +655 -0
  167. clayvoyant-0.3.2/src/sastudio/render/__init__.py +1 -0
  168. clayvoyant-0.3.2/src/sastudio/render/cards.py +547 -0
  169. clayvoyant-0.3.2/src/sastudio/render/clay.py +153 -0
  170. clayvoyant-0.3.2/src/sastudio/render/figures.py +694 -0
  171. clayvoyant-0.3.2/src/sastudio/render/style.py +166 -0
  172. clayvoyant-0.3.2/src/sastudio/safepath.py +127 -0
  173. clayvoyant-0.3.2/src/sastudio/schema/__init__.py +0 -0
  174. clayvoyant-0.3.2/src/sastudio/schema/project.schema.json +1515 -0
  175. clayvoyant-0.3.2/src/sastudio/share.py +157 -0
  176. clayvoyant-0.3.2/src/sastudio/stopmotion/__init__.py +795 -0
  177. clayvoyant-0.3.2/src/sastudio/subtitles.py +175 -0
  178. clayvoyant-0.3.2/src/sastudio/templates/__init__.py +0 -0
  179. clayvoyant-0.3.2/src/sastudio/templates/education/__init__.py +0 -0
  180. clayvoyant-0.3.2/src/sastudio/templates/education/studio.yaml +135 -0
  181. clayvoyant-0.3.2/src/sastudio/templates/india/__init__.py +0 -0
  182. clayvoyant-0.3.2/src/sastudio/templates/india/scenes/01_the_call.yaml +143 -0
  183. clayvoyant-0.3.2/src/sastudio/templates/india/scenes/02_pin_is_for_paying.yaml +87 -0
  184. clayvoyant-0.3.2/src/sastudio/templates/india/scenes/03_six_numbers.yaml +82 -0
  185. clayvoyant-0.3.2/src/sastudio/templates/india/scenes/04_the_light_bill.yaml +85 -0
  186. clayvoyant-0.3.2/src/sastudio/templates/india/scenes/05_the_first_number.yaml +81 -0
  187. clayvoyant-0.3.2/src/sastudio/templates/india/studio.yaml +227 -0
  188. clayvoyant-0.3.2/src/sastudio/templates/short/__init__.py +0 -0
  189. clayvoyant-0.3.2/src/sastudio/templates/short/studio.yaml +132 -0
  190. clayvoyant-0.3.2/src/sastudio/templates/starter/__init__.py +0 -0
  191. clayvoyant-0.3.2/src/sastudio/templates/starter/assets/characters/aarav.png +0 -0
  192. clayvoyant-0.3.2/src/sastudio/templates/starter/assets/characters/leo.png +0 -0
  193. clayvoyant-0.3.2/src/sastudio/templates/starter/assets/characters/mira.png +0 -0
  194. clayvoyant-0.3.2/src/sastudio/templates/starter/assets/characters/nadia.png +0 -0
  195. clayvoyant-0.3.2/src/sastudio/templates/starter/assets/characters/rook.png +0 -0
  196. clayvoyant-0.3.2/src/sastudio/templates/starter/assets/logo.png +0 -0
  197. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/01_first_day.yaml +17 -0
  198. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/02_too_good_email.yaml +52 -0
  199. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/03_passwords_and_mfa.yaml +57 -0
  200. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/04_helpful_caller.yaml +18 -0
  201. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/05_urgent_from_the_top.yaml +18 -0
  202. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/06_lunch_break.yaml +18 -0
  203. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/07_free_gifts.yaml +17 -0
  204. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/08_train_home.yaml +17 -0
  205. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/09_need_to_know.yaml +17 -0
  206. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/10_helpful_robot.yaml +17 -0
  207. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/11_report_early.yaml +52 -0
  208. clayvoyant-0.3.2/src/sastudio/templates/starter/scenes/12_what_rook_fears.yaml +17 -0
  209. clayvoyant-0.3.2/src/sastudio/templates/starter/studio.yaml +134 -0
  210. clayvoyant-0.3.2/src/sastudio/text/__init__.py +1 -0
  211. clayvoyant-0.3.2/src/sastudio/text/romanize.py +179 -0
  212. clayvoyant-0.3.2/src/sastudio/text/speech.py +109 -0
  213. clayvoyant-0.3.2/src/sastudio/text/template.py +329 -0
  214. clayvoyant-0.3.2/src/sastudio/timeline.py +134 -0
  215. clayvoyant-0.3.2/src/sastudio/voices/__init__.py +1 -0
  216. clayvoyant-0.3.2/src/sastudio/voices/base.py +236 -0
  217. clayvoyant-0.3.2/src/sastudio/voices/common.py +37 -0
  218. clayvoyant-0.3.2/src/sastudio/voices/elevenlabs.py +198 -0
  219. clayvoyant-0.3.2/src/sastudio/voices/engine.py +343 -0
  220. clayvoyant-0.3.2/src/sastudio/voices/kokoro.py +156 -0
  221. clayvoyant-0.3.2/src/sastudio/voices/lexicon.py +79 -0
  222. clayvoyant-0.3.2/src/sastudio/voices/offline.py +98 -0
  223. clayvoyant-0.3.2/src/sastudio/voices/recorded.py +59 -0
  224. clayvoyant-0.3.2/src/sastudio/voices/registry.py +39 -0
  225. clayvoyant-0.3.2/src/sastudio/voices/sarvam.py +158 -0
  226. clayvoyant-0.3.2/tests/__init__.py +0 -0
  227. clayvoyant-0.3.2/tests/conftest.py +158 -0
  228. clayvoyant-0.3.2/tests/data/rigged_figure.glb +0 -0
  229. clayvoyant-0.3.2/tests/test_brief.py +70 -0
  230. clayvoyant-0.3.2/tests/test_clay_smoke.py +41 -0
  231. clayvoyant-0.3.2/tests/test_claydesign.py +146 -0
  232. clayvoyant-0.3.2/tests/test_direction.py +344 -0
  233. clayvoyant-0.3.2/tests/test_docs.py +70 -0
  234. clayvoyant-0.3.2/tests/test_figures.py +162 -0
  235. clayvoyant-0.3.2/tests/test_india.py +91 -0
  236. clayvoyant-0.3.2/tests/test_init_options.py +71 -0
  237. clayvoyant-0.3.2/tests/test_labels_and_examples.py +93 -0
  238. clayvoyant-0.3.2/tests/test_lipsync_and_free_voices.py +139 -0
  239. clayvoyant-0.3.2/tests/test_offline_and_markers.py +63 -0
  240. clayvoyant-0.3.2/tests/test_paths_and_config.py +279 -0
  241. clayvoyant-0.3.2/tests/test_posters.py +51 -0
  242. clayvoyant-0.3.2/tests/test_release_scope.py +232 -0
  243. clayvoyant-0.3.2/tests/test_render_watchdog.py +192 -0
  244. clayvoyant-0.3.2/tests/test_romanize.py +87 -0
  245. clayvoyant-0.3.2/tests/test_share.py +67 -0
  246. clayvoyant-0.3.2/tests/test_stopmotion.py +327 -0
  247. clayvoyant-0.3.2/tests/test_subtitles_build_cli.py +151 -0
  248. clayvoyant-0.3.2/tests/test_text.py +124 -0
  249. clayvoyant-0.3.2/tests/test_voices.py +287 -0
  250. clayvoyant-0.3.2/tools/check_contacts.py +119 -0
  251. clayvoyant-0.3.2/tools/make_brand.py +76 -0
  252. clayvoyant-0.3.2/tools/make_clay_mark.py +135 -0
  253. clayvoyant-0.3.2/tools/make_example_assets.py +48 -0
  254. clayvoyant-0.3.2/tools/make_readme_media.py +135 -0
  255. clayvoyant-0.3.2/tools/make_reference_media.py +563 -0
  256. clayvoyant-0.3.2/tools/make_screenshots.py +98 -0
  257. clayvoyant-0.3.2/tools/make_showcase_media.py +53 -0
  258. clayvoyant-0.3.2/tools/make_test_model.py +112 -0
@@ -0,0 +1,5 @@
1
+ # Copy this file to .env (in your project folder or where you run sastudio) and add your own keys.
2
+ # .env is ignored by git. Keys are read only when you run a paid generation with --live.
3
+ # Never paste a real key into studio.yaml, an issue, a screenshot or a log.
4
+ SARVAM_API_KEY=
5
+ ELEVENLABS_API_KEY=
@@ -0,0 +1,70 @@
1
+ # Secrets: never commit
2
+ .env
3
+ .env.*
4
+ !.env.example
5
+ *.key
6
+ *.pem
7
+ *.p12
8
+ *.pfx
9
+ id_rsa*
10
+ id_ed25519*
11
+ .netrc
12
+ credentials*.json
13
+
14
+ # Python
15
+ __pycache__/
16
+ *.py[cod]
17
+ .venv/
18
+ venv/
19
+ build/
20
+ dist/
21
+ *.egg-info/
22
+ .pytest_cache/
23
+ .ruff_cache/
24
+ .mypy_cache/
25
+ .coverage
26
+ .coverage.*
27
+ htmlcov/
28
+ .tox/
29
+ .nox/
30
+ .uv-cache/
31
+ *.log
32
+
33
+ # Project state (voice cache, ledger, rigs, renders): local to each project
34
+ .studio/
35
+ **/build/
36
+ *.part
37
+ *.part.*
38
+
39
+ # Media you render
40
+ *.mp4
41
+ *.mov
42
+ *.mkv
43
+ !docs/media/*.mp4
44
+ *.wav
45
+ !src/sastudio/**/*.wav
46
+
47
+ # OS / editor
48
+ .DS_Store
49
+ Thumbs.db
50
+ *.swp
51
+ *.tmp
52
+ desktop.ini
53
+ .idea/
54
+ .vscode/
55
+
56
+ # Local editor and AI-agent settings: they can hold machine paths, permission lists or tokens,
57
+ # and are never part of the project
58
+ .claude/
59
+ CLAUDE.local.md
60
+ .cursor/
61
+ .codex/
62
+ .aider*
63
+ .continue/
64
+ .windsurf/
65
+ .zed/
66
+ .hermes/
67
+ .mcp.json
68
+
69
+ # clay portraits the examples make for themselves (sastudio clay portraits)
70
+ examples/*/assets/characters/*_clay.png
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ibrahim Sultan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,309 @@
1
+ Metadata-Version: 2.5
2
+ Name: clayvoyant
3
+ Version: 0.3.2
4
+ Summary: Clay stop-motion films, written as plain text: sculpted characters, sets, cameras, voices and subtitles from a YAML project. Made for security awareness; see the scam coming.
5
+ Project-URL: Homepage, https://github.com/xIBBAx/clayvoyant
6
+ Project-URL: Repository, https://github.com/xIBBAx/clayvoyant
7
+ Project-URL: Documentation, https://github.com/xIBBAx/clayvoyant/tree/main/docs
8
+ Project-URL: Changelog, https://github.com/xIBBAx/clayvoyant/blob/main/docs/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/xIBBAx/clayvoyant/issues
10
+ Project-URL: Security, https://github.com/xIBBAx/clayvoyant/security/policy
11
+ Author-email: Ibrahim Sultan <135457750+xIBBAx@users.noreply.github.com>
12
+ Maintainer-email: Ibrahim Sultan <135457750+xIBBAx@users.noreply.github.com>
13
+ License-Expression: MIT
14
+ License-File: LICENSE
15
+ Keywords: accessibility,elevenlabs,phishing,sarvam,security awareness,security training,subtitles,text-to-speech,video
16
+ Classifier: Development Status :: 3 - Alpha
17
+ Classifier: Environment :: Console
18
+ Classifier: Intended Audience :: Education
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3 :: Only
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: Education
26
+ Classifier: Topic :: Multimedia :: Video
27
+ Classifier: Topic :: Security
28
+ Requires-Python: >=3.11
29
+ Requires-Dist: jsonschema<5,>=4.18
30
+ Requires-Dist: pillow<14,>=13.0
31
+ Requires-Dist: pyyaml<7,>=6.0.1
32
+ Provides-Extra: all
33
+ Requires-Dist: kokoro-onnx>=0.6; extra == 'all'
34
+ Requires-Dist: numpy>=1.26; extra == 'all'
35
+ Requires-Dist: scikit-image>=0.22; extra == 'all'
36
+ Requires-Dist: scipy>=1.11; extra == 'all'
37
+ Provides-Extra: clay
38
+ Requires-Dist: numpy>=1.26; extra == 'clay'
39
+ Requires-Dist: scikit-image>=0.22; extra == 'clay'
40
+ Requires-Dist: scipy>=1.11; extra == 'clay'
41
+ Provides-Extra: voices
42
+ Requires-Dist: kokoro-onnx>=0.6; extra == 'voices'
43
+ Requires-Dist: numpy>=1.26; extra == 'voices'
44
+ Description-Content-Type: text/markdown
45
+
46
+ <p align="center">
47
+ <img src="https://raw.githubusercontent.com/xIBBAx/clayvoyant/main/docs/media/brand/mark-clay-512.png" width="168" alt="The project's mark, sculpted in clay by the engine itself: a round teal disc pressed with the ridges of a thumbprint, which circle an orange eye.">
48
+ </p>
49
+
50
+ <h1 align="center">Clayvoyant</h1>
51
+
52
+ <p align="center">
53
+ <b>See the scam coming.</b><br>
54
+ <b>Clay stop-motion films, written as plain text.</b><br>
55
+ Describe the people, write what they say, choose where it happens.<br>
56
+ The studio sculpts the cast, builds the set, lights it, films it and gives it a voice.
57
+ </p>
58
+
59
+ <p align="center">
60
+ <a href="#make-a-film">Make a film</a> ·
61
+ <a href="https://github.com/xIBBAx/clayvoyant/tree/main/examples/the-fast-one/">The sample film</a> ·
62
+ <a href="https://github.com/xIBBAx/clayvoyant/blob/main/docs/INDIA.md">For India</a> ·
63
+ <a href="https://github.com/xIBBAx/clayvoyant/blob/main/docs/CLAY_MOTION.md">How the clay works</a> ·
64
+ <a href="#documentation">Documentation</a> ·
65
+ <a href="https://github.com/xIBBAx/clayvoyant/blob/main/docs/ROADMAP.md">Roadmap</a>
66
+ </p>
67
+
68
+ <p align="center">
69
+ <a href="https://xibbax.github.io/clayvoyant/"><img src="https://raw.githubusercontent.com/xIBBAx/clayvoyant/main/docs/media/film/the-fast-one.gif" width="800" alt="A few seconds of the sample film The Fast One: in a cafe at dusk, Tara, a clay figure with a ponytail and a mustard jacket, sits at a round table with a laptop and talks with Odile, who runs the cafe. Their mouths move with the words, they turn to each other and gesture, and the camera cuts between a two-shot and close-ups."></a><br>
70
+ <a href="https://xibbax.github.io/clayvoyant/"><b>Watch the whole film</b></a> (82 seconds) ·
71
+ <a href="https://github.com/xIBBAx/clayvoyant/blob/main/docs/SHOWCASE.md"><b>Before and after, frame by frame</b></a>
72
+ </p>
73
+
74
+ I built Clayvoyant after making a 29-minute clay film to teach information security at my father's
75
+ workplace ([where it began](https://xibbax.github.io/clayvoyant/#where-clayvoyant-began)). It is
76
+ that work, opened up so anyone can make their own films: every figure is sculpted from
77
+ signed-distance clay and rigged with real hands and a face that acts; every room is built by code;
78
+ every shot is planned like a film and can be changed in a line of YAML. Twelve short
79
+ security-awareness stories come with it, ready to make in your organisation's name, words and
80
+ language.
81
+
82
+ ## Make a film
83
+
84
+ You need Python 3.11+, FFmpeg and [Blender](https://www.blender.org/download/) 4.2 or newer
85
+ ([installing them](https://github.com/xIBBAx/clayvoyant/blob/main/docs/INSTALLATION.md)). A GPU makes it quicker; it is not required.
86
+
87
+ ```bash
88
+ git clone https://github.com/xIBBAx/clayvoyant
89
+ cd clayvoyant
90
+ python3 -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
91
+ pip install -e ".[clay,voices]"
92
+
93
+ sastudio voices install kokoro # a free neural voice, downloaded once (350 MB)
94
+ sastudio film examples/the-fast-one --preset draft
95
+ ```
96
+
97
+ That one command voices thirteen lines, sculpts three people, builds a cafe and an office, films
98
+ seventeen shots on twos and assembles a subtitled film in `examples/the-fast-one/build/`. No
99
+ account and no API key. Edit a line and only the shots it can affect are filmed again.
100
+ (`clayvoyant` works in place of `sastudio`: the project was called Security Awareness Studio until
101
+ November 2026.)
102
+
103
+ <p align="center">
104
+ <img src="https://raw.githubusercontent.com/xIBBAx/clayvoyant/main/docs/media/film/the-fast-one-sheet.jpg" width="100%" alt="Twelve frames from The Fast One. A cafe at dusk with the city in the window: Tara at a table with her laptop and Odile behind the counter, seen whole; Tara listening in close-up while Odile explains which Wi-Fi is hers; Tara reading out what the other network wants; the two of them at the table; Odile in close-up, smiling. A key point card. Then an office in morning light: Tara arriving at Bashir's desk; Bashir, bearded and in glasses, asking what stopped her; Tara explaining with her palms open; Bashir standing to make his point; the two of them as he offers to buy the coffee. A last key point card.">
105
+ </p>
106
+
107
+ **[Watch The Fast One](https://xibbax.github.io/clayvoyant/)**
108
+ (82 seconds, with subtitles). It is exactly what the command above makes with `--preset preview`:
109
+ seventeen filmed shots at 1280x720 and thirteen voiced lines, in 55 minutes on a laptop GeForce GTX
110
+ 1660 Ti. Checked drawing by drawing, nothing in it passes through anything
111
+ ([how](https://github.com/xIBBAx/clayvoyant/blob/main/docs/CLAY_MOTION.md#nothing-passes-through-anything)).
112
+
113
+ Everything in [The Fast One](https://github.com/xIBBAx/clayvoyant/tree/main/examples/the-fast-one/) comes from two scene files and one page of
114
+ character descriptions. Nobody opened Blender, drew anything or recorded a voice.
115
+
116
+ ## What you direct
117
+
118
+ **People.** A character is a few lines: skin, hair, clothes, build, a face nudged wider or
119
+ sharper, and how they carry themselves. Ten hair styles, eight outfits, beards, glasses, a
120
+ headscarf, a bindi. No two characters share a face, even when described alike.
121
+
122
+ ```yaml
123
+ - id: bashir
124
+ name: Bashir
125
+ look:
126
+ design:
127
+ skin: "#8A5A3C"
128
+ hair: { style: short, color: "#16110F" }
129
+ outfit: { style: shirt, color: "#7FA3C4" }
130
+ extras: [glasses, beard]
131
+ body: { build: broad, height: tall }
132
+ face: { jaw: 0.5, brows: 0.4 }
133
+ acting: { energy: 0.8, posture: 0.6 }
134
+ ```
135
+
136
+ <p align="center">
137
+ <img src="https://raw.githubusercontent.com/xIBBAx/clayvoyant/main/docs/media/characters/clay-lineup.jpg" width="100%" alt="Six different clay characters in a row, each made from a short description: a woman with long hair in a rust sweater waving; a bearded man in a green hoodie with his hands on his hips; a woman in a headscarf and a blue kurta, palms together; a tall bald man with a moustache and glasses, arms folded; a woman in a mustard zip jacket giving a thumbs-up; a curly-haired person in a knit vest with a lanyard, hand on chin.">
138
+ </p>
139
+
140
+ **Performances.** They walk on planted feet, sit down, turn to whoever is speaking, point, shrug,
141
+ fold their arms, type with their hands on the desk, carry a mug, read a phone. Mouths follow the
142
+ sounds of the words; eyes lead and the head follows; listeners react. What nobody wrote is acted
143
+ anyway, and what you write wins:
144
+
145
+ ```yaml
146
+ - id: fo_04
147
+ who: odile
148
+ go: table_left_2 # walks over and takes the seat
149
+ emotion: concern
150
+ act: [hold_mug]
151
+ reactions: { tara: worried }
152
+ say: "Then somebody in here is fishing. And not for coffee."
153
+ ```
154
+
155
+ **Places.** Office, reception, meeting room, home, cafe, corridor, street and classroom: built
156
+ by code, dressed in your organisation's colours and name, lit for morning, day, evening or night.
157
+ No model files, no photographs, nothing to license.
158
+
159
+ <p align="center">
160
+ <img src="https://raw.githubusercontent.com/xIBBAx/clayvoyant/main/docs/media/film/sets.jpg" width="100%" alt="The eight sets as establishing shots: an office with desks and a wall of windows, a reception with a branded counter, a meeting room with a wall screen, a home with a sofa and a garden window, a cafe with round tables and pendant lamps, a corridor with wall lights, a street of shop fronts with trees and a bench, and a classroom with rows of desks and a board.">
161
+ </p>
162
+
163
+ **The camera.** Nine framings, seven moves, seven lighting moods, depth of field. Left alone, the
164
+ planner cuts like an editor: an answer gets a close-up, a question is seen over a shoulder, a long
165
+ line cuts away to the listener between two words, and no scene opens or ends the way the one before
166
+ it did. Every face gets room to look into, and no shot shows the back of a speaker's head.
167
+ `sastudio direct` prints the shot list before anything is filmed.
168
+
169
+ **Beginnings.** A scene opens on a filmed shot of its place with the title over it, entered the
170
+ way the story asks: a slow push into the room, a door that opens, the camera pulling back from an
171
+ object, a match cut on a face. Never a wipe.
172
+
173
+ **Voices.** [Kokoro](https://github.com/xIBBAx/clayvoyant/blob/main/docs/VOICE_PROVIDERS.md#kokoro), a free neural voice that runs on your
174
+ computer, in British and American English and Hindi. Or your own recordings, one file per line.
175
+ Or Sarvam and ElevenLabs with your own key, a spending cap and a ledger; nothing paid ever runs
176
+ without `--live`. One film per language from the same project.
177
+
178
+ **Your own models.** A rigged glTF, FBX or OBJ character can join the cast with
179
+ `sastudio model import`; sculpted characters export to GLB, FBX, OBJ or `.blend`.
180
+
181
+ ## The other renderer
182
+
183
+ The cards renderer needs no Blender and no GPU: the same scripts as a captioned film of drawn
184
+ characters who talk and blink, in three styles (sketch, flat, paper cut-out), fourteen minutes
185
+ rendered in about a minute.
186
+
187
+ ```bash
188
+ sastudio init my-film --org "Riverside Public School" --email it-help@riverside-school.in --style v3
189
+ sastudio render my-film --preset draft
190
+ ```
191
+
192
+ <p align="center">
193
+ <img src="https://raw.githubusercontent.com/xIBBAx/clayvoyant/main/docs/media/characters/styles.png" width="640" alt="The five bundled characters in four styles, one row each: sketch, flat, paper cut-out and clay.">
194
+ </p>
195
+
196
+ ## For India
197
+
198
+ Five everyday scams, each a short scene in English and Hindi, in your organisation's name:
199
+ "digital arrest" on a video call, a UPI request that wants your PIN, a caller who needs your OTP,
200
+ an electricity-bill message with an app to install, and a customer-care number from the top of a
201
+ search. Every line of advice follows an advisory from I4C, the RBI or the Department of
202
+ Telecommunications, and each scene names its source.
203
+
204
+ ```bash
205
+ sastudio init my-film --template india --org "Sunrise Senior Citizens Forum" --email help@sunrise-forum.org
206
+ sastudio film my-film --preset draft --lang hi-IN
207
+ ```
208
+
209
+ `sastudio posters my-film` prints each scene's lesson as an A4 poster, for a notice board.
210
+ `sastudio share my-film --each` makes one upright phone clip per scam, about a minute and 5 MB
211
+ each: small enough to forward. `--lang hi-Latn` gives the Hindi film with its words in Roman
212
+ letters, the way people type Hindi on a phone ("Papa, ek minute ke liye phone neeche rakhiye").
213
+
214
+ [Films for India](https://github.com/xIBBAx/clayvoyant/blob/main/docs/INDIA.md) has the sources, nine more Indian languages and a checklist for
215
+ showing a film. [Nineteen Thirty](https://github.com/xIBBAx/clayvoyant/tree/main/examples/nineteen-thirty/) is the first scene on its own, filmed
216
+ in clay.
217
+
218
+ ## How it works
219
+
220
+ ```mermaid
221
+ flowchart LR
222
+ A["studio.yaml<br/>scenes/*.yaml"] --> B["validate"]
223
+ B --> C["voices<br/>Kokoro / recorded /<br/>Sarvam / ElevenLabs"]
224
+ B --> D["direction<br/>shots, light, acting"]
225
+ B --> E["sculpt<br/>SDF clay, marching cubes"]
226
+ C --> F["timeline<br/>frame-exact"]
227
+ D --> G["film<br/>Blender, on twos"]
228
+ E --> G
229
+ F --> G
230
+ G --> H["film.mp4<br/>.srt .vtt<br/>transcript, manifest"]
231
+ ```
232
+
233
+ Acting is a pure function of the frame, so any shot can be filmed alone, shots of one scene always
234
+ agree, and a shot that stopped half way resumes at its first missing drawing. Sculpts, voices and
235
+ shots are cached by content. [ARCHITECTURE.md](https://github.com/xIBBAx/clayvoyant/blob/main/docs/ARCHITECTURE.md) and
236
+ [CLAY_MOTION.md](https://github.com/xIBBAx/clayvoyant/blob/main/docs/CLAY_MOTION.md) have the detail.
237
+
238
+ ## What it costs to run
239
+
240
+ Measured on one laptop on 2026-11-11 (Intel Core i7-10750H, 12 threads, GeForce GTX 1660 Ti with
241
+ 6 GB, Blender 5.2.2 under WSL2):
242
+
243
+ - Sculpting the sample's three characters: 46 seconds for all three, once per look.
244
+ - Voicing its thirteen lines with Kokoro on the CPU: 26 seconds for 47 seconds of speech.
245
+ - Filming at `preview` (1280x720): 4.7 seconds a drawing, about 2.3 minutes of work for each
246
+ second of film on twos. `draft` (960x540) takes about half that. People the camera cannot see are
247
+ not drawn.
248
+ - The cards renderer: the 14-minute starter film in 90 seconds at `preview` and 2 minutes 41 seconds
249
+ at `final`, on the CPU.
250
+
251
+ ## Known limits
252
+
253
+ - Kokoro has no Indian-English accent; English lines are read in a British or American voice.
254
+ - Imported models stand, walk, turn, look, talk and gesture; they do not sit or use hands.
255
+ - Lip sync follows the voice's phoneme timings when the provider reports them (Kokoro does), and
256
+ otherwise the spelling and the loudness of the voice.
257
+ - There is no sound-effect or music library yet: a film has its dialogue and, if you add one, a
258
+ music track. Rendering on a remote GPU is not built.
259
+ - Another language is another film: you write each line's translation in the scene file and
260
+ render once per language. Nothing translates for you.
261
+ - The `final` preset (1920x1080) has not yet been run for a whole film; the sample was built with
262
+ `preview`. CI has no Blender, so the clay smoke test runs only where Blender is installed.
263
+ - The starter scenes are general guidance, not policy. Replace each procedure with your own.
264
+ - On the sofa of the home set, a seated character still sinks into the cushion; Nineteen Thirty
265
+ shows it ([#28](https://github.com/xIBBAx/clayvoyant/issues/28)).
266
+ - The `india` template's Hindi has not yet been reviewed by fluent speakers from its audience
267
+ ([#20](https://github.com/xIBBAx/clayvoyant/issues/20)). Read every line aloud with someone who
268
+ will watch it before you show it.
269
+
270
+ ## Documentation
271
+
272
+ | Guide | |
273
+ |---|---|
274
+ | [Quickstart](https://github.com/xIBBAx/clayvoyant/blob/main/docs/QUICKSTART.md) | a first film in ten minutes |
275
+ | [Why it exists](https://github.com/xIBBAx/clayvoyant/blob/main/docs/WHY.md) | who it is for, what it costs, how it compares |
276
+ | [Films for India](https://github.com/xIBBAx/clayvoyant/blob/main/docs/INDIA.md) | the `india` template, its sources, Indian languages |
277
+ | [Writing with an assistant](https://github.com/xIBBAx/clayvoyant/blob/main/docs/WRITING_WITH_AN_ASSISTANT.md) | `sastudio brief`: a script from any chat assistant |
278
+ | [Installation](https://github.com/xIBBAx/clayvoyant/blob/main/docs/INSTALLATION.md) and [requirements](https://github.com/xIBBAx/clayvoyant/blob/main/docs/REQUIREMENTS.md) | Ubuntu, WSL2, Windows, Blender, GPUs |
279
+ | [Clay films](https://github.com/xIBBAx/clayvoyant/blob/main/docs/CLAY_MOTION.md) | the engine: sculpting, acting, sets, light, caching |
280
+ | [Characters](https://github.com/xIBBAx/clayvoyant/blob/main/docs/CHARACTERS.md) | describing people; every choice and slider |
281
+ | [Direction](https://github.com/xIBBAx/clayvoyant/blob/main/docs/DIRECTION.md) | sets, marks, cameras, light, gestures, openings |
282
+ | [Scenes](https://github.com/xIBBAx/clayvoyant/blob/main/docs/SCENES.md) and [configuration](https://github.com/xIBBAx/clayvoyant/blob/main/docs/CONFIGURATION.md) | writing scenes, tokens, translations |
283
+ | [Voice providers](https://github.com/xIBBAx/clayvoyant/blob/main/docs/VOICE_PROVIDERS.md) and [API keys](https://github.com/xIBBAx/clayvoyant/blob/main/docs/API_SETUP.md) | Kokoro, recordings, Sarvam, ElevenLabs |
284
+ | [Rendering](https://github.com/xIBBAx/clayvoyant/blob/main/docs/RENDERING.md) | presets, outputs, subtitles, incremental builds |
285
+ | [Architecture](https://github.com/xIBBAx/clayvoyant/blob/main/docs/ARCHITECTURE.md) and [glossary](https://github.com/xIBBAx/clayvoyant/blob/main/docs/GLOSSARY.md) | how it fits together |
286
+ | [Troubleshooting](https://github.com/xIBBAx/clayvoyant/blob/main/docs/TROUBLESHOOTING.md) | common errors and their fixes |
287
+ | [Roadmap](https://github.com/xIBBAx/clayvoyant/blob/main/docs/ROADMAP.md) and [testing](https://github.com/xIBBAx/clayvoyant/blob/main/docs/TESTING.md) | what comes next; how it is checked |
288
+
289
+ ## Responsible use
290
+
291
+ Never clone a real person's voice or use their likeness without written consent. A film does not
292
+ make an organisation compliant with any standard. Models, sounds and images you bring must be
293
+ yours to use; the studio records the licence you give for each imported model.
294
+
295
+ ## Contributing
296
+
297
+ Sets, garments, hair, gestures, scene templates, translations, voice adapters, fixes and
298
+ documentation are welcome. [CONTRIBUTING.md](https://github.com/xIBBAx/clayvoyant/blob/main/.github/CONTRIBUTING.md) explains how changes are tested and
299
+ how secrets and unlicensed material are kept out. Please follow the
300
+ [code of conduct](https://github.com/xIBBAx/clayvoyant/blob/main/.github/CODE_OF_CONDUCT.md) and report vulnerabilities privately ([SECURITY.md](https://github.com/xIBBAx/clayvoyant/blob/main/SECURITY.md)).
301
+ Working with a coding assistant? [AGENTS.md](https://github.com/xIBBAx/clayvoyant/blob/main/AGENTS.md) tells it how to make a film here and what
302
+ never to do.
303
+
304
+ ## License
305
+
306
+ Code, sculpts, sets and sample scripts: [MIT](https://github.com/xIBBAx/clayvoyant/blob/main/LICENSE). Bundled fonts: SIL Open Font License.
307
+ Every bundled file is listed in [ASSET_LICENSES.md](https://github.com/xIBBAx/clayvoyant/blob/main/docs/ASSET_LICENSES.md). Optional voice software
308
+ keeps its own licences ([details](https://github.com/xIBBAx/clayvoyant/blob/main/docs/VOICE_PROVIDERS.md#kokoro)). Films you make are yours, and
309
+ you do not need to credit this project in them.