Skip to content
PuniDocs
Open Puni

Release notes


What changed in Puni, newest first.

#October 2026

A library that keeps going. The library loads more scenes as you scroll. Search, filters and counts cover every scene you have, and a count past a thousand reads 1000+.

History pages through checkpoints. Newer checkpoints and Older checkpoints at the foot of History step through a long scene's past.

Edits survive leaving. Unsaved edits are kept when you leave a scene and are there when you come back. Escape in an inspector number field puts the old value back.

Lighting that differs. Each Lighting preset now looks like itself, and dark clay stays readable.

Films from the studio. Where the studio offers it, Film in Export draws the film on Puni's servers from the scene you saved, with no local renderer. It costs a credit where hosted renders are metered, and Export lists the scene's films from the last day. Read Films.

More for agents. Agents can send a large command batch once and name it, rename or describe a scene, and upload an asset such as a brand font for text. Where the deployment renders films, they can ask for a film of a saved revision. Key curves, pivots, opacity, outlines from SVG paths and cloner fields are in the scene document for agents and the command line; the studio has no controls for them yet. Read MCP tools for the full list.

Agents stay signed in. A connected agent no longer has to sign in again after about an hour.

#September 2026

Agents edit the saved scene. An agent's edit lands as a new revision with a checkpoint named by the agent's label, so the checkpoint is the undo. While an agent works on a scene, its labels appear in History as they land. If you saved in the meantime, the agent's edit is refused and it reads the scene again. Drafts, which held an agent's work apart from the scene, were retired on 16 September.

A menu on the canvas. Right-click an object for its actions and an Animate group; right-click empty canvas for animation presets and the Perspective, Front, Top and Side views. New actions start here.

Ask Puni is gone. The built-in agent, its dock, ⌘J and the library's prompt box were removed. Connect your own agent instead: read Connect Puni.

Smoother drawing. Where your browser supports it, the studio and share pages draw the scene off the page's main thread. Film capture in the studio needs the page itself to draw, so Film is unavailable while it does.

Deleting your account. Delete my account in Settings → Data keeps your scenes for 30 days; sign in within that time to restore them.

Hosted renders in Credits. Settings → Credits says what a hosted render costs: fifty stills a day are free, then one credit a still, and path-traced renders, film frames and pictures over 1024 px cost a credit each.

Terms and privacy. Both are at puni.design/terms and puni.design/privacy.

Tabs in the inspector. Double-click an object in the rail and it opens as a tab that stays; a single click still previews. Tabs close from an ×, reorder by dragging, and Scene keeps the first place. The panels' grips sit in the gaps between them.

The share page's name is a menu. Who made the scene, when, the views, the description, the facts and the palette sit at the top; Copy offers the link, the embed code and the colours. On a phone the controls are one row, with Loop, Sound, Download and Full screen behind a ⋯.

Credits for sculpting. Your own keys spend no Puni credits; providers bill their calls. Puni's keys use three credits for a mesh and one more for a prompt picture, with three to start and packs in Settings → Credits. Checkout switches on per deployment; until then the page says so.

Connector setup. The remote sign-in flow is in preview. Read Connect Puni for setup, compatibility errors, connection checks and token-based alternatives.

Doors into the guides. Guides in the scene menu, a link at the end of the Keyboard dialog, and Docs on Settings → Agents.

Creator pages. Turn on Public page in Settings → Profile and your live links appear at puni.design/u/your-handle. Choose a handle, and keep any link off the page with its own switch.

A richer About. A share page's About carries the creator, when it was shared, how many views and copies it has, the palette, and the embed code. (It has since become the scene menu; see above.)

Downloads from a share page. Save a picture, a GIF of the first twenty seconds, or a video, all made in your browser.

Agents with scopes. A token made in Settings → Agents carries a scope: read, read and write, or read, write and share. The MCP door refuses a tool outside its scope.

A studio that says when it cannot draw. A browser without WebGL sees the reason and the last saved cover instead of a spinner.

The login is the door. Signing in shows six scenes you can orbit while you type.

Appearance. Light, dark, system or custom colours, font size and pointer cursors, in Settings → Appearance. Motion follows your system's reduced-motion setting.

Help. A ? at the bottom left of the library opens the docs, the shortcuts and Settings.

#Earlier

Sharing. Unlisted links to one saved version, remix permission per link, an embed with a host protocol.

The command line. Pull, push, render stills and films, checkpoints, search, device sign-in. It is a preview for Puni's own team and is not published to npm; read Setup.

MCP. Tools for inspecting, editing, rendering and saving scenes from Claude Code, Codex and Cursor, and WebMCP for a browser that supports it. MCP tools lists every one.

A sign-in door. ChatGPT, Claude.ai and Claude Desktop connect to Puni through its own OAuth door; the tokens are the same kind Settings makes and are revoked in the same place. It is switched on per deployment.

A render worker. Agents on machines without a GPU can see: puni_render_view and puni render view --remote draw a scene the way the stage does, and a browser that cannot draw gets its cover made for it. Switched on per deployment.

Sculpt. A picture or a prompt becomes a textured mesh on your own provider keys, from the command line, from an agent, and soon from the studio.

OpenAPI. Every HTTP route is described at /api/openapi.json, kept honest by a test.

Read Puni 101 if you are new, or Troubleshooting when something changed under you.

Was this useful?