use-blender
github.com/shhivv/use-blender- Category
- Developer Tools
- Rank
- No. 3432Tools index
Previous survey · No. 3278 ·
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Design & Media
- Interfaces
- API
- GitHub
- 3 stars
- Date
About
A Docker container that runs Blender headless with software rendering and exposes a REST API for computer-use agents to take screenshots, send mouse/keyboard actions, and optionally execute Python (bpy) scripts to manipulate scenes and save files.
What it does
use-blender packs the Blender 3D suite into a container an AI agent can drive the way a person would. The agent asks for a screenshot, decides where to point, then sends clicks, drags, key presses and typed text through a small web API; Blender runs on a virtual screen with CPU-only graphics, so no GPU is needed. An optional switch lets the agent run Blender's own Python scripting inside the live session, and any file saved to the shared workspace folder can be downloaded back over the same API.
Why it's ranked here
A narrow, carefully bounded piece of plumbing. The whole project is about 500 lines of Python across four runtime files, MIT licensed, with Blender pinned to an exact distribution package on a digest-pinned base image. The input side validates every action batch against the screen bounds and a 15-second time budget before anything reaches the display, script execution is off by default, and a failed request whose outcome is unknown locks the session until restart rather than guessing. Against that: an early project with no tests, no prebuilt image, and only one platform tested by its authors.
What's good
The safety defaults are specific. The published port binds to the host's loopback address, an optional bearer token guards every endpoint, and file downloads refuse any path that resolves outside the workspace. Only one mutating request runs at a time, a second gets a clear busy error, and request bodies are capped at 64KB. Typed text goes in through the clipboard, so non-English characters arrive intact regardless of keyboard layout. The container ships a health check, runs as an unprivileged user, and the compose file already caps it at two CPUs and 4GB of memory.
Tradeoffs
The README says it is tested only on Linux ARM64 through OrbStack and that AMD64 has not been validated. There is no registry image: every user builds it locally from the repository. The repository tree has no test directory and no CI configuration. Python scripts run on Blender's main thread, and the README warns that a timeout neither stops nor undoes them, so a long script can freeze the session. The README also notes Blender exposes its own Python console, so the token does not make untrusted clients safe. There is no video stream; agents work from still screenshots only.
How to use it well
Fits a team building or evaluating computer-use agents that need a real, visually complex desktop application to practise on, or anyone who wants an agent to produce Blender files without a GPU. Keep batches short, move the pointer over the right editor before sending shortcuts, and take a fresh screenshot after each batch. Turn on scripting when precision matters more than testing the agent's clicking. Mount a named volume so saved files survive container replacement. It does not include an agent, a planner or live video; bring your own loop.
Technical notes+
runtime/server.py runs a ThreadingHTTPServer on port 8000 inside the container (bound to 0.0.0.0; loopback-only exposure comes from the -p 127.0.0.1 mapping in the README and compose.yaml). It starts Xvfb, openbox and Blender with --factory-startup and --disable-autoexec, then talks to Blender over a Unix socket that runtime/blender_start.py registers as a bpy.app.timers callback polling every 0.03s, so all Python executes on Blender's main thread with stdout capped at 32768 characters and results at 131072 bytes. Mutations are serialized by MUTATION_LOCK; an exception after acceptance sets UNCERTAIN, after which POSTs return 409 until restart. runtime/desktop.py injects input through the XTEST extension, validates 1 to 64 actions per batch, and pastes text via xclip. The Dockerfile pins blender=5.0.1+dfsg-1ubuntu1 on ubuntu:26.04 and forces llvmpipe software rendering.
Observed
- License
- MIT for the project's code; Blender and system dependencies keep their own licenses
- Language
- Python
- Packaging
- Dockerfile and compose.yaml, built locally; no registry image
- Interface
- HTTP API: health, screenshot, state, download, actions, and opt-in Python execution
- Hardware
- CPU-only software rendering, no GPU required
- Platform tested
- Linux ARM64 via OrbStack per README; AMD64 not validated
- Authentication
- Optional bearer token via API_TOKEN
- Tests
- No test directory or CI configuration in the repository tree
Read from README.md, Dockerfile, runtime/server.py, LICENSE, compose.yaml, runtime/blender_start.py, runtime/desktop.py, runtime/healthcheck.py.
What it can do
Execute Python (bpy) scripts to manipulate Blender scenes
Python (bpy) script → Modified Blender scene
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.