@hraness/slopcamera 3.8.0 → 3.9.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 (35) hide show
  1. package/NOTICE.md +14 -0
  2. package/README.md +294 -298
  3. package/apps/desktop/application/html-overlay-integrity.ts +27 -4
  4. package/apps/desktop/application/operation.ts +1 -1
  5. package/apps/desktop/application/operations/spatial-render.ts +1 -1
  6. package/apps/desktop/cli/capability-manifest.ts +15 -2
  7. package/apps/desktop/cli/commands.ts +1 -1
  8. package/apps/desktop/cli/help.ts +23 -4
  9. package/apps/desktop/cli/portable-surface.ts +1 -0
  10. package/apps/desktop/cli/verbs.ts +4 -0
  11. package/apps/desktop/dist/cli/main.js +306 -284
  12. package/dist/cli.js +24 -4
  13. package/dist/{index-842t02pp.js → index-m6g0ca9b.js} +1 -1
  14. package/dist/{index-y8spxs77.js → index-mgychzh3.js} +6 -3
  15. package/dist/{index-k9bjw80z.js → index-rxx27q8b.js} +4 -4
  16. package/dist/index.js +1 -1
  17. package/dist/operations.js +1 -1
  18. package/dist/workflow.js +1 -1
  19. package/docs/README.md +4 -1
  20. package/package.json +5 -3
  21. package/skills/slopcamera/SKILL.md +2 -0
  22. package/skills/slopcamera/references/customization.md +8 -1
  23. package/skills/slopcamera/references/icon-place.md +76 -0
  24. package/skills/slopcamera/references/install.md +2 -2
  25. package/skills/slopcamera/references/music-video.md +10 -2
  26. package/skills/slopcamera/references/soundtracks.md +58 -0
  27. package/src/bounded-file.ts +135 -0
  28. package/src/cli.ts +191 -0
  29. package/src/icon-scene.ts +695 -0
  30. package/src/index.ts +2 -0
  31. package/src/mcp/tools.ts +311 -0
  32. package/src/mcp/types.ts +4 -0
  33. package/src/operations.ts +306 -0
  34. package/src/soundtrack.ts +489 -0
  35. package/src/version.ts +1 -1
package/README.md CHANGED
@@ -1,78 +1,87 @@
1
1
  # SlopCamera
2
2
 
