Turn a real building plan set into a photoreal render — locally, on your own machine.
PDF permit drawings → parametric CAD → 3D model → rendered image. No SaaS seat, no render farm.
An individual — a homeowner, a small builder, an agent with a listing — cannot get a decent render of a building they already have drawings for. The tooling assumes a studio: seat licences, a render farm, and someone who knows how to drive them.
Businesses solve it by paying for specialised subscriptions, stacked per seat and per month, to do what is fundamentally one job: read the drawings, model the massing, light it, render it.
ZooDev does that job on hardware you already own. It is nearly fully self-hosted — your machine holds the CAD, the scene, and every render. Two cloud calls do work that genuinely needs it: Zoo.dev's Zookeeper agent authors the parametric CAD, and Claude reads the drawings and directs the scene.
Claude runs through the Claude Code CLI on your existing Max/Pro
subscription — not a metered API key. ZooDev actively strips
ANTHROPIC_API_KEY from every call so it can never silently bill per token.
| 1 · Real permit sheet | 2 · Parametric CAD | 3 · Rendered |
|---|---|---|
![]() |
![]() |
![]() |
Claude reads every sheet and extracts a dimensional building program → Zookeeper authors KCL CAD from it → the Zoo engine exports GLB → Blender builds materials, terrain, sky and camera → Cycles renders it. Every generated script is executed and machine-verified, and every render is checked for actual image content — a black frame fails instead of passing as "done".
![]() |
![]() |
![]() |
Paste this into Claude Code and it will do the whole thing:
Clone https://github.com/5eh/Zoo_Dev_Hackathon_August into ~/ZooDev and set it up:
1. Clone the repo and cd into it.
2. Run ./setup.sh and read its output.
3. Fix whatever it reports as a blocker:
- Blender: needs 5.2 LTS (4.2+ works). Verify with `blender --version`; if it is
missing or older, install the LTS build for my OS and tell me what you did.
- zoo CLI: install from https://zoo.dev/docs/cli/zoo, then `zoo auth login`.
- Claude Code CLI: must be signed in on my Max/Pro SUBSCRIPTION, not an API key.
Confirm `claude --version` works. Do not set ANTHROPIC_API_KEY.
4. Put my Zoo token in .env.local as ZOO_API_TOKEN (ask me for it — never print it
back, never commit it, chmod 600). Confirm .env.local is git-ignored.
5. Re-run ./setup.sh until it reports 0 blockers.
6. Start it with ./launch.sh, confirm http://127.0.0.1:8737 answers, then tell me
what to click first.
Or do it yourself:
git clone https://github.com/5eh/Zoo_Dev_Hackathon_August.git ZooDev
cd ZooDev && ./setup.sh # checks Blender/zoo/claude, writes .env.local, installs the launcher
echo 'ZOO_API_TOKEN=zoo_...' >> .env.local
./launch.sh # or the "ZooDev Studio" launcher iconThen open http://127.0.0.1:8737.
Requirements: Linux + Blender 5.2 LTS · zoo CLI + a Zoo API token · Claude Code CLI signed in on a Max/Pro subscription.
Secrets: tokens live only in .env.local — git-ignored, chmod 600, never
printed. .env.example shows the shape.
-
🎲 Random plan — searches the web for a genuine permit set (county sample plans, measured drawings, planning submissions), verifies the download, shows the sheet, and builds it.
-
Drop a PDF — three real sets are in
samples/:file what it is harwelden-mansion-measured-drawings.pdf5-sheet measured as-built of a mansion + carriage house usda-farm-shop-1949.pdfUSDA / NJ Extension 24×30 ft frame farm shop (1949) uk-planning-change-of-use.pdfUK planning application set, 1:100 @ A1 -
Describe a building in the chat and let Zookeeper model it.
Then press Complete rendering. Orbit the camera on the Render tab if something stands in the shot, and export GLB / KCL / STEP / STL / OBJ.
One project owns the workspace at a time. 🧹 is the hard stop: it aborts any
running job, archives that project — artifacts and its conversation — to
projects/, and clears the canvas. Everything else refuses to swap the model out
from under a running job.
Tests (studio must be running):
node tests/ui_audit.mjs # front-end audit in a real browser, 26 checks
python3 tests/test_chat_server_http.pyMore detail: ARCHITECTURE.md · DEMO.md
Questions — Telegram @WatsonLR · Discord watsonlr
Sample plans are public documents (measured drawings, agricultural extension plans, planning-portal submissions) included so you have something real to test against.






