@instruktlabs/kiln 1.0.0 → 1.2.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 (92) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/CHANGELOG.md +60 -3
  5. package/CONTRIBUTING.md +16 -7
  6. package/README.md +95 -381
  7. package/dist/agent-run.mjs +220 -150
  8. package/dist/build.json +40 -28
  9. package/dist/cli.mjs +242 -163
  10. package/dist/mcp-engine.mjs +412 -154
  11. package/dist/mcp-server.mjs +1 -1
  12. package/docs/architecture.md +6 -3
  13. package/docs/chatgpt.md +20 -5
  14. package/docs/examples.md +40 -170
  15. package/docs/install.md +100 -35
  16. package/docs/migration.md +20 -0
  17. package/docs/sdk.md +49 -5
  18. package/docs/tools-operations.md +1529 -0
  19. package/lib/asset-widget-uri.d.ts +9 -0
  20. package/lib/asset-widget-uri.js +9 -0
  21. package/lib/cli-render-mode.js +10 -3
  22. package/lib/discovery/index.d.ts +1 -1
  23. package/lib/discovery/index.js +2 -2
  24. package/lib/discovery/portable.d.ts +9 -0
  25. package/lib/discovery/portable.js +6 -0
  26. package/lib/discovery/service.d.ts +3 -1
  27. package/lib/discovery/service.js +4 -2
  28. package/lib/engine-identity.d.ts +1 -1
  29. package/lib/engine-identity.js +1 -1
  30. package/lib/evaluator/isolation.js +19 -5
  31. package/lib/evaluator/probe-invariants.d.ts +11 -0
  32. package/lib/evaluator/probe-invariants.js +36 -0
  33. package/lib/evaluator/probe-worker.js +16 -4
  34. package/lib/loopback.d.ts +6 -0
  35. package/lib/loopback.js +6 -0
  36. package/lib/mcp-core.d.ts +210 -0
  37. package/lib/mcp-core.js +279 -0
  38. package/lib/mcp-engine.d.ts +59 -0
  39. package/lib/mcp-engine.js +289 -0
  40. package/lib/mcp-manifest.d.ts +15 -0
  41. package/lib/mcp-manifest.js +65 -0
  42. package/lib/mcp.d.ts +5 -0
  43. package/lib/mcp.js +2 -0
  44. package/lib/render-service-host.js +1 -1
  45. package/lib/tools/discovery.d.ts +1 -1
  46. package/lib/tools/discovery.js +11 -9
  47. package/lib/tools/materials.d.ts +1 -1
  48. package/lib/tools/materials.js +44 -14
  49. package/lib/tools/operation-contract.d.ts +8 -0
  50. package/lib/tools/operation-contract.js +37 -0
  51. package/lib/tools/operations.d.ts +3 -0
  52. package/lib/tools/operations.js +154 -0
  53. package/lib/tools/registry.d.ts +6 -2
  54. package/lib/tools/registry.js +71 -23
  55. package/package.json +23 -1
  56. package/plugin.json +1 -1
  57. package/plugins/kiln-engine/.claude-plugin/icon.png +0 -0
  58. package/plugins/kiln-engine/.claude-plugin/plugin.json +9 -3
  59. package/plugins/kiln-engine/PRIVACY.md +100 -0
  60. package/plugins/kiln-engine/README.md +103 -18
  61. package/plugins/kiln-engine/{scripts/setup-workspace.mjs → bin/kiln-setup-workspace.mjs} +37 -9
  62. package/plugins/kiln-engine/package-provenance.json +15 -8
  63. package/plugins/kiln-engine/plugin.json +10 -4
  64. package/plugins/kiln-engine/runtime.json +10 -1
  65. package/plugins/kiln-engine/skills/kiln-setup-workspace/SKILL.md +17 -18
  66. package/plugins/kiln-engine/skills/kiln-setup-workspace/references/plugin-install.md +28 -8
  67. package/plugins/kiln-engine/skills/kiln-setup-workspace/references/renderer-setup.md +11 -0
  68. package/scripts/create-workspace.mjs +71 -13
  69. package/scripts/workspace-config.mjs +239 -0
  70. package/scripts/workspace-project.mjs +384 -0
  71. package/scripts/workspace-transaction.mjs +504 -0
  72. package/skills/kiln-setup-workspace/SKILL.md +17 -18
  73. package/skills/kiln-setup-workspace/references/plugin-install.md +28 -8
  74. package/skills/kiln-setup-workspace/references/renderer-setup.md +11 -0
  75. package/src/cli-render-mode.ts +9 -9
  76. package/src/cli.ts +3 -3
  77. package/src/discovery/index.ts +2 -0
  78. package/src/discovery/portable.ts +9 -0
  79. package/src/discovery/service.ts +3 -1
  80. package/src/engine-identity.ts +1 -1
  81. package/src/evaluator/isolation.ts +27 -6
  82. package/src/evaluator/probe-invariants.ts +50 -0
  83. package/src/evaluator/probe-worker.ts +22 -4
  84. package/src/mcp-core.ts +3 -0
  85. package/src/mcp-engine.ts +11 -1
  86. package/src/mcp.ts +5 -0
  87. package/src/render-service-host.ts +1 -1
  88. package/src/tools/discovery.ts +20 -10
  89. package/src/tools/materials.ts +59 -15
  90. package/src/tools/operation-contract.ts +51 -0
  91. package/src/tools/operations.ts +177 -0
  92. package/src/tools/registry.ts +100 -20
@@ -2085,7 +2085,7 @@ import { readFile } from "node:fs/promises";
2085
2085
  var KILN_ASSET_WIDGET_URI = "ui://kiln/asset-v5.html";
2086
2086
 
2087
2087
  // src/engine-identity.ts
2088
- var ENGINE_VERSION = "1.0.0";
2088
+ var ENGINE_VERSION = "1.2.0";
2089
2089
  var ENGINE_INSTALL_URL = new URL("../", import.meta.url).href;
2090
2090
 
2091
2091
  // src/requirements-json.ts
@@ -4,11 +4,11 @@ Kiln builds JavaScript programs into GLB assets, validates structure, and render
4
4
 
5
5
  ## Entry points
6
6
 
7
- The v1 checkout prepares `@instruktlabs/kiln` with compiled ESM and TypeScript
7
+ The npm package `@instruktlabs/kiln` ships compiled ESM and TypeScript
8
8
  declarations. Node consumers need no source loader. Build the SDK on a fresh source
9
9
  checkout before using package imports; the installed archive already contains it.
10
10
  See the [SDK contract](sdk.md) for runtime and experimental-feature boundaries.
11
- There is no published npm release yet.
11
+ See [installation](install.md) for package, source-checkout and plugin setup.
12
12
 
13
13
  | Subpath | Purpose |
14
14
  |---|---|
@@ -66,12 +66,15 @@ CPU render paths are deterministic for the same inputs. GPU images can vary by d
66
66
  ## Development
67
67
 
68
68
  ```bash
69
+ node scripts/example-archive.mjs --fetch
69
70
  bun run typecheck
70
71
  bun run lint
71
72
  bun run test
72
73
  bun run test:coverage
73
74
  ```
74
75
 
75
- Offline tests pin CPU rendering and exercise the checked-in example programs. The coverage ratchet lives in [scripts/check-coverage.mjs](https://github.com/instruktlabs/kiln/blob/main/scripts/check-coverage.mjs). Threshold decreases require an explicit measured rationale. Live provider tests require an explicit opt-in.
76
+ Prepare the pinned historical corpus once with the explicit fetch command above.
77
+ Subsequent tests stay offline, pin CPU rendering and include those archived programs.
78
+ The coverage ratchet lives in [scripts/check-coverage.mjs](https://github.com/instruktlabs/kiln/blob/main/scripts/check-coverage.mjs). Threshold decreases require an explicit measured rationale. Live provider tests require an explicit opt-in.
76
79
 
77
80
  Core dependencies include Three.js, glTF Transform, Manifold, Acorn, and Zod. The agent SDK is an optional peer. Keep provider adapters compatible with the SDK's declared interface version; a TypeScript cast cannot fix a runtime protocol mismatch.
package/docs/chatgpt.md CHANGED
@@ -2,17 +2,27 @@
2
2
 
3
3
  Kiln's local CLI and stdio MCP server share the same collection store and tool registry. ChatGPT web needs a reachable MCP connection: a private Secure MCP Tunnel can carry this existing stdio server without making a public endpoint. The tunnel process must remain running while ChatGPT discovers or calls tools.
4
4
 
5
+ This is an owner-managed development connection. Kiln's public hosted service and
6
+ directory listing are deferred. Local CLI/MCP use needs no Kiln account; the
7
+ optional OpenAI tunnel separately requires Platform access and a runtime API key.
8
+
5
9
  ## Connect a private development server
6
10
 
7
- 1. Build with the supported toolchain: `bun run build:runtime`.
8
- 2. Create a tunnel in OpenAI Platform, scoped to the intended ChatGPT workspace. The account needs Tunnels Read and Manage; its runtime API key needs Read and Use. Existing organization roles may already grant these. Do not broaden other permissions.
9
- 3. Download a pinned official `openai/tunnel-client` release and verify its release digest. This dogfood used Windows amd64 v0.0.14. Keep credentials in the environment or a supported secret reference, never in the plugin.
11
+ 1. [Install Kiln](install.md) and create a dedicated asset workspace. The npm package already contains the built server; an engine checkout needs `bun run build:runtime` first.
12
+ 2. Create a tunnel in OpenAI Platform and associate it with the intended ChatGPT workspace and Platform organization. Creating it requires Tunnels Read and Manage; running or selecting it requires Read and Use. ChatGPT workspace policy also applies.
13
+ 3. Obtain the client through the [official tunnel setup guide](https://developers.openai.com/api/docs/guides/secure-mcp-tunnels#set-up-tunnel-client). Record the version you test. Keep credentials outside the plugin and source repository.
10
14
  4. Configure the tunnel's stdio command to launch `node /absolute/path/dist/mcp-server.mjs` in a dedicated asset workspace. Set `KILN_PROGRAM_STORE` and `KILN_COLLECTIONS` explicitly. The server does not need provider keys. The tunnel control process needs its OpenAI key, which should not be inherited by the MCP child.
11
- 5. Run `tunnel-client doctor`, then `tunnel-client run` with the configured profile. In ChatGPT's Plugins page choose Create app, Tunnel, the intended tunnel, and No Auth for the stdio server. Access is still controlled by the private tunnel; this does not create a public unauthenticated service.
15
+ 5. Run `tunnel-client doctor --profile NAME --explain`, then `tunnel-client run --profile NAME`. In ChatGPT Plugins, use the plus button, Add custom MCP server, then Tunnel. Select your tunnel, configure authentication, review the warning and create the plugin. Kiln's local stdio server has no separate OAuth; access is controlled by the private tunnel.
12
16
  6. Verify the seventeen-tool MCP surface appears, including `kiln_discover`, `kiln_renderer`, `kiln_present` and `kiln_project`. Test source submission, actual render-image visibility, save/list, copy, restore/edit, and exact revision export. Refresh connector metadata after changing tools.
13
17
 
14
18
  Local subprocess evaluation has deadlines and a sanitized environment; it is not the Linux isolated evaluator's OS security boundary. This setup is for an owner-controlled development test. A hosted multi-user deployment needs tenant-scoped storage, authentication, and the isolated evaluator posture.
15
19
 
20
+ A private tunnel is not eligible as a public plugin endpoint. OpenAI's
21
+ [connection guide](https://developers.openai.com/plugins/deploy/connect-chatgpt)
22
+ requires a public HTTPS endpoint for submission. The steps above were checked
23
+ against official documentation on 7 October 2026; that is a documentation check,
24
+ not a new end-to-end ChatGPT qualification.
25
+
16
26
  ## Expose the skills
17
27
 
18
28
  Keep `skills/*/SKILL.md` and their adjacent `references/` directories as the maintained source. Skill descriptions provide discovery; instructions load on selection, and reference files provide modeling detail when needed. Avoid pasting the complete modeling catalog into every tool description or prompt.
@@ -45,4 +55,9 @@ The local viewer (`kiln view`) provides browser downloads, revision selection, c
45
55
 
46
56
  The Node and Bun JavaScript runtimes can produce tiny floating-point differences in regenerated GLB JSON. Preserve the original artifact for byte-exact delivery and rebuild with the recorded engine's supported Node toolchain for reproducibility. ZIP import/export preserves original bytes regardless of runtime.
47
57
 
48
- Official references checked September 6, 2026: [Connect ChatGPT](https://developers.openai.com/plugins/deploy/connect-chatgpt), [Secure MCP Tunnels](https://developers.openai.com/api/docs/guides/secure-mcp-tunnels), and [Package plugins](https://developers.openai.com/plugins/build/plugins). Surface availability can change; verify the actual host before claiming installation or download support.
58
+ The uploader and download observations above are historical tests from September 6,
59
+ 2026, not claims about every current account. Check the actual client's installation,
60
+ image display and file download behavior before advertising support. See
61
+ [Connect ChatGPT](https://developers.openai.com/plugins/deploy/connect-chatgpt),
62
+ [Secure MCP Tunnels](https://developers.openai.com/api/docs/guides/secure-mcp-tunnels)
63
+ and [Package plugins](https://developers.openai.com/plugins/build/plugins).
package/docs/examples.md CHANGED
@@ -1,171 +1,41 @@
1
- # Example collection
2
-
3
- [How credits and build records work](https://github.com/instruktlabs/kiln/blob/main/docs/example-provenance.md).
4
-
5
- The public gallery contains 62 selected examples. Archived studies remain in the
6
- repository but are not presented in this gallery.
7
-
8
- These are historical showcases generated with earlier Kiln versions. They have
9
- not been fully vetted and may contain intersections, disconnected parts or other
10
- modeling errors. They are not golden outputs or reference solutions. Replaying
11
- one can reveal a change in engine behavior; a passing replay does not establish
12
- asset quality. Gallery repair, regeneration and replacement are separate
13
- from engine releases.
14
-
15
- Listed triangle counts describe those historical builds. They are not fixed
16
- targets for the upgraded engine's tessellation or geometry cleanup.
17
-
18
- Browse the [interactive gallery](https://kilnstudio.tools/#/gallery), or open a program and its render below. Credits distinguish historical source headers from recorded current runs. These examples span different briefs and authoring runs; they are not a model ranking.
19
-
20
- <table>
21
- <tr>
22
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/mechanical-peacock.png"><img src="https://assets.kilnstudio.tools/renders/mechanical-peacock.png" alt="Brass mechanical peacock with an articulated jewel-colored fan"></a><br><b><a href="../examples/mechanical-peacock.kiln.js">mechanical-peacock</a></b><br>44,896 tris &middot; Claude Opus 5<br><sub>Articulated enamel fan; neck connection repaired by a Codex maintainer agent</sub></td>
23
- </tr>
24
- <tr>
25
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/orbital-station.png"><img src="https://assets.kilnstudio.tools/renders/orbital-station.png" alt="a rotating-torus orbital station with lit window bands, four spokes, a docking hub and solar wings, generated by Kiln"></a><br><b><a href="../examples/orbital-station.kiln.js">orbital-station</a></b><br>15,040 tris &middot; GPT-6 Astra<br><sub>Habitat ring, solar arrays and docking modules</sub></td>
26
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/abyssal-surveyor.png"><img src="https://assets.kilnstudio.tools/renders/abyssal-surveyor.png" alt="Custom curved hull, guarded thrusters and articulated sampling arm"></a><br><b><a href="../examples/abyssal-surveyor.kiln.js">abyssal-surveyor</a></b><br>34,456 tris &middot; GPT-6 Astra<br><sub>Custom curved hull, guarded thrusters and articulated sampling arm</sub></td>
27
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/kestrel-rescue-craft.png"><img src="https://assets.kilnstudio.tools/renders/kestrel-rescue-craft.png" alt="Sculpted rescue aircraft with articulated tilt rotors"></a><br><b><a href="../examples/kestrel-rescue-craft.kiln.js">kestrel-rescue-craft</a></b><br>54,272 tris &middot; GPT-6 Astra<br><sub>Sculpted rescue aircraft with articulated tilt rotors</sub></td>
28
- </tr>
29
- <tr>
30
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/solar-sail-courier.png"><img src="https://assets.kilnstudio.tools/renders/solar-sail-courier.png" alt="Faceted gold sails on four trussed spars"></a><br><b><a href="../examples/solar-sail-courier.kiln.js">solar-sail-courier</a></b><br>27,756 tris &middot; Gemini 3.8 Flash<br><sub>Faceted gold sails on four trussed spars</sub></td>
31
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/orrery.png"><img src="https://assets.kilnstudio.tools/renders/orrery.png" alt="a brass orrery with an emissive sun and planets on arms, generated by Kiln"></a><br><b><a href="../examples/orrery.kiln.js">orrery</a></b><br>15,720 tris &middot; Gemini 3.8 Flash<br><sub>Geared arms and orbiting planetary spheres</sub></td>
32
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/typewriter.png"><img src="https://assets.kilnstudio.tools/renders/typewriter.png" alt="a cast-iron typewriter with a fan of type bars, brass trim and a sheet in the platen, generated by Kiln"></a><br><b><a href="../examples/typewriter.kiln.js">typewriter</a></b><br>14,128 tris &middot; Muse Spark 1.3<br><sub>Rows of keys and typebars arranged on an arc</sub></td>
33
- </tr>
34
- <tr>
35
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/twisting-canopy.png"><img src="https://assets.kilnstudio.tools/renders/twisting-canopy.png" alt="Twisting canopy with curved ribs and offset supports"></a><br><b><a href="../examples/twisting-canopy.kiln.js">twisting-canopy</a></b><br>5,304 tris &middot; Gemini 3.8 Flash<br><sub>Twisting roof surface with curved ribs and offset supports</sub></td>
36
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/bench-refractor.png"><img src="https://assets.kilnstudio.tools/renders/bench-refractor.png" alt="Lofted pedestal, recessed optical opening and focusing slide"></a><br><b><a href="../examples/bench-refractor.kiln.js">bench-refractor</a></b><br>7,476 tris &middot; Muse Spark 1.3<br><sub>Lofted pedestal, recessed optical opening and focusing slide</sub></td>
37
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/research-vessel.png"><img src="https://assets.kilnstudio.tools/renders/research-vessel.png" alt="Workboat hull with an offset crane and sliding service platform"></a><br><b><a href="../examples/research-vessel.kiln.js">research-vessel</a></b><br>24,306 tris &middot; GPT-6 Astra<br><sub>Workboat hull with an offset crane and sliding service platform</sub></td>
38
- </tr>
39
- <tr>
40
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/field-gun.png"><img src="https://assets.kilnstudio.tools/renders/field-gun.png" alt="a Napoleonic field gun on a wooden carriage, generated by Kiln"></a><br><b><a href="../examples/field-gun.kiln.js">field-gun</a></b><br>15,544 tris &middot; Claude Opus 5<br><sub>Cut breech geometry and repeated wheel spokes</sub></td>
41
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/cathedral.png"><img src="https://assets.kilnstudio.tools/renders/cathedral.png" alt="a Gothic cathedral with flying buttresses and lit stained glass, generated by Kiln"></a><br><b><a href="../examples/cathedral.kiln.js">cathedral</a></b><br>19,888 tris &middot; Claude Opus 5<br><sub>Repeated stone bays and recessed window openings</sub></td>
42
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/mech.png"><img src="https://assets.kilnstudio.tools/renders/mech.png" alt="a walking mech with plated limbs, generated by Kiln"></a><br><b><a href="../examples/mech.kiln.js">mech</a></b><br>18,398 tris &middot; Claude Opus 5<br><sub>Articulated limbs with fitted armour panels</sub></td>
43
- </tr>
44
- <tr>
45
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/diving-helmet.png"><img src="https://assets.kilnstudio.tools/renders/diving-helmet.png" alt="a brass standard diving helmet, generated by Kiln"></a><br><b><a href="../examples/diving-helmet.kiln.js">diving-helmet</a></b><br>16,420 tris &middot; Claude Opus 5<br><sub>Brass housing, glass ports and copper fittings</sub></td>
46
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/cafe-racer.png"><img src="https://assets.kilnstudio.tools/renders/cafe-racer.png" alt="a cafe racer motorcycle, generated by Kiln"></a><br><b><a href="../examples/cafe-racer.kiln.js">cafe-racer</a></b><br>16,966 tris &middot; Claude Opus 5<br><sub>Curved frame tubes and a tapered fuel tank</sub></td>
47
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/penny-farthing.png"><img src="https://assets.kilnstudio.tools/renders/penny-farthing.png" alt="a penny-farthing bicycle, generated by Kiln"></a><br><b><a href="../examples/penny-farthing.kiln.js">penny-farthing</a></b><br>12,450 tris &middot; Claude Opus 5<br><sub>Curved frame and radial wire spokes</sub></td>
48
- </tr>
49
- <tr>
50
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/sushi-store.png"><img src="https://assets.kilnstudio.tools/renders/sushi-store.png" alt="a two-storey Japanese sushi shopfront with a tiled roof, generated by Kiln"></a><br><b><a href="../examples/sushi-store.kiln.js">sushi-store</a></b><br>24,082 tris &middot; Claude Opus 5<br><sub>Layered shopfront, awning and recessed display</sub></td>
51
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/street-lamp.png"><img src="https://assets.kilnstudio.tools/renders/street-lamp.png" alt="a cast-iron gas street lamp, generated by Kiln"></a><br><b><a href="../examples/street-lamp.kiln.js">street-lamp</a></b><br>13,036 tris &middot; Claude Opus 5<br><sub>Revolved metal profiles and glass lanterns</sub></td>
52
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/arcade-cabinet.png"><img src="https://assets.kilnstudio.tools/renders/arcade-cabinet.png" alt="an upright arcade cabinet, generated by Kiln"></a><br><b><a href="../examples/arcade-cabinet.kiln.js">arcade-cabinet</a></b><br>19,916 tris &middot; Gemini 3.8 Flash<br><sub>Swept cabinet profile with recessed controls</sub></td>
53
- </tr>
54
- <tr>
55
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/robot-arm.png"><img src="https://assets.kilnstudio.tools/renders/robot-arm.png" alt="a six-axis industrial robot arm with a parallel gripper, generated by Kiln"></a><br><b><a href="../examples/robot-arm.kiln.js">robot-arm</a></b><br>15,324 tris &middot; Claude Opus 5<br><sub>Animated chain of articulated joints</sub></td>
56
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/carousel.png"><img src="https://assets.kilnstudio.tools/renders/carousel.png" alt="a fairground carousel with a striped canopy and horses, generated by Kiln"></a><br><b><a href="../examples/carousel.kiln.js">carousel</a></b><br>16,356 tris &middot; Gemini 3.8 Flash<br><sub>Rotating platform with repeated horses and supports</sub></td>
57
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/ferris-wheel.png"><img src="https://assets.kilnstudio.tools/renders/ferris-wheel.png" alt="a ferris wheel with lit gondolas on a braced frame, generated by Kiln"></a><br><b><a href="../examples/ferris-wheel.kiln.js">ferris-wheel</a></b><br>10,452 tris &middot; Gemini 3.8 Flash<br><sub>Radial steel lattice and suspended cabins</sub></td>
58
- </tr>
59
- <tr>
60
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/longcase-clock.png"><img src="https://assets.kilnstudio.tools/renders/longcase-clock.png" alt="a mahogany longcase clock with a painted dial, generated by Kiln"></a><br><b><a href="../examples/longcase-clock.kiln.js">longcase-clock</a></b><br>12,600 tris &middot; Gemini 3.8 Flash<br><sub>Panelled wooden case and an exposed clock face</sub></td>
61
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/radio-telescope.png"><img src="https://assets.kilnstudio.tools/renders/radio-telescope.png" alt="a steerable parabolic radio telescope on a pedestal, generated by Kiln"></a><br><b><a href="../examples/radio-telescope.kiln.js">radio-telescope</a></b><br>16,532 tris &middot; Gemini 3.8 Flash<br><sub>Tracking dish with a supporting truss</sub></td>
62
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/anglerfish.png"><img src="https://assets.kilnstudio.tools/renders/anglerfish.png" alt="a deep-sea anglerfish with warty skin, a gaping jaw of needle teeth and a glowing lure on an arched illicium, generated by Kiln"></a><br><b><a href="../examples/anglerfish.kiln.js">anglerfish</a></b><br>19,108 tris &middot; Claude Opus 5<br><sub>Curved body, tapered fins and an illuminated lure</sub></td>
63
- </tr>
64
- <tr>
65
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/hot-air-balloon.png"><img src="https://assets.kilnstudio.tools/renders/hot-air-balloon.png" alt="a hot-air balloon with a striped envelope and a wicker basket, generated by Kiln"></a><br><b><a href="../examples/hot-air-balloon.kiln.js">hot-air-balloon</a></b><br>9,816 tris &middot; Gemini 3.8 Flash<br><sub>Twenty-four envelope gores above a suspended basket</sub></td>
66
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/vending-machine.png"><img src="https://assets.kilnstudio.tools/renders/vending-machine.png" alt="a lit drinks vending machine behind glass, generated by Kiln"></a><br><b><a href="../examples/vending-machine.kiln.js">vending-machine</a></b><br>12,468 tris &middot; Claude Opus 5<br><sub>Recessed product rows and illuminated controls</sub></td>
67
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/gramophone.png"><img src="https://assets.kilnstudio.tools/renders/gramophone.png" alt="an acoustic gramophone with a faceted brass horn on a hinged mahogany case, generated by Kiln"></a><br><b><a href="../examples/gramophone.kiln.js">gramophone</a></b><br>10,724 tris &middot; Gemini 3.8 Flash<br><sub>Brass horn, wooden cabinet and hinged lid</sub></td>
68
- </tr>
69
- <tr>
70
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/lighthouse.png"><img src="https://assets.kilnstudio.tools/renders/lighthouse.png" alt="a stone lighthouse with a copper-domed lantern, a gallery rail and a keeper&#39;s cottage on a rocky islet, generated by Kiln"></a><br><b><a href="../examples/lighthouse.kiln.js">lighthouse</a></b><br>16,492 tris &middot; Muse Spark 1.3<br><sub>Tower, keeper’s buildings and a rocky base</sub></td>
71
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/steam-locomotive.png"><img src="https://assets.kilnstudio.tools/renders/steam-locomotive.png" alt="a green 4-4-0 steam locomotive with a cowcatcher, brass domes and side rods, generated by Kiln"></a><br><b><a href="../examples/steam-locomotive.kiln.js">steam-locomotive</a></b><br>19,256 tris &middot; Muse Spark 1.3<br><sub>Coupled driving wheels and connecting rods</sub></td>
72
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/windmill.png"><img src="https://assets.kilnstudio.tools/renders/windmill.png" alt="a Dutch tower windmill in brick with a shingled cap, a stage gallery and four lattice sails, generated by Kiln"></a><br><b><a href="../examples/windmill.kiln.js">windmill</a></b><br>9,872 tris &middot; DeepSeek V4 Flash<br><sub>Masonry tower with a rotating sail assembly</sub></td>
73
- </tr>
74
- <tr>
75
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/aircraft-carrier.png"><img src="https://assets.kilnstudio.tools/renders/aircraft-carrier.png" alt="an aircraft carrier with an angled flight deck, deck markings and an island superstructure, generated by Kiln"></a><br><b><a href="../examples/aircraft-carrier.kiln.js">aircraft-carrier</a></b><br>17,904 tris &middot; Claude Opus 5<br><sub>Flight deck, island and aircraft at ship scale</sub></td>
76
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/air-defense-radar.png"><img src="https://assets.kilnstudio.tools/renders/air-defense-radar.png" alt="a truck-mounted air-defence phased-array radar with the panel raised, generated by Kiln"></a><br><b><a href="../examples/air-defense-radar.kiln.js">air-defense-radar</a></b><br>16,094 tris &middot; Claude Opus 5<br><sub>Modelled antenna grid on a mobile platform</sub></td>
77
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/fighter-jet.png"><img src="https://assets.kilnstudio.tools/renders/fighter-jet.png" alt="a single-seat multirole fighter on its landing gear with canted tails and open nozzles, generated by Kiln"></a><br><b><a href="../examples/fighter-jet.kiln.js">fighter-jet</a></b><br>18,172 tris &middot; Claude Opus 5<br><sub>Lofted fuselage and tapered wing sections</sub></td>
78
- </tr>
79
- <tr>
80
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/comms-satellite.png"><img src="https://assets.kilnstudio.tools/renders/comms-satellite.png" alt="a geostationary communications satellite with gold thermal blankets, two solar wings and three dish antennas, generated by Kiln"></a><br><b><a href="../examples/comms-satellite.kiln.js">comms-satellite</a></b><br>18,824 tris &middot; Claude Opus 5<br><sub>Solar arrays extending from a compact satellite bus</sub></td>
81
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/gothic-gatehouse.png"><img src="https://assets.kilnstudio.tools/renders/gothic-gatehouse.png" alt="a Gothic castle gatehouse with two drum towers, machicolations and a lowered drawbridge, generated by Kiln"></a><br><b><a href="../examples/gothic-gatehouse.kiln.js">gothic-gatehouse</a></b><br>10,428 tris &middot; Gemini 3.8 Flash<br><sub>Twin towers, arched passage and approach bridge</sub></td>
82
- </tr>
83
- <tr>
84
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/cable-stayed-bridge.png"><img src="https://assets.kilnstudio.tools/renders/cable-stayed-bridge.png" alt="a cable-stayed road bridge with a portal pylon and fanned stay cables, generated by Kiln"></a><br><b><a href="../examples/cable-stayed-bridge.kiln.js">cable-stayed-bridge</a></b><br>7,580 tris &middot; Omen Alpha<br><sub>Deck segments, pylons and individual stay cables</sub></td>
85
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/tram.png"><img src="https://assets.kilnstudio.tools/renders/tram.png" alt="a 1920s city tram on rails with a trolley pole reaching up to the overhead wire, generated by Kiln"></a><br><b><a href="../examples/tram.kiln.js">tram</a></b><br>12,540 tris &middot; Gemini 3.8 Flash<br><sub>Windowed passenger body with roof-mounted fittings</sub></td>
86
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/tugboat.png"><img src="https://assets.kilnstudio.tools/renders/tugboat.png" alt="a harbour tugboat with a rope fender belt, an orange funnel and a raised wheelhouse, generated by Kiln"></a><br><b><a href="../examples/tugboat.kiln.js">tugboat</a></b><br>9,856 tris &middot; Gemini 3.8 Flash<br><sub>Lofted hull, deck equipment and raised wheelhouse</sub></td>
87
- </tr>
88
- <tr>
89
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/deep-sea-diver.png"><img src="https://assets.kilnstudio.tools/renders/deep-sea-diver.png" alt="an atmospheric diving suit with a copper helmet, jointed limbs and weighted boots, generated by Kiln"></a><br><b><a href="../examples/deep-sea-diver.kiln.js">deep-sea-diver</a></b><br>10,876 tris &middot; Gemini 3.8 Flash<br><sub>Jointed pressure suit with a rigid helmet</sub></td>
90
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/pumpjack.png"><img src="https://assets.kilnstudio.tools/renders/pumpjack.png" alt="an oilfield pumpjack with a walking beam, horsehead and counterweights on a skid, generated by Kiln"></a><br><b><a href="../examples/pumpjack.kiln.js">pumpjack</a></b><br>10,236 tris &middot; Gemini 3.8 Flash<br><sub>Walking beam and crank-driven linkage</sub></td>
91
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/drilling-rig.png"><img src="https://assets.kilnstudio.tools/renders/drilling-rig.png" alt="a land drilling rig with a derrick over its substructure, mud tanks and a pipe rack, generated by Kiln"></a><br><b><a href="../examples/drilling-rig.kiln.js">drilling-rig</a></b><br>11,048 tris &middot; Gemini 3.8 Flash<br><sub>Derrick, pipework and raised operating platforms</sub></td>
92
- </tr>
93
- <tr>
94
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/harbour-crane.png"><img src="https://assets.kilnstudio.tools/renders/harbour-crane.png" alt="a rail-mounted harbour crane with a luffing jib and a spreader on the hoist, generated by Kiln"></a><br><b><a href="../examples/harbour-crane.kiln.js">harbour-crane</a></b><br>10,568 tris &middot; Gemini 3.8 Flash<br><sub>Braced steel frame with suspended lifting gear</sub></td>
95
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/crawler-crane.png"><img src="https://assets.kilnstudio.tools/renders/crawler-crane.png" alt="a lattice-boom crawler crane on tracks with the hook block hanging, generated by Kiln"></a><br><b><a href="../examples/crawler-crane.kiln.js">crawler-crane</a></b><br>12,660 tris &middot; MiniMax M3<br><sub>Repeated lattice boom sections on a tracked base</sub></td>
96
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/excavator.png"><img src="https://assets.kilnstudio.tools/renders/excavator.png" alt="a tracked hydraulic excavator with the boom, stick and bucket curled in, generated by Kiln"></a><br><b><a href="../examples/excavator.kiln.js">excavator</a></b><br>12,400 tris &middot; Omen Alpha<br><sub>Articulated boom, bucket and hydraulic rams</sub></td>
97
- </tr>
98
- <tr>
99
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/printing-press.png"><img src="https://assets.kilnstudio.tools/renders/printing-press.png" alt="a wooden hand printing press with a screw platen, type cases and ink balls, generated by Kiln"></a><br><b><a href="../examples/printing-press.kiln.js">printing-press</a></b><br>10,188 tris &middot; Gemini 3.8 Flash<br><sub>Rollers, drive wheels and an exposed feed mechanism</sub></td>
100
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/pipe-organ.png"><img src="https://assets.kilnstudio.tools/renders/pipe-organ.png" alt="a church pipe organ with ranks of display pipes above a console and pedalboard, generated by Kiln"></a><br><b><a href="../examples/pipe-organ.kiln.js">pipe-organ</a></b><br>10,340 tris &middot; Gemini 3.8 Flash<br><sub>Pipe ranks, wooden casework and keyboard console</sub></td>
101
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/planetarium-projector.png"><img src="https://assets.kilnstudio.tools/renders/planetarium-projector.png" alt="a dumbbell planetarium projector with two star globes on a trunnion mount, generated by Kiln"></a><br><b><a href="../examples/planetarium-projector.kiln.js">planetarium-projector</a></b><br>10,932 tris &middot; Gemini 3.8 Flash<br><sub>Dark optical housings on a central support</sub></td>
102
- </tr>
103
- <tr>
104
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/astronomical-clock.png"><img src="https://assets.kilnstudio.tools/renders/astronomical-clock.png" alt="an astronomical clock with a gilt astrolabe dial in a carved stone case, generated by Kiln"></a><br><b><a href="../examples/astronomical-clock.kiln.js">astronomical-clock</a></b><br>9,324 tris &middot; Gemini 3.8 Flash<br><sub>Layered astronomical dial and exposed mechanisms</sub></td>
105
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/espresso-machine.png"><img src="https://assets.kilnstudio.tools/renders/espresso-machine.png" alt="a three-group commercial espresso machine with portafilters, steam wands and cups warming on top, generated by Kiln"></a><br><b><a href="../examples/espresso-machine.kiln.js">espresso-machine</a></b><br>19,080 tris &middot; GLM 5.3 Flash<br><sub>Polished metal housing, fittings and group heads</sub></td>
106
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/pinball-machine.png"><img src="https://assets.kilnstudio.tools/renders/pinball-machine.png" alt="a pinball machine with a lit backbox, a glassed playfield and a rear cabinet bay, generated by Kiln"></a><br><b><a href="../examples/pinball-machine.kiln.js">pinball-machine</a></b><br>8,700 tris &middot; GLM 5.3 Flash<br><sub>Sloped playfield cabinet and raised backbox</sub></td>
107
- </tr>
108
- <tr>
109
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/trebuchet.png"><img src="https://assets.kilnstudio.tools/renders/trebuchet.png" alt="a counterweight trebuchet with a slung beam, a ballast box and the sling laid out on the ground, generated by Kiln"></a><br><b><a href="../examples/trebuchet.kiln.js">trebuchet</a></b><br>2,652 tris &middot; Gemini 3.8 Flash<br><sub>Timber frame, counterweight and throwing arm</sub></td>
110
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/rigid-airship.png"><img src="https://assets.kilnstudio.tools/renders/rigid-airship.png" alt="a 1930s rigid passenger airship moored at its mast, with a promenade window row, engine cars and a cruciform tail, generated by Kiln"></a><br><b><a href="../examples/rigid-airship.kiln.js">rigid-airship</a></b><br>11,764 tris &middot; GPT-6 Astra<br><sub>Lofted envelope with gondola and tail surfaces</sub></td>
111
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/blast-furnace.png"><img src="https://assets.kilnstudio.tools/renders/blast-furnace.png" alt="a blast furnace with three hot-blast stoves, downcomer piping, galleries and a cast house, generated by Kiln"></a><br><b><a href="../examples/blast-furnace.kiln.js">blast-furnace</a></b><br>11,964 tris &middot; GPT-6 Astra<br><sub>Furnace stack, hot-blast stoves and connecting pipework</sub></td>
112
- </tr>
113
- <tr>
114
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/clock-tower.png"><img src="https://assets.kilnstudio.tools/renders/clock-tower.png" alt="a Gothic clock tower with gilt dials, a louvred belfry, crocketed pinnacles and a leaded spire, generated by Kiln"></a><br><b><a href="../examples/clock-tower.kiln.js">clock-tower</a></b><br>11,664 tris &middot; GPT-6 Astra<br><sub>Four clock faces within a detailed tower housing</sub></td>
115
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/nautilus-habitat.png"><img src="https://assets.kilnstudio.tools/renders/nautilus-habitat.png" alt="Spiral shell roof around an open two-level habitat"></a><br><b><a href="../examples/nautilus-habitat.kiln.js">nautilus-habitat</a></b><br>41,380 tris &middot; GPT-6 Astra<br><sub>Spiral shell roof around an open two-level habitat</sub></td>
116
- </tr>
117
- <tr>
118
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/ribbon-tea-pavilion.png"><img src="https://assets.kilnstudio.tools/renders/ribbon-tea-pavilion.png" alt="Curved timber roof over an open tea pavilion"></a><br><b><a href="../examples/ribbon-tea-pavilion.kiln.js">ribbon-tea-pavilion</a></b><br>19,384 tris &middot; Gemini 3.8 Flash<br><sub>Curved timber roof over an open tea pavilion</sub></td>
119
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/seed-vault.png"><img src="https://assets.kilnstudio.tools/renders/seed-vault.png" alt="Open seed-pod shell around a specimen carousel"></a><br><b><a href="../examples/seed-vault.kiln.js">seed-vault</a></b><br>33,632 tris &middot; Gemini 3.8 Flash<br><sub>Open seed-pod shell around a specimen carousel</sub></td>
120
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/kinetic-wave.png"><img src="https://assets.kilnstudio.tools/renders/kinetic-wave.png" alt="Articulated teal and bronze fins on a dark plinth"></a><br><b><a href="../examples/kinetic-wave.kiln.js">kinetic-wave</a></b><br>18,960 tris &middot; Gemini 3.8 Flash<br><sub>Articulated teal and bronze fins on a dark plinth</sub></td>
121
- </tr>
122
- <tr>
123
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/alpine-cable-terminal.png"><img src="https://assets.kilnstudio.tools/renders/alpine-cable-terminal.png" alt="Timber station with an exposed pulley and suspended cabin"></a><br><b><a href="../examples/alpine-cable-terminal.kiln.js">alpine-cable-terminal</a></b><br>10,000 tris &middot; Gemini 3.8 Flash<br><sub>Timber station with an exposed pulley and suspended cabin</sub></td>
124
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/deco-radio.png"><img src="https://assets.kilnstudio.tools/renders/deco-radio.png" alt="Stepped walnut cabinet with a brass grille and tuning controls"></a><br><b><a href="../examples/deco-radio.kiln.js">deco-radio</a></b><br>13,216 tris &middot; Gemini 3.8 Flash<br><sub>Stepped walnut cabinet with a brass grille and tuning controls</sub></td>
125
- <td width="33%" valign="top"><a href="https://assets.kilnstudio.tools/renders/polar-rover.png"><img src="https://assets.kilnstudio.tools/renders/polar-rover.png" alt="Tracked expedition rover with folding solar panels and instruments"></a><br><b><a href="../examples/polar-rover.kiln.js">polar-rover</a></b><br>22,478 tris &middot; Gemini 3.8 Flash<br><sub>Tracked expedition rover with folding solar panels and instruments</sub></td>
126
- </tr>
127
- </table>
128
-
129
- Still images are rendered from the source by `bun scripts/hero-shots.ts`. The [interactive gallery](https://matthew-kissinger.github.io/kiln/#/gallery) builds GLBs from the same programs and provides orbit, wireframe, and source views.
130
-
131
- The collection includes historical studies and current authoring runs. Each example retains its recorded model credit and any known refinement history; missing isolation evidence is marked as unrecorded. These examples are not a comparative model benchmark.
132
-
133
- These are examples, not a controlled model ranking. The [dogfooding notes](https://github.com/instruktlabs/kiln/blob/main/docs/dogfooding.md) distinguish new-asset generation from targeted editing and explain the context supplied for the latest runs.
134
-
135
- ## Animation
136
-
137
- `animate()` is part of the same program. It returns named clips built from rotation and position
138
- tracks against the parts the program already created, so a joint that moves is the joint that was
139
- modelled -- there is no separate rig to keep in sync, and a diff of the motion is a diff of the same
140
- file. The model reviews a clip the way it reviews a still: `kiln_screenshot_animation` poses the
141
- scene across the clip and hands back the frames, which is how a walk that slides, a knee that bends
142
- backwards, or an arm that swings through its own base gets caught before the GLB is written.
143
-
144
- <table>
145
- <tr>
146
- <td width="50%" valign="top"><img src="https://assets.kilnstudio.tools/renders/robot-arm.gif" alt="an industrial robot arm running a pick-and-place cycle"><br><b><a href="../examples/robot-arm.kiln.js">robot-arm</a></b><br><sub>a six-axis pick-and-place cycle</sub></td>
147
- <td width="50%" valign="top"><img src="https://assets.kilnstudio.tools/renders/carousel.gif" alt="a fairground carousel turning, with horses rising and falling"><br><b><a href="../examples/carousel.kiln.js">carousel</a></b><br><sub>a turn, with the horses on their own phase</sub></td>
148
- </tr>
149
- <tr>
150
- <td width="50%" valign="top"><img src="https://assets.kilnstudio.tools/renders/orrery.gif" alt="an orrery with planets orbiting a lit sun"><br><b><a href="../examples/orrery.kiln.js">orrery</a></b><br><sub>planets on nested arms off one drive</sub></td>
151
- <td width="50%" valign="top"><img src="https://assets.kilnstudio.tools/renders/radio-telescope.gif" alt="a radio telescope dish slewing in azimuth and elevation"><br><b><a href="../examples/radio-telescope.kiln.js">radio-telescope</a></b><br><sub>a slew in azimuth and elevation</sub></td>
152
- </tr>
153
- </table>
154
-
155
- These are rendered by `bun scripts/anim-gifs.ts` from the checked-in programs, through the same PBR
156
- port as the stills. One detail in that script is worth borrowing if you build something similar: the
157
- port fits its camera to whatever bounding box it is handed, so a sequence whose posed extent changes
158
- -- the arm above varies by 63% between folded and reaching -- will appear to breathe as the camera
159
- refits every frame. Because the projection is orthographic and the fit is exact, each frame can be
160
- put back onto one shared camera by a scale and a translation that are both computable, which is a
161
- correction rather than an approximation.
162
-
163
- ![Six-view contact sheet of a procedurally generated field gun](https://github.com/instruktlabs/kiln/blob/main/examples/hero-sheet.png)
164
-
165
- *The contact sheet the model looks at. `../examples/field-gun.kiln.js`, 15,544 triangles: a revolved
166
- bronze barrel bored with a boolean, a stepped oak carriage carrying strapwork and bolt heads, and
167
- twelve-spoke wheels with iron tyres.*
168
-
169
- ```bash
170
- bun run kiln render ../examples/field-gun.kiln.js --views sheet.png
1
+ # Asset examples
2
+
3
+ For recent work, browse the [gallery](https://kilnstudio.tools/gallery/) and
4
+ [interactive scenes](https://kilnstudio.tools/scenes/). Download Runtime assets for
5
+ an application or Editable assets to retain the authored sources and revisions.
6
+
7
+ | Collection | Sources and examples |
8
+ | --- | --- |
9
+ | Troy | [Horse, ships, characters, buildings and props](https://github.com/instruktlabs/kiln/tree/main/packs/troy) |
10
+ | Farm | [Buildings, animals, crops and equipment](https://github.com/instruktlabs/kiln/tree/main/packs/farm) |
11
+ | Vehicles | [Six road vehicles and saved revisions](https://github.com/instruktlabs/kiln/tree/main/packs/vehicles) |
12
+ | Golden Gate Bridge | [Standalone bridge sources](https://github.com/instruktlabs/kiln/tree/main/packs/golden-gate-bridge) |
13
+ | Foundry Floor | [Factory asset sources](https://github.com/instruktlabs/kiln/tree/main/packs/foundry-floor) |
14
+
15
+ Follow the [asset source guide](https://github.com/instruktlabs/kiln/blob/main/packs/README.md)
16
+ to restore a collection into a separate workspace. Saved material dependencies
17
+ and the recorded engine version matter when rebuilding an existing asset.
18
+ Scene interaction code is separate from the models.
19
+
20
+ For small examples of current APIs, use `kiln_discover` or `kiln discover`. Its
21
+ helper examples and recipes come from the maintained engine catalog, not the
22
+ repository's historical `examples/` folder. Neither that folder nor the asset
23
+ packs are bundled into the npm package or automatically supplied to an agent.
24
+
25
+ ## Historical collection
26
+
27
+ The old standalone examples are preserved in the [website archive](https://kilnstudio.tools/gallery/archive/)
28
+ and [Git history](https://github.com/instruktlabs/kiln/tree/fda71ac775750f25390b6ee30082ebc56463edc6/examples).
29
+ They are historical showcases, not recommended implementations or quality baselines.
30
+
31
+ They are no longer part of the active source tree. Contributors building the
32
+ archive gallery or running the full regression corpus can restore the exact
33
+ programs, credits and image records into an ignored cache:
34
+
35
+ ```sh
36
+ node scripts/example-archive.mjs --fetch
171
37
  ```
38
+
39
+ Run this from an engine checkout. It does not add files to a user's asset workspace
40
+ or change the npm installation. No teaching collection or asset-discovery index
41
+ is added. Small engine-specific regression fixtures remain under tests.
package/docs/install.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Install Kiln for your coding agent
2
2
 
3
- This guide covers **Kiln 1.0** under the package name `@instruktlabs/kiln`.
3
+ This guide describes **Kiln 1.1** under the package name `@instruktlabs/kiln`.
4
4
  Use a version available in the [npm registry](https://www.npmjs.com/package/@instruktlabs/kiln),
5
5
  or build a [local package](#install-a-local-package) to test an unpublished checkout.
6
6
  [CHANGELOG.md](../CHANGELOG.md) lists changes; read the
@@ -12,45 +12,104 @@ same engine and saved-source contracts.
12
12
 
13
13
  ## Install the package
14
14
 
15
- Once stable 1.0 is published, install it with Node.js and npm:
15
+ Install the current stable package with Node.js and npm:
16
16
 
17
17
  ```sh
18
18
  mkdir kiln-install
19
19
  cd kiln-install
20
20
  npm init -y
21
- npm install @instruktlabs/kiln@1.0.0 --omit=dev --include=optional
22
- npm exec --offline -- kiln-init ../my-assets --harness codex # or claude, opencode, hermes, agy, copilot, cursor-agent
21
+ npm install @instruktlabs/kiln
22
+ npx --offline --no -- kiln-init ../my-assets --harness codex # or claude, opencode, hermes, agy, copilot, cursor-agent
23
23
  cd ../my-assets
24
24
  # Follow START.md for your harness
25
25
  ```
26
26
 
27
- Until that exact version is available, use `@instruktlabs/kiln@next` or the public
28
- `@instruktlabs/kiln@1.0.0-rc.1` instead. The unqualified package name selects
29
- `latest`, which must no longer be the temporary `0.0.0-stage` holding version
30
- before using it. After stable publication, `npm install @instruktlabs/kiln` is the
31
- normal command; the explicit version above keeps this guide reproducible.
27
+ This selects npm's stable `latest` tag. Existing-project adoption and the new SDK
28
+ host interfaces require 1.1 or later. Check the installed version with
29
+ `npm ls @instruktlabs/kiln`. When qualifying an unpublished candidate, use a
30
+ [local package](#install-a-local-package). The `next` tag is only for prereleases.
31
+
32
+ The package includes the built CLI/MCP runtimes, renderer code, plugins and skills.
33
+ You do not need Bun, a source checkout, a build step or a separate model API key
34
+ to use its tools. Choose the appropriate harness and follow `START.md` in the
35
+ generated workspace.
36
+
37
+ ## Run the CLI
38
+
39
+ The executable is named **`kiln`**, even though its npm package is `@instruktlabs/kiln`.
40
+ For a terminal-wide command:
41
+
42
+ ```sh
43
+ npm install -g @instruktlabs/kiln
44
+ kiln discover --capabilities --json
45
+ kiln render my-asset.kiln.js --out my-asset.glb --views sheet.png
46
+ ```
47
+
48
+ npm puts global commands directly in its prefix on Windows and in `PREFIX/bin` on
49
+ macOS/Linux. If the shell cannot find `kiln`, run `npm prefix -g`, ensure that
50
+ executable directory is on PATH, and open a new terminal. See
51
+ [npm's executable locations](https://docs.npmjs.com/cli/v12/configuring-npm/folders/#executables).
52
+ `kiln-init` and `kiln-mcp` are available the same way.
53
+
54
+ For a project-local installation, run from the project that contains the dependency:
55
+
56
+ ```sh
57
+ npm install @instruktlabs/kiln
58
+ npx --no -- kiln discover --capabilities --json
59
+ # Equivalent:
60
+ npm exec --offline -- kiln discover --capabilities --json
61
+ ```
62
+
63
+ `npx --no --` refuses an automatic package download when the command is missing.
64
+ Install the scoped package first; the unscoped package name `kiln` is a different
65
+ package. npm scripts can call `kiln` directly because npm adds local executables to
66
+ their PATH. See [npm exec](https://docs.npmjs.com/cli/v12/commands/npm-exec/).
67
+ In PowerShell, use `npm.cmd exec --offline -- kiln …` for the equivalent command:
68
+ PowerShell's npm script wrapper can consume the separator before forwarding flags.
69
+
70
+ Generated asset workspaces also contain **`kiln.mjs`**. Run `node kiln.mjs …` there
71
+ to use the exact installation, Node interpreter and source store selected for that
72
+ workspace's MCP server. It also checks whether the managed setup needs an upgrade
73
+ or repair. This is useful when multiple Kiln versions are installed: a global
74
+ `kiln` command uses whichever installation your PATH selects. Without an explicit
75
+ `KILN_WORKSPACE` or `KILN_PROGRAM_STORE`, the direct CLI stores work beneath the
76
+ current directory's `.kiln/`; run it from the intended workspace root.
77
+
78
+ ## Add Kiln to an existing project
79
+
80
+ With Kiln 1.1+, run these commands from the installation directory:
81
+
82
+ ```sh
83
+ npx --offline --no -- kiln-init /absolute/path/to/my-project --adopt --harness codex --check
84
+ npx --offline --no -- kiln-init /absolute/path/to/my-project --adopt --harness codex
85
+ ```
86
+
87
+ The first command previews changes without writing and exits 1 when setup is
88
+ needed. The second adds Kiln while preserving existing instructions, unrelated
89
+ MCP settings and user files. Conflicting owned paths stop setup before it replaces
90
+ them. Read `.kiln/START.md` and `.kiln/AGENTS.md` alongside your project's existing
91
+ instructions. Repeat with another supported `--harness` to add its connection
92
+ around the same source store and assets.
93
+
94
+ Adoption also works for a new directory. To update an already managed workspace,
95
+ use [check and upgrade](#move-or-repair-an-installation). Do not copy a new set of
96
+ skills over local customizations by hand.
97
+
98
+ ## Install a release archive
32
99
 
33
100
  Archives are also supported. The package packs as `instruktlabs-kiln-VERSION.tgz`; earlier releases
34
101
  used `kiln-engine-VERSION.tgz`. Install the actual tarball with Node.js and
35
- npm. Use the tarball and checksum actually attached to the current
36
- [release](https://github.com/instruktlabs/kiln/releases) (for 0.10.0, the
37
- [v0.10.0 release](https://github.com/instruktlabs/kiln/releases/tag/v0.10.0)): download
38
- the tarball and `SHA256SUMS.txt`, check the tarball against the checksum file before
39
- installing (`sha256sum -c SHA256SUMS.txt` beside it, or `Get-FileHash` on Windows), and read
40
- that release's documentation; the release also attaches the installed-package receipts that
41
- name the tarball. A source-only release does not imply that a built tarball is available;
42
- a source-only release, like a checkout ahead of the release, builds its own package under
43
- [Install a local package](#install-a-local-package).
44
- The package includes the built CLI/MCP runtimes, renderer code, plugins and skills.
45
- You do not need Bun, a source checkout, a build step or a separate model API key to
46
- use the CLI/MCP tools. Use the real tarball path and filename:
102
+ npm. Download the archive and `SHA256SUMS.txt` from the selected
103
+ [release](https://github.com/instruktlabs/kiln/releases), then verify its checksum
104
+ with `sha256sum -c SHA256SUMS.txt` or Windows `Get-FileHash`. Use that release's
105
+ documentation and the actual downloaded filename:
47
106
 
48
107
  ```sh
49
108
  mkdir kiln-install
50
109
  cd kiln-install
51
110
  npm init -y
52
111
  npm install /absolute/path/to/PACKAGE.tgz --omit=dev --include=optional
53
- npm exec --offline -- kiln-init ../my-assets --harness opencode # or claude, codex, hermes, agy, copilot, cursor-agent
112
+ npx --offline --no -- kiln-init ../my-assets --harness opencode # or claude, codex, hermes, agy, copilot, cursor-agent
54
113
  cd ../my-assets
55
114
  # Follow START.md for your harness
56
115
  ```
@@ -247,7 +306,7 @@ npm exec --offline -- kiln-init ../my-assets --harness opencode # or claude, co
247
306
 
248
307
  `kiln` renders programs and imports/exports source revisions. `kiln-init` creates a
249
308
  workspace, and `kiln-mcp` starts the stdio server. These are installed commands from
250
- the still-unpublished `@instruktlabs/kiln` package. Library consumers use its compiled
309
+ that exact build of `@instruktlabs/kiln`. Library consumers use its compiled
251
310
  ESM and TypeScript declarations through the [SDK entrypoints](sdk.md), without a
252
311
  source loader. The optional
253
312
  `kiln generate` adapter is separate and needs its agent/provider dependencies;
@@ -281,11 +340,13 @@ other CLI/MCP workflows do not need any of these peers.
281
340
  | Codex | `.codex/config.toml`, read once `$CODEX_HOME/config.toml` marks the project trusted | `node codex.mjs` (applies the same values per run) |
282
341
  | OpenCode | `opencode.json` | `opencode` |
283
342
  | Antigravity | `.agents/mcp_config.json` | `node agy.mjs` |
284
- | Hermes | Separate `.hermes/config.yaml` profile | `node hermes.mjs --ignore-rules` |
343
+ | Hermes | One user-level MCP registration; workspace launcher supplies paths | `node hermes.mjs` |
285
344
 
286
- Sign in to your harness and accept its normal project/MCP trust prompts. Hermes's
287
- separate profile needs its own authentication or provider credentials supplied
288
- through the environment; setup does not copy credentials. The Antigravity launcher
345
+ Sign in to your harness and accept its normal project/MCP trust prompts. Hermes
346
+ has no project-local MCP registration; follow its generated `START.md` for the
347
+ one user-level registration. Its launcher preserves your existing provider and
348
+ authentication and supplies this workspace's paths per run. Do not add
349
+ `--ignore-rules` unless you intend to suppress project instructions. The Antigravity launcher
289
350
  sets the absolute project directory and disables automatic skill expansion in print
290
351
  mode. Name `kiln_workspace` in the brief, use the project skill copies, and pass
291
352
  absolute task-file paths. See [clean-room setup](https://github.com/instruktlabs/kiln/blob/main/docs/clean-room.md) for evaluation controls and limitations.
@@ -422,11 +483,14 @@ The v1 local plugin below uses a smaller bundle and creates an explicit workspac
422
483
 
423
484
  ## Local Claude Code and Codex plugins
424
485
 
425
- **The current branch is a development candidate.** The `v1.0.0` tag and npm release
426
- must exist before using these release commands. Maintainers qualify development
427
- bundles with the reviewed local engine archive instead.
486
+ The commands below select the 1.1.0 plugin, which supports new workspaces and
487
+ existing-project adoption. Use them once the matching GitHub tag and npm version
488
+ are available. To qualify an unpublished candidate, select its exact source ref
489
+ and supply the matching local engine archive as described in its bundled setup
490
+ reference. Normal use should select a published release tag.
428
491
 
429
- The plugin is `kiln-engine` in the Instrukt Labs marketplace `instruktlabs`. Its
492
+ The product is Kiln; its local plugin installation ID is `kiln-engine` in the
493
+ Instrukt Labs marketplace `instruktlabs`. Its
430
494
  cache contains setup guidance and an installer, while the pinned engine and asset
431
495
  workspaces stay in persistent directories outside that cache. Installing the plugin
432
496
  does not start a second global Kiln MCP server.
@@ -434,14 +498,14 @@ does not start a second global Kiln MCP server.
434
498
  For Claude Code:
435
499
 
436
500
  ```sh
437
- claude plugin marketplace add instruktlabs/kiln#v1.0.0 --sparse .claude-plugin plugins/kiln-engine
501
+ claude plugin marketplace add instruktlabs/kiln#v1.1.0 --sparse .claude-plugin plugins/kiln-engine
438
502
  claude plugin install kiln-engine@instruktlabs
439
503
  ```
440
504
 
441
505
  For Codex:
442
506
 
443
507
  ```sh
444
- codex plugin marketplace add instruktlabs/kiln --ref v1.0.0 --sparse .agents/plugins --sparse plugins/kiln-engine
508
+ codex plugin marketplace add instruktlabs/kiln --ref v1.1.0 --sparse .agents/plugins --sparse plugins/kiln-engine
445
509
  codex plugin add kiln-engine@instruktlabs
446
510
  ```
447
511
 
@@ -449,8 +513,9 @@ Ask your agent to set up a Kiln asset workspace. The setup skill installs the ex
449
513
  package version in `runtime.json` through npm, with optional dependencies included
450
514
  and lifecycle scripts disabled. Node.js and npm are required; an engine checkout,
451
515
  Bun and a separate model API key are not. An existing working workspace can be used
452
- as-is. Otherwise choose an empty directory and follow its generated `START.md` to
453
- open a new authoring session. Accept the host's project/MCP trust prompts, then
516
+ as-is. Otherwise choose a new workspace or preview adoption of an existing project,
517
+ then follow the generated startup instructions to open an authoring session.
518
+ Accept the host's project/MCP trust prompts, then
454
519
  verify `kiln_discover({capabilities:true})` on `kiln_workspace` and an actual render.
455
520
 
456
521
  The workspace owns its author/refine/QA skills and MCP configuration. The plugin
package/docs/migration.md CHANGED
@@ -4,6 +4,26 @@ Existing inline-code transport and the legacy capture format remain supported. T
4
4
  Discovery and authoring-helper changes below require explicit migration; retired
5
5
  names have no callable compatibility aliases.
6
6
 
7
+ ## Changes in 1.1
8
+
9
+ Version 1.1 adds existing-project setup
10
+ and host SDK entrypoints without changing the stable 1.0 tool contracts.
11
+
12
+ Use `kiln-init PROJECT --adopt --harness NAME --check` to preview adding Kiln to an
13
+ existing project, then omit `--check` to apply. Existing instructions and unrelated
14
+ configuration remain in place; Kiln's guidance lives under `.kiln/`. Multiple
15
+ supported clients can share the same workspace. Existing managed workspaces
16
+ continue to use `--check` and `--upgrade`. See [setup and recovery](install.md).
17
+
18
+ Hosts can replace internal-file imports with the public `mcp`, `tools/input`,
19
+ `views/port` and `discovery/portable` entrypoints. The portable Discovery API reads
20
+ an engine-generated catalog without loading its Node builder. The [SDK guide](sdk.md)
21
+ describes each boundary. No migration is required for ordinary CLI/MCP use.
22
+
23
+ The local plugin helper is now `bin/kiln-setup-workspace.mjs`; version 1.0 used
24
+ `scripts/setup-workspace.mjs`. Follow the helper path documented by the installed
25
+ plugin. Updating a plugin cache does not automatically upgrade existing workspaces.
26
+
7
27
  ## Changes in 1.0
8
28
 
9
29
  These changes describe version 1.0 and its public RC, following the downloadable