3
- [![SlopCamera: Images, diagrams, animation, 3D and video your coding agent can keep revising.](https://slopcamera.com/og.png)](https://slopcamera.com)
3
+ [![A brass optical instrument rendered in Blender from a SlopCamera native starter](apps/web/media/native-product-poster-51b1658c46d3.webp)](https://slopcamera.com/docs/tutorials/first-native-film#inspect-the-finished-example)
4
4
 
5
- **SlopCamera is a media studio for coding agents. Codex, Claude Code, and other
6
- agents make images, diagrams, animation, 3D scenes, and edited video from source
7
- files they can keep revising.**
5
+ **SlopCamera is a media studio for coding agents.** SlopCamera lets your coding
6
+ agent make images, diagrams, animation, 3D scenes, and video from source files
7
+ it can keep revising. It works with Codex, Claude Code, and other agents.
8
8
 
9
- Describe the result you want to Codex, Claude Code, or another coding agent.
10
- SlopCamera gives the agent a Bun CLI, a TypeScript SDK, and an Agent Skill matched
11
- to the CLI version, so it can inspect sources, set up cameras, edit a composition,
12
- and render. `slopcamera mcp` runs an MCP server with a smaller, fixed set of diagram,
13
- image, and scene tools. Projects stay in local files, and there is no SlopCamera
14
- account. Generation uses your own Vercel AI Gateway account or, for prompt-only
15
- images, prepaid Hraness Credits.
9
+ A frontier model such as Claude Opus can write a video or a graphic from
10
+ scratch in one pass. SlopCamera gives the agent packaged, tested techniques to
11
+ reuse instead, for diagrams, motion graphics, 3D scenes, native Blender,
12
+ CadQuery, and Manim films, and footage edits. The agent writes a short source
13
+ file, and the SlopCamera CLI renders it, checks it, and writes the variants each
14
+ technique supports, such as light and dark diagrams or 16:9 and 9:16 cuts of a
15
+ video. The source stays beside the output, so a revision is an edit to that
16
+ file and a new render.
16
17
 
17
- [Install](#install-slopcamera) · [Make a first diagram](#make-your-first-diagram) · [Capabilities](#what-slopcamera-does) · [Documentation](https://slopcamera.com/docs) · [slopcamera.com](https://slopcamera.com)
18
-
19
- ## Made with SlopCamera
20
-
21
- [![An original brass optical instrument rendered in Blender](apps/web/media/native-product-poster-51b1658c46d3.webp)](https://slopcamera.com/docs/tutorials/first-native-film#inspect-the-finished-example)
22
-
23
- Watch the [six-second product film](https://slopcamera.com/docs/tutorials/first-native-film#inspect-the-finished-example),
24
- then change its [geometry, materials and camera](examples/showcase/native/product).
25
- For 2D motion, try the [editable editorial animation](https://slopcamera.com/docs/tutorials/first-animation).
26
- The [portrait geometry lesson](https://slopcamera.com/docs/how-to/educational-video#inspect-the-finished-example)
27
- adds mathematical typesetting, a presenter and authored captions. Each guide pairs
28
- the rendered output with source, runtime requirements and reproduction steps.
18
+ [Install](#install-slopcamera) · [First diagram](#make-your-first-diagram) · [Techniques](https://slopcamera.com/docs/reference/techniques) · [Docs](https://slopcamera.com/docs) · [Compare](#compared-with-other-tools) · [slopcamera.com](https://slopcamera.com)
29
19
 
30
20
  ## Why SlopCamera
31
21
 
32
- - **Keep creative work editable.** Native scenes, portable scenes, diagrams,
33
- and video projects retain their own sources and settings. Rendered frames
34
- and portable assets are derivatives; a video of a character does not retain
35
- its rig.
36
- - **Give agents explicit operations.** Inspect a project, name a camera, plan
37
- a render, review a candidate, and select a result. The CLI returns structured
38
- results and keeps operation receipts that identify inputs and outputs.
39
- - **Revise without replacing the originals.** Normal media edits record cuts,
40
- timing, framing, captions, and effects as project decisions. Preview and final
41
- renders use the same timeline and composition.
42
- - **Choose where computation happens.** Local rendering and editing use your
43
- machine. Optional model-backed work uses your Vercel AI Gateway access and
44
- uploads named local media only after you acknowledge it. Prompt-only images can
45
- instead run on the hosted API with prepaid Hraness Credits. Native Python
46
- authoring requires separate trust because it runs as your current user.
47
-
48
- ## Compared with other tools
49
-
50
- - [Remotion](https://www.remotion.dev/) renders React components to video and can
51
- render on AWS Lambda. It is source-available and needs a paid license for
52
- companies of four or more people.
53
- - [HyperFrames](https://github.com/heygen-com/hyperframes) renders HTML to MP4
54
- under Apache 2.0, with optional HeyGen-hosted rendering.
55
- - [MCP for Blender](https://github.com/ahujasid/mcp-for-blender), formerly Blender
56
- MCP, lets an agent drive a running Blender interactively.
57
-
58
- SlopCamera renders HTML motion too, and adds diagrams, Three.js scenes, headless
59
- Blender, CadQuery, and Manim renders, and edits of your own footage in one local
60
- project. It has no cloud rendering and a much smaller community. See
61
- [the full comparison](https://slopcamera.com/docs/explanation/why-slopcamera#compared-with-other-tools).
22
+ - **The agent writes the part that is specific to your request.** A diagram
23
+ is a JSON file of boxes and arrows, a title animation is an HTML scaffold
24
+ for one of seven profiles, and a 3D shot is scene JSON with a named camera.
25
+ The renderer, frame timing, encoding, and export formats are already
26
+ installed. This does not make it cheaper in tokens: in our
27
+ [benchmark](https://slopcamera.com/docs/explanation/token-benchmark), the median cost with
28
+ SlopCamera installed was higher than without it on all four tasks.
29
+ - **Revisions change the source, not the whole result.** Change one label,
30
+ camera, or cut and render again. Every export comes from the same source, so
31
+ light and dark versions, or 16:9 and 9:16 cuts, stay in step.
32
+ - **Checks run before the agent reports back.** A strict diagram checker,
33
+ scene audits, render plans, and `doctor` catch problems the agent can
34
+ fix before you look. They check structure, not taste; you still review the
35
+ render.
36
+ - **The techniques match the installed CLI.** The Bun CLI, a TypeScript SDK,
37
+ and an Agent Skill ship at the same version. The skill sends the agent to
38
+ the guide for its current job instead of loading every guide at once.
39
+ - **Work stays on your machine.** Projects are local files and there is no
40
+ SlopCamera account. Generation is optional: it uses your own Vercel AI
41
+ Gateway access or, for prompt-only images, prepaid Hraness Credits.
62
42
 
63
43
  ## Install SlopCamera
64
44
 
65
- Install [Bun 1.3.14 or newer](https://bun.sh), then install the verified
66
- [SlopCamera v3.6.0 release](https://github.com/hraness/slopcamera/releases/tag/v3.6.0)
67
- from its canonical archive:
45
+ Install [Bun 1.3.14 or newer](https://bun.sh), then install the
46
+ [SlopCamera v3.8.1 release](https://github.com/hraness/slopcamera/releases/tag/v3.8.1)
47
+ and its matching Agent Skill:
68
48
 
69
49
  ```sh
70
- bun add --global https://github.com/hraness/slopcamera/releases/download/v3.6.0/hraness-slopcamera-3.6.0.tgz
50
+ bun add --global https://github.com/hraness/slopcamera/releases/download/v3.8.1/hraness-slopcamera-3.8.1.tgz
71
51
  slopcamera skill install --target agents
72
52
  ```
73
53
 
74
- Contributors can build from source instead. Install Git as well, then use a new
75
- checkout:
54
+ The `agents` target works for agents that read `~/.agents/skills`. Use
55
+ `--target claude` for Claude Code, or omit the target for Codex. Add `--scope project`
56
+ inside a repository for a project-only install. Start a new
57
+ agent session so it loads the skill, then ask for a result:
58
+
59
+ > Create a two-box diagram showing ingestion flowing into review, render it,
60
+ > and show me the dark PNG.
61
+
62
+ Setup guides: [Claude Code](https://slopcamera.com/docs/tutorials/claude-code) ·
63
+ [Codex](https://slopcamera.com/docs/tutorials/codex) ·
64
+ [Other agents](https://slopcamera.com/docs/tutorials/other-agents) ·
65
+ [MCP clients](https://slopcamera.com/docs/tutorials/mcp). Native engines such as
66
+ Blender install separately; the
67
+ [capability reference](docs/reference/capabilities.md) lists what each
68
+ technique needs.
69
+
70
+ From 3.8.0, SlopCamera is a CLI with no menu-bar app or background process.
71
+ `slopcamera status` shows what is running, how the last job ended, your last
72
+ known credits balance, the newest outputs and whether the retired menu-bar
73
+ companion still opens at login. `slopcamera tui` keeps
74
+ that screen open and refreshes it; `slopcamera tui --snapshot` prints it once
75
+ and `--json` returns the data. `slopcamera outputs list|open|reveal` lists the
76
+ newest outputs or opens one on this Mac, `slopcamera commands --json` lists
77
+ every command with what it may change, and `slopcamera legacy retire` stops
78
+ the retired menu-bar companion opening at login by moving its LaunchAgent aside; it
79
+ deletes nothing, and `slopcamera doctor` prints the command that restores it.
80
+
81
+ <details>
82
+ <summary>Build from source</summary>
83
+
84
+ Install Git as well, then use a new checkout:
76
85
 
77
86
  ```sh
78
87
  git clone --branch main https://github.com/hraness/slopcamera.git slopcamera-source
@@ -83,8 +92,8 @@ bun run build:sdk
83
92
  bun run build:desktop:cli
84
93
  ```
85
94
 
86
- Keep the checkout and recorded commit. In this shell, define the command against
87
- that exact build:
95
+ Keep the checkout and recorded commit. In this shell, define the command
96
+ against that exact build:
88
97
 
89
98
  ```sh
90
99
  export SLOPCAMERA_SOURCE_ROOT="$PWD"
@@ -94,41 +103,17 @@ slopcamera doctor --json
94
103
  slopcamera skill install --target agents
95
104
  ```
96
105
 
97
- Use `--target claude` for Claude Code or omit the target for Codex. Add
98
- `--scope project` inside the target repository for a project-only skill install.
99
- The skill comes from the same checkout as the CLI. Start a new agent session
100
- after installation. In a later shell, restore the checkout path and function.
101
-
102
- Native engines install separately. The [source-install guide](docs/how-to/use-current-source.md)
103
- explains workspace placement and durable-run identity; the
104
- [capability reference](docs/reference/capabilities.md) names runtime requirements.
105
-
106
- SlopCamera is a CLI with no menu-bar app or background process.
107
- `slopcamera status` shows what is running, how the last job ended, your last
108
- known credits balance, the newest outputs and whether the retired menu-bar
109
- companion still opens at login. `slopcamera tui` keeps
110
- that screen open and refreshes it; `slopcamera tui --snapshot` prints it once
111
- and `--json` returns the data. `slopcamera outputs list|open|reveal` lists the
112
- newest outputs or opens one on this Mac, `slopcamera commands --json` lists
113
- every command with what it may change, and `slopcamera legacy retire` stops
114
- the retired menu-bar companion opening at login by moving its LaunchAgent aside; it
115
- deletes nothing, and `slopcamera doctor` prints the command that restores it.
116
-
117
- <details>
118
- <summary>Historical Atet release evidence</summary>
119
-
120
- [Atet v3.2.3](https://github.com/hraness/atet/releases/tag/v3.2.3) and its
121
- [original archive](https://github.com/hraness/atet/releases/download/v3.2.3/hraness-atet-3.2.3.tgz)
122
- remain historical publication evidence. Those immutable bytes install Atet,
123
- not SlopCamera. Renaming the repository does not create a renamed package or
124
- change an existing release.
106
+ The skill comes from the same checkout as the CLI. In a later shell, restore
107
+ the checkout path and function. The
108
+ [source-install guide](docs/how-to/use-current-source.md) covers workspace
109
+ placement and resuming long runs.
125
110
 
126
111
  </details>
127
112
 
128
113
  ## Make your first diagram
129
114
 
130
- After installing SlopCamera, this local task needs no model account. In a new directory,
131
- create the included diagram, check it, and render it:
115
+ This local task needs no model account. In a new directory, create the
116
+ included diagram, check it, and render it:
132
117
 
133
118
  ```sh
134
119
  mkdir slopcamera-first
@@ -140,243 +125,251 @@ slopcamera diagram render first.diagram.json
140
125
 
141
126
  You now have `example-flow.tldr`, `example-flow.light.svg`,
142
127
  `example-flow.dark.svg`, `example-flow.light.png`, and
143
- `example-flow.dark.png`. Open a PNG to inspect the result. The JSON remains
144
- editable, and the `.tldr` file is editable tldraw interchange. Rendering again
145
- replaces those five derived files.
146
-
147
- Follow [Your first diagram](https://slopcamera.com/docs/tutorials/first-diagram) to change a label and
148
- see the result. To animate type and SVG, [make your first animation](https://slopcamera.com/docs/tutorials/first-animation). For a moving 3D subject, use [Directed scenes](docs/spatial-scenes.md).
149
- For detailed native 3D, follow
150
- [Your first native film](docs/tutorials/first-native-film.md). To generate editable
151
- architecture from dimensions, [build a parametric design](https://slopcamera.com/docs/how-to/parametric-design).
152
-
153
- ## What SlopCamera does
154
-
155
- SlopCamera lets your coding agent make images, diagrams, animation, 3D scenes,
156
- and video from source files it can keep revising.
157
- Direct cel animation, pixel art, math explainers, and period film looks with the
158
- [style direction guide](docs/how-to/direct-visual-styles.md).
159
-
160
- ### Author scenes and direct cameras
161
-
162
- Place geometry, images, video, diagrams, and text in a portable scene. Inspect
163
- stable part IDs, make typed edits, select a named camera, and render frames,
164
- contact sheets, or video. The Three.js profile includes calibrated cameras,
165
- explicit animation, supported GLB geometry, and an explicitly selected hardware
166
- GPU path. Spark admits saved splat worlds for local camera direction.
167
-
168
- > Create a short product reveal. Keep the model editable, orbit the camera,
169
- > mount the product diagram on a screen in the scene, and show me contact frames
170
- > before rendering the video.
128
+ `example-flow.dark.png`. The JSON stays editable, and the `.tldr` file opens in
129
+ tldraw. Rendering again replaces those five files.
130
+
131
+ <picture>
132
+ <source media="(prefers-color-scheme: dark)" srcset="apps/web/media/source-to-film-dark-png-b8db55ec6e42.png">
133
+ <img alt="Diagram export, rendered scene, and footage point into Project, which points to Preview and Delivery." src="apps/web/media/source-to-film-light-png-c3c24c460490.png">
134
+ </picture>
135
+
136
+ The diagram above was rendered from one
137
+ [JSON file](examples/showcase/diagram/source-to-film.diagram.json). Each box in
138
+ it is a short object the agent writes:
139
+
140
+ ```json
141
+ {
142
+ "id": "diagram",
143
+ "type": "rect",
144
+ "x": 100,
145
+ "y": 140,
146
+ "width": 320,
147
+ "height": 140,
148
+ "radius": 24,
149
+ "label": "Diagram export",
150
+ "labelFontSize": 36,
151
+ "labelWeight": 500,
152
+ "tone": "blue"
153
+ }
154
+ ```
171
155
 
172
- The portable GLB profiles have defined geometry and material subsets. The
173
- rigged/morph profile in v3.3.1 admits bounded skins and morph targets. Saved splats
174
- capture appearance; they do not establish collision geometry or editable native
175
- meshes. See [Directed scenes](docs/spatial-scenes.md).
156
+ To revise it, the agent changed one label, and the file name for the new
157
+ outputs, in a
158
+ [copy of that file](examples/showcase/diagram/source-to-film-revised.diagram.json):
176
159
 
177
- SlopCamera v3.3.1 introduced the cinematic planning loop: a `slopcamera.spatial-direction`
178
- document describes beats, actions, camera coverage, and look intents, compiles
179
- into proposed performance/camera/cinema/material-lighting/shot documents, and
180
- fans out into bounded galleries per axis. Declared effects bind into renders,
181
- and a temporal audit samples evidence at explicit times — all deterministic,
182
- all reviewable before anything is selected.
160
+ ```diff
161
+ - "name": "source-to-film",
162
+ + "name": "source-to-film-revised",
163
+ ...
164
+ - "label": "Delivery",
165
+ + "label": "Social delivery",
166
+ ```
183
167
 
184
168
  ```sh
185
- slopcamera scene direction check direction.json --scene world.json --json
186
- slopcamera scene direction gallery direction.json --scene world.json --axis camera --output gallery.json --json
187
- slopcamera workflows plan cinematic-world --input pack-input.json --json
169
+ slopcamera diagram render source-to-film-revised.diagram.json
188
170
  ```
189
171
 
190
- The `cinematic-world` workflow consumes one inert recipe pack — a bounded,
191
- content-addressed JSON document an agent can author — and stops before
192
- selection. Registration and selection stay explicit `scene project` operations.
193
- See [Plan camera moves, lighting, and effects for a 3D scene](docs/how-to/direct-cinematic-worlds.md) and the
194
- [extension architecture](docs/extension-architecture.md).
172
+ That two-line change produced a new `.tldr` file, both SVGs, and both PNGs,
173
+ including the
174
+ [revised light PNG](apps/web/media/source-to-film-revised-light-png-9ad9767c2bdf.png).
175
+ [Your first diagram](https://slopcamera.com/docs/tutorials/first-diagram) walks
176
+ through the same edit.
177
+
178
+ ## What SlopCamera does
179
+
180
+ Each technique pairs a short source file the agent writes with commands that
181
+ render and check it. The
182
+ [techniques reference](https://slopcamera.com/docs/reference/techniques) lists
183
+ them all with their requirements.
184
+
185
+ | Technique | The agent writes | SlopCamera renders | Example |
186
+ | --- | --- | --- | --- |
187
+ | Diagrams | Diagram JSON | `.tldr`, light and dark SVG and PNG, after a strict check | [Pipeline](https://slopcamera.com/docs/tutorials/first-diagram#stack-layout) |
188
+ | Vector tracing | A path to a raster image | SVG traced locally with VTracer (macOS and Linux) | [Color and duotone](https://slopcamera.com/docs/how-to/vectorize-images#inspect-a-reproducible-example) |
189
+ | Motion graphics | An HTML scene in one of seven profiles: plain, Motion, p5, Two, Paper Shaders, Three.js, vgpu (WGSL) | H.264 MP4 with optional local audio | [Kinetic type](https://slopcamera.com/docs/how-to/render-motion-graphics#animate-type-with-motion) |
190
+ | Music-timed motion | An HTML scene, a local track, and its tempo in BPM | Motion timed to the declared tempo; beats are not detected from the audio | [Island Pulse](https://slopcamera.com/docs/how-to/music-video#inspect-the-island-example) |
191
+ | 3D scenes | Scene JSON with parts, media, and named cameras | Stills, contact sheets, and video, with orbit, dolly, crane, and rail moves | [Camera orbit](https://slopcamera.com/docs/how-to/direct-scenes#orbit-around-live-media) |
192
+ | Parametric design | Named dimensions and constraints | Geometry and a scene you can re-render at new sizes | [Pavilion](https://slopcamera.com/docs/how-to/parametric-design#crescent-pavilion) |
193
+ | Native films | A Blender, CadQuery, or Manim program from a starter | Frames and video from your installed engines | [Product film](https://slopcamera.com/docs/tutorials/first-native-film#inspect-the-finished-example) |
194
+ | Explainer video | A Manim scene, captions, and a presenter | A lesson video with typeset math | [Geometry lesson](https://slopcamera.com/docs/how-to/educational-video#inspect-the-finished-example) |
195
+ | Footage edits | Cuts, captions, reframes, and color as project decisions | 16:9, 9:16, 1:1, and 4:5 exports from one edit | [Four formats](https://slopcamera.com/docs/how-to/edit-video#landscape-delivery) |
196
+
197
+ SlopCamera also composes vector icon scenes with the bundled icon.place library
198
+ and reads Soundfish scores or MIDI files into beat grids for music-timed scenes,
199
+ both locally and without a model. Neither renders audio.
200
+
201
+ Model-backed generation of images, video, and speech is available through your
202
+ own provider access, and cinematic effects, particles, and character
203
+ performance can be planned from source. The gallery has no rendered examples
204
+ of these yet.
195
205
 
196
206
  ### Film native worlds and educational animation
197
207
 
198
- SlopCamera can direct Blender for detailed sets, materials,
199
- lighting, skinned characters, cloth and liquid caches; CadQuery for parametric
200
- solids and STEP; and Manim Community for mathematical animation. Seven editable
201
- starters include a product, character, shaded street, cloth, liquid, CAD bracket,
202
- and educational presenter.
203
-
204
- > Build a shaded street with an original presenter. Explain the idea with an
205
- > animated diagram mounted in the world, then pull the camera back into the
206
- > city. Keep the native scenes and diagram sources for later edits.
207
-
208
- Native source and exact job settings remain retained. Verified frames can become
209
- an ordinary project clip. `slopcamera scene camera-track` samples an explicit
210
- camera clock for reuse. Supported GLB derivatives and calibrated cameras can
211
- cross between native and portable scenes; rigs, solvers, and procedural materials
212
- remain native. Blender and Python environments are installed separately, and
208
+ SlopCamera can direct Blender for sets, materials, lighting, skinned
209
+ characters, cloth, and liquid caches; CadQuery for parametric solids and STEP;
210
+ and Manim Community for mathematical animation. Seven editable starters
211
+ include a product, character, shaded street, cloth, liquid, CAD bracket, and
212
+ educational presenter. Watch the
213
+ [six-second product film](https://slopcamera.com/docs/tutorials/first-native-film),
214
+ then change its [geometry, materials, and camera](examples/showcase/native/product).
215
+ For 2D motion, try the
216
+ [editable editorial animation](https://slopcamera.com/docs/tutorials/first-animation).
217
+ The [portrait geometry lesson](https://slopcamera.com/docs/how-to/educational-video)
218
+ adds mathematical typesetting, a presenter, and captions.
219
+
220
+ Native source runs as the current user. Blender and Python environments install
221
+ separately, and native
213
222
  source execution requires explicit current-user trust. See [Native film studio](docs/studio.md)
214
- and [Make a math explainer video with Manim](docs/how-to/educational-video.md).
215
-
216
- ### Build diagrams and motion graphics
217
-
218
- Create editable diagrams with tldraw, SVG, and PNG outputs, or turn raster artwork
219
- into SVG locally with VTracer. [Compare a color trace and duotone](https://slopcamera.com/docs/how-to/vectorize-images)
220
- from the same original raster. Animate graphic layers with HTML, SVG, Motion,
221
- p5, Two, Paper Shaders, or Three.js. Outputs can stand alone or join a video
222
- project. The optional vgpu example renders programmable WebGPU passes into
223
- retained raster frames for use on a world-space screen.
224
-
225
- [Render motion graphics from HTML](https://slopcamera.com/docs/how-to/render-motion-graphics)
226
- connects original examples across all seven profiles to editable source and exact
227
- render requests. Try the [editorial title](examples/showcase/html/editorial.json),
228
- [kinetic typography](examples/showcase/html/kinetic-title.json), or
229
- [Three.js island with original music](examples/showcase/html/island-pulse.json).
230
- These source examples live in the current repository; `html render` ships in v3.2.8.
231
-
232
- Use `slopcamera html catalog` to inspect the admitted local creative tools. The
233
- [creative toolkit reference](docs/html-overlay-creative-toolkit.md) distinguishes
234
- available profiles from upstream possibilities. vgpu does not enable shared GPU
235
- textures or a Three WebGPU renderer inside the current WebGL2/Spark profile.
236
-
237
- ### Generate and direct media
238
-
239
- Discover image, video, speech, and transcription models through your own Vercel
240
- AI Gateway access. Set `AI_GATEWAY_API_KEY` in the local process environment;
241
- the Vercel CLI is optional. Generate images from text and references, add a voiceover,
242
- transcribe sound, or create video shots using the selected model's supported
243
- inputs. Availability and pricing come from the live catalog.
244
-
245
- Without a Gateway credential, prepaid Hraness Credits run prompt-only image
246
- generation through the hosted API: `slopcamera credits topup` prints a hosted
247
- checkout, `slopcamera credits wait` installs the returned device token, and
248
- `slopcamera ai image generate --hosted` bills that wallet instead of your own
249
- Gateway key. A stored token also routes `ai image generate` to the hosted API
250
- automatically when no Gateway credential is configured.
251
-
252
- The released CLI also provides `direct` shot recipes: retain a film
253
- budget across attempts, review each take before accepting it, and use an accepted
254
- clip's last decoded frame as the next shot's reference. Changed predecessors
255
- invalidate affected continuations while earlier paid results remain retained.
256
- Model continuity is reviewed, not guaranteed. Budget estimates are not a provider
257
- billing cap.
258
-
259
- See [Generate media](docs/how-to/generate-media.md), [Direct short generated clips](docs/directing-video.md),
260
- and [Gateway configuration](docs/vercel.md). Generation uses caller-owned access;
261
- uploading local references requires the matching explicit acknowledgement.
223
+ for the starters and engine requirements.
224
+
225
+ ### Generate media
226
+
227
+ Discover image, video, speech, and transcription models through your own
228
+ Vercel AI Gateway access, with `AI_GATEWAY_API_KEY` set in the local process
229
+ environment. Generate images from text and references, add a voiceover,
230
+ transcribe sound, or create short video shots. Availability and pricing come
231
+ from the live model catalog. Without a Gateway key, prepaid Hraness Credits
232
+ run prompt-only image generation through the hosted API
233
+ (`slopcamera ai image generate --hosted`). See
234
+ [Generate media](docs/how-to/generate-media.md) and
235
+ [Direct short generated clips](docs/directing-video.md).
262
236
 
263
237
  ### Edit footage and deliver finished videos
264
238
 
265
239
  Import existing footage or recording bundles. Remove pauses and filler words,
266
240
  align sound, reframe speakers, zoom into screen actions, and add captions,
267
- graphics, color, and audio treatment. Preview candidates before selecting a
268
- result, then export clean and captioned versions in 16:9, 9:16, 1:1, and 4:5
269
- from the same edit.
241
+ graphics, color, and audio treatment. Preview a candidate, then export clean
242
+ and captioned versions in each format from the same edit.
270
243
 
271
- > Edit my product demo: cut the pauses, zoom into each important click, keep the
272
- > speaker framed, add captions and `logo.svg`, and show a preview before export.
244
+ > Edit my product demo: cut the pauses, zoom into each important click, keep
245
+ > the speaker framed, add captions and `logo.svg`, and show a preview before
246
+ > export.
273
247
 
274
- The released and current CLIs edit existing recording bundles; they do not
275
- capture new recordings. Bundles can carry clicks, cursor movement, key activity,
276
- and focused-input information. Automatic screen-action zooms need this metadata.
248
+ SlopCamera edits recordings you already have; it does not record the screen,
249
+ camera, or microphone.
277
250
  Standalone media imports need an existing project; `html render`, `studio assemble`,
278
- or `direct assemble` can create one. Read [`PRIVACY.md`](PRIVACY.md) before editing
279
- sensitive material.
280
-
281
- Start with [Edit a video](docs/how-to/edit-video.md) or inspect a reusable recipe:
251
+ or `direct assemble` can create one. Read [`PRIVACY.md`](PRIVACY.md) before
252
+ editing sensitive material. Eight built-in workflows package common jobs such as
253
+ social cuts and talking-head cleanup:
282
254
 
283
255
  ```sh
284
256
  slopcamera workflows list --json
285
257
  slopcamera workflows show social-variants --json
286
258
  ```
287
259
 
260
+ Start with [Edit a video](docs/how-to/edit-video.md) or
261
+ [Run workflows](docs/how-to/run-workflows.md).
262
+
288
263
  ## How SlopCamera works
289
264
 
290
- Keep the source that owns each creative decision. A native scene owns a rig or
291
- simulation; a portable scene owns supported geometry, cameras, and media surfaces;
292
- a diagram owns its objects and labels; a video project owns cuts and delivery.
293
- SlopCamera connects these through explicit assets and rendered derivatives.
265
+ Each kind of work keeps its own source file. A native scene holds a rig or
266
+ simulation; a portable scene holds geometry, cameras, and media placement; a
267
+ diagram holds its shapes and labels; a video project holds cuts and delivery
268
+ settings. SlopCamera connects them through files: a rendered diagram can
269
+ appear on a screen in a 3D scene, and native frames can become a clip in a
270
+ video project.
294
271
 
295
- 1. **Prepare the sources.** Import footage and assets or author a scene, diagram,
296
- or native program. Inspect available tools before choosing an engine.
272
+ 1. **Prepare the sources.** Import footage and assets, or author a scene,
273
+ diagram, or native program from a starter.
297
274
  2. **Direct the result.** Name cameras, shots, timing, composition, and output
298
275
  settings. Generate missing media only when the job calls for it.
299
276
  3. **Review a render.** Inspect contact frames, motion, captions, sound, and
300
- continuity. Preserve candidates and select the approved result.
301
- 4. **Deliver and revise.** Export the required formats and retain source paths,
302
- project decisions, and operation receipts for the next change.
277
+ continuity, then select the version to keep.
278
+ 4. **Deliver and revise.** Export the formats you need. The sources and
279
+ project decisions stay in place for the next change.
280
+
281
+ The same system is available four ways: the Bun CLI, the TypeScript SDK, the
282
+ Agent Skill, and an MCP server (`slopcamera mcp`) with a smaller fixed toolset.
303
283
 
304
284
  ### Instructions for coding agents
305
285
 
306
286
  Read local project instructions and inspect sources before changing them. Use
307
- `slopcamera --help`, `slopcamera doctor --json`, `slopcamera operations list --json`, and the
308
- installed skill to discover the exact local surface. Agree on material output
309
- requirements, preview substantial changes, inspect the resulting files, and
310
- report their paths. Do not infer provider access, native trust, or model quality
311
- from a successful plan.
287
+ `slopcamera --help`, `slopcamera doctor --json`,
288
+ `slopcamera operations list --json`, and the installed skill to discover the
289
+ exact local commands. Agree on output requirements, preview substantial
290
+ changes, inspect the resulting files, and report their paths. A successful
291
+ plan does not show that provider access, native trust, or model quality is in
292
+ place.
293
+
294
+ ## Compared with other tools
312
295
 
313
- [Run agent workflows](docs/how-to/run-workflows.md) covers reusable recipes,
314
- declarative graphs, approvals, and resuming work.
296
+ Details as of 28 September 2026.
297
+
298
+ | | Agent writes | License | Cloud rendering | Choose it when |
299
+ | --- | --- | --- | --- | --- |
300
+ | SlopCamera | Diagram JSON, HTML scenes, scene JSON, Blender, CadQuery, or Manim programs, and video edits | MIT | Video renders on your machine; a hosted API checks and renders diagrams and generates images | One agent needs diagrams, 3D, native films, and footage edits in one local project |
301
+ | [Remotion](https://www.remotion.dev/) | React components | Source-available; free for individuals, non-profits, and organizations of up to 3 people | AWS Lambda in your account | Your team writes React and renders at scale |
302
+ | [HyperFrames](https://github.com/heygen-com/hyperframes) | HTML, CSS, and JavaScript animation | Apache 2.0 | HeyGen-hosted rendering or AWS Lambda | You want HTML motion graphics rendered to MP4 |
303
+
304
+ Remotion and HyperFrames have much larger communities. For a one-off image or
305
+ clip, a hosted app needs no install. Read
306
+ [SlopCamera vs Remotion](https://slopcamera.com/docs/explanation/slopcamera-vs-remotion),
307
+ [SlopCamera vs HyperFrames](https://slopcamera.com/docs/explanation/slopcamera-vs-hyperframes),
308
+ [Remotion alternatives for coding agents](https://slopcamera.com/docs/explanation/remotion-alternatives-for-coding-agents),
309
+ or [Why SlopCamera](https://slopcamera.com/docs/explanation/why-slopcamera).
315
310
 
316
311
  ## Important limitations
317
312
 
318
- - **Runtime support varies.** The CLI uses Bun on macOS, Linux, and Windows.
313
+ - **Runtime support varies.** The CLI runs with Bun on macOS, Linux, and Windows.
319
314
  Media, browser, GPU, and native studio profiles
320
- have additional requirements. Use the capability reference and `slopcamera doctor`.
321
- - **Interchange preserves a supported subset.** Native rigs and simulations do
322
- not become editable Three scenes by exporting a GLB. An image or video on a
323
- plane supplies pixels, not hidden geometry. Calibrated camera exchange does
324
- not match lighting, depth of field, or color treatment automatically.
325
- - **Generated media requires review.** Models may change subject identity,
326
- motion, or text. Saved AI worlds are appearance assets, not validated robotics
327
- or reinforcement-learning environments.
328
- - **Trusted code is not sandboxed.** Native Python and caller-authored Bun
329
- workflows run with the current user's access. Hashes and receipts identify
330
- observed inputs and outputs; they do not make arbitrary code hermetic.
331
- - **MCP is a subset.** Its 17 fixed tools check and render diagrams, plan and audit
332
- scenes, and run six bounded operation codes. It does not
333
- expose every local CLI operation and never mutates project state.
315
+ need additional software, and vector tracing does not run on Windows. Run
316
+ `slopcamera doctor` and see the capability reference.
317
+ - **Checks do not judge quality.** A passing check or finished render shows
318
+ that the job ran, not that the result looks right. Models may also change a
319
+ subject's identity, motion, or text; review generated media.
320
+ - **Interchange keeps a supported subset.** Exporting a GLB does not turn a
321
+ native rig or simulation into an editable scene. An image or video on a
322
+ plane supplies pixels, not geometry.
323
+ - **Pixels can differ across machines.** Native tools, codecs, GPU drivers, and
324
+ provider models affect results, so the same source does not promise
325
+ identical output elsewhere.
326
+ - **Trusted code is not sandboxed.** Native Python and your own Bun workflows
327
+ run with the current user's access.
328
+ - **MCP is a subset.** Current source has 21 fixed tools that check and render diagrams, plan and
329
+ audit scenes, compose icon scenes and soundtrack beat grids, and run ten
330
+ operation codes. It does not expose every CLI command and never changes
331
+ project state. The verified v3.8.1 archive has a 17-tool subset and six
332
+ registered operations; icon and soundtrack composition require a later source build.
334
333
 
335
334
  ## Design and trust
336
335
 
337
- There is no SlopCamera account, hosted project database, or browser generation service.
338
- Ordinary editing and rendering remain local. Gateway generation and selected
339
- cloud analysis use credentials from the local process and request explicit
340
- acknowledgement before uploading named media. The optional hosted API runs each
341
- paid image call in an ephemeral workspace against a Hraness Credits device token
342
- and keeps no credentials or projects; the device token lives in owner-only files
343
- under the CLI state root and never reaches argv or receipts. This website never accepts a
344
- Gateway credential. Native Python requires separate authorization. Custom Bun
345
- workflow modules execute when loaded, including during check and plan; review
346
- their source first. Both have the current user's access, including potential
347
- network access, outside the normal media-operation boundary.
348
-
349
- Original media remains unchanged by normal edit operations. Projects retain
350
- explicit revisions, and important operations record their inputs and outputs.
351
- Native tools, providers, codecs, and GPU drivers can affect results, so retained
352
- source identity alone does not promise identical pixels on another machine.
353
-
354
- See [Architecture](docs/architecture.md), [`SECURITY.md`](SECURITY.md),
355
- [`PRIVACY.md`](PRIVACY.md), and [`NOTICE.md`](NOTICE.md) for the detailed boundaries.
356
-
357
- Your agent renders images, diagrams, scenes, animation, and video from source
358
- files you keep, and important operations record their inputs and outputs in
359
- receipts, so a rendered result arrives with the record of how it was made: the
360
- design every Hraness project shares. [The thread through
361
- hraness](https://hraness.com/writing/the-thread-through-hraness) follows that
362
- design across the projects, and the [ALGAL
336
+ There is no SlopCamera account or hosted project database. Video editing and
337
+ rendering run on your machine; the optional hosted API checks and renders
338
+ diagrams and generates images. Gateway generation and cloud
339
+ analysis use credentials from the local process and ask for your
340
+ acknowledgement before uploading named media. The optional hosted image API
341
+ runs each paid call in a short-lived workspace against a Hraness Credits device
342
+ token and keeps no credentials or projects; the token lives in owner-only files
343
+ and never appears in command arguments or operation records. The website never accepts a Gateway
344
+ credential.
345
+
346
+ Native Python requires separate authorization. Custom Bun workflow modules run
347
+ when loaded, including during check and plan, so review their source first.
348
+ Both run with the current user's access, including network access. Normal edit
349
+ operations leave original media unchanged, and important operations record
350
+ their inputs and outputs.
351
+
352
+ Read [Architecture](docs/architecture.md), [`SECURITY.md`](SECURITY.md),
353
+ [`PRIVACY.md`](PRIVACY.md), and [`NOTICE.md`](NOTICE.md) for details. Keeping
354
+ the source beside the result is the design every Hraness project shares; [The
355
+ thread through hraness](https://hraness.com/writing/the-thread-through-hraness)
356
+ follows it across projects, and the [ALGAL
363
357
  vision](https://algal.computer/docs/vision/) states the bet behind it.
364
358
 
365
359
  ## Documentation
366
360
 
367
361
  - **Learn:** [Your first diagram](docs/tutorials/first-diagram.md) · [Your first native film](docs/tutorials/first-native-film.md).
368
- - **Make a result:** [Edit video](docs/how-to/edit-video.md) · [Generate media](docs/how-to/generate-media.md) · [Run workflows](docs/how-to/run-workflows.md) · [Educational video](docs/how-to/educational-video.md) · [Plan camera moves, lighting, and effects for a 3D scene](docs/how-to/direct-cinematic-worlds.md).
369
- - **Look up support:** [Capabilities and release availability](docs/reference/capabilities.md) · [SDK entrypoints](docs/reference/sdk.md) · [Creative tools](docs/html-overlay-creative-toolkit.md).
362
+ - **Make a result:** [Edit video](docs/how-to/edit-video.md) · [Generate media](docs/how-to/generate-media.md) · [Run workflows](docs/how-to/run-workflows.md) · [Educational video](docs/how-to/educational-video.md) · [Plan camera moves, lighting, and effects for a 3D scene](docs/how-to/direct-cinematic-worlds.md) · [Direct visual styles](docs/how-to/direct-visual-styles.md).
363
+ - **Look up support:** [Techniques](https://slopcamera.com/docs/reference/techniques) · [Capabilities](docs/reference/capabilities.md) · [SDK entrypoints](docs/reference/sdk.md) · [Creative tools](docs/html-overlay-creative-toolkit.md).
370
364
  - **Understand the system:** [Architecture](docs/architecture.md) · [Native studio](docs/studio.md) · [Directed scenes](docs/spatial-scenes.md) · [Extension architecture](docs/extension-architecture.md).
371
365
 
372
- The [documentation index](docs/README.md) connects these paths.
366
+ The [documentation index](docs/README.md) connects these paths, and
367
+ [slopcamera.com/docs](https://slopcamera.com/docs) publishes them.
373
368
 
374
- ## For software integrations
369
+ ### Use the SDK
375
370
 
376
371
  Run this example with Bun from the source checkout after `bun run build:sdk`.
377
- The checkout resolves its own `@hraness/slopcamera` package exports.
378
-
379
- SDK imports do not start the CLI or inspect local project state. For example,
372
+ SDK imports do not start the CLI or read local project state. For example,
380
373
  convert an existing local image into an SVG:
381
374
 
382
375
  ```ts
@@ -387,9 +380,9 @@ console.log(result.receipt.sourceSha256, result.receipt.svgSha256)
387
380
  ```
388
381
 
389
382
  Use `@hraness/slopcamera/code` for declarative workflow graphs,
390
- `@hraness/slopcamera/workflow` for trusted Bun workflows, and `@hraness/slopcamera/local/*`
391
- for the local media engine. See the [SDK reference](docs/reference/sdk.md) for
392
- entrypoint scope and execution effects.
383
+ `@hraness/slopcamera/workflow` for trusted Bun workflows, and
384
+ `@hraness/slopcamera/local/*` for the local media engine. See the
385
+ [SDK reference](docs/reference/sdk.md).
393
386
 
394
387
  ## Verification
395
388
 
@@ -398,11 +391,11 @@ bun install --frozen-lockfile --ignore-scripts
398
391
  bun run check
399
392
  ```
400
393
 
401
- The required check covers public SDK boundaries, the local runtime, schemas,
402
- Agent Skill, generated entrypoints, static site, deterministic and property
403
- tests, and packed consumers. Native and provider-dependent profiles require
404
- their corresponding external qualification; a local unit-test pass does not
405
- establish them. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the complete gates.
394
+ The check covers the public SDK, the local runtime, schemas, the Agent Skill,
395
+ generated entrypoints, the website, deterministic and property tests, and
396
+ installs of the packed package. Native engines and model providers need their
397
+ own runs on real hardware and accounts; a local test pass does not cover them.
398
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md) for every check.
406
399
 
407
400
  ## Contributing
408
401
 
@@ -416,17 +409,20 @@ changing a package or runtime boundary. Report vulnerabilities through
416
409
 
417
410
  ## Optional support
418
411
 
419
- All features remain available without payment. `slopcamera support` opens no browser
420
- and shows an optional way to support continued development. Agents can read
421
- `slopcamera support protocol --json` at closeout and request `support offer --json`
422
- once after useful work. A quiet result needs no mention. Unknown callers, including
423
- PTYs, receive separately throttled stderr discovery without changing task stdout or
424
- claiming an invitation. Imported CLI functions and SDK/MCP workflows stay quiet.
425
-
426
- Acknowledge with `support shown <id>` only after a persistent human-visible invitation
427
- has been emitted. In final-only hosts, include it once in the final answer without
428
- an acknowledgment; the unacknowledged offer expires after ten minutes and does not
429
- consume the weekly shown cooldown. `support dismiss` opts out across the local suite;
430
- `support snooze` pauses for 30 days. `HRANESS_SUPPORT_AUDIENCE=off` disables ambient
431
- notices and claimed offers. Payment is an explicit human choice on the shared support
432
- page; SlopCamera has no product-updates mailing list or account-status lookup.
412
+ Every feature works without payment. `slopcamera support` shows an optional way
413
+ to support development and opens no browser. `support dismiss` opts out across
414
+ the local suite, `support snooze` pauses the notice for 30 days, and
415
+ `HRANESS_SUPPORT_AUDIENCE=off` disables ambient notices. Agents follow the
416
+ [support reference](skills/slopcamera/references/support.md).
417
+
418
+ ## Former name
419
+
420
+ <details>
421
+ <summary>Historical Atet release evidence</summary>
422
+
423
+ SlopCamera was called Atet until September 2026.
424
+ [Atet v3.2.3](https://github.com/hraness/atet/releases/tag/v3.2.3) and its
425
+ [original archive](https://github.com/hraness/atet/releases/download/v3.2.3/hraness-atet-3.2.3.tgz)
426
+ still install Atet, not SlopCamera.
427
+
428
+ </details>