- Shell 41.9%
- Python 37.9%
- HTML 19%
- Makefile 1.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .pi | ||
| config | ||
| docs | ||
| examples/scenes | ||
| patches | ||
| runtime | ||
| scripts | ||
| viewer | ||
| .gitattributes | ||
| .gitignore | ||
| CHANGELOG.md | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| sbf.md | ||
| THIRD_PARTY.md | ||
| VERSION | ||
Android Agentic Blender
Native ARM64 Blender, authenticated Geometry Agent automation, MCP integration, and a phone-friendly live viewport/gallery—running locally on Android through Termux and Debian proot.
MVP features
- Native Blender 5.2.1 LTS ARM64 (
9e2066aef7ef7e20c142ad7bd3303138a4304c93) - Headless CPU Cycles with Embree, Python,
bpy, geometry operations, and image output - Authenticated Geometry Agent JSON-RPC server bound to
127.0.0.1 - Optional stdio MCP bridge
- Native Android viewer with touch orbit/pan/zoom, render settings, and gallery
- Browser viewer with a fast software CAD wireframe preview
- Automatic scene-change refresh without spending Cycles samples
- Final-render tab and an auto-indexed render gallery
- Reproducible example scenes and day/night portfolio scripts
This is intentionally headless. It does not provide Blender's desktop UI, Eevee, Workbench, CUDA, HIP, OptiX, or oneAPI. Cycles is used for final CPU renders; the web viewer handles progress previews.
Tested platform
- ARM64 Android phone
- Termux from F-Droid/GitHub (not the obsolete Play Store build)
- Debian
trixieunderproot-distro - Several GB of free storage; source/build trees alone can use about 3 GB
- Long build time and active cooling recommended
Quick start from source
git clone ssh://git@git.cyfrowynomada.com:2222/CyfrowyNomada/android-agentic-blender.git
cd android-agentic-blender
JOBS=4 ./scripts/setup.sh
./viewer/start.sh
Open http://127.0.0.1:8088. setup.sh is incremental: rerun it after an interrupted build. Lower JOBS to 2 or 3 if the phone overheats or runs out of memory.
For an already-built /opt/blender-native, install only the integration layer:
./scripts/40-install-geometry-agent.sh
./scripts/50-install-mcp.sh # optional
./viewer/start.sh
Installation stages
| Script | Purpose |
|---|---|
00-bootstrap-termux.sh |
Install Termux tools and Debian proot |
10-install-debian-deps.sh |
Install ARM64 compiler and system libraries |
20-build-third-party.sh |
Build pinned SSE2NEON, Eigen, OCIO 2.5, and OIIO 3.1 |
30-build-blender.sh |
Configure, compile, install, and verify native Blender |
40-install-geometry-agent.sh |
Clone the pinned agent, apply headless extensions, create token |
50-install-mcp.sh |
Install the optional MCP server in /opt/geometry-mcp-venv |
doctor.sh |
Verify architecture, linking, Python files, and installation |
See docs/BUILD.md for versions, feature flags, recovery, and storage cleanup.
Daily use
./viewer/start.sh # starts Blender + viewer and opens the browser
./runtime/status.sh # JSON-RPC agent status
./viewer/status.sh # viewer status
./viewer/refresh.sh # regenerate software solid preview
./viewer/publish-final.sh /sdcard/Documents/render.png
./viewer/stop.sh # viewer only
./runtime/stop-blender.sh # Blender agent
Configuration is generated at config/agent.env and is deliberately ignored by Git. It contains the RPC bearer token. To open a scene on startup, set:
BLENDER_START_FILE=/data/data/com.termux/files/home/my_scene.blend
Geometry Agent and MCP
The headless runtime imports the extension directly from .deps/blender-geometry-agent/blender_addon; no GUI interaction is required. The installer pins upstream commit da940ba499139337c96cfa7f1da65c9a2b2c8fa5 and applies patches/geometry-agent-headless.patch, adding:
- per-preview Cycles sample override
- safe object render visibility
- procedural environment controls
- safe area/point/sun/spot light creation
Arbitrary Python RPC remains disabled. To expose the agent through MCP:
./runtime/run-mcp.sh
Viewer
The viewer is a dependency-free Python HTTP application on loopback only. Its live preview uses scene bounds supplied by Geometry Agent and performs a software CAD projection. It does not invoke Cycles. PNG/JPEG/WebP files in BLENDER_OUTPUT_DIR appear in Gallery automatically; files containing _test are omitted.
BlendScope Android companion
BlendScope uses the same loopback service as the browser viewer. It provides touch orbit/pan/zoom, Cycles render settings, final-render preview, and the indexed render gallery. It is a companion only: Blender lifecycle and creation remain owned by this toolkit and Pi.
Run Pi from this trusted checkout and start work with one prompt:
/blender Create a modular industrial gate with working doors and three-quarter QC renders
The bundled Pi skill combines the request with the canonical sbf.md template, starts Blender, Geometry Agent, and the viewer, sends structured operations through the authenticated plugin, validates and saves the scene, and leaves the services running. Open BlendScope while it works; Connect becomes orange when the server is ready.
Build and install BlendScope with:
git clone ssh://git@git.cyfrowynomada.com:2222/CyfrowyNomada/BlendScope.git android
gradle -p android :app:assembleDebug
adb install -r android/app/build/outputs/apk/debug/app-debug.apk
The APK has no third-party runtime dependencies. You can also use ./viewer/start.sh manually and then tap Connect.
Pi Blender Plugin
Pi Blender Plugin is the prompt-side companion. It packages the /blender template, Blender skill, SBF template, and authenticated Geometry Agent RPC helper as an installable Pi package:
pi install ssh://git@git.cyfrowynomada.com:2222/CyfrowyNomada/pi-blender-plugin.git
Use /blender <creation prompt> from Pi to start and steer creation; use BlendScope to inspect the live viewport, renders, and gallery.
Examples
python examples/scenes/build_cute_room.py
python examples/scenes/build_cute_kitchen.py
python examples/scenes/build_sims_house.py
python examples/scenes/finalize_sims_house.py
python examples/scenes/render_portfolio.py
Run examples from Termux while the agent is active. They demonstrate authenticated JSON-RPC batching, materials, lighting, scene checkpoints, Cycles finals, day/night variants, and gallery publishing.
Security
- Services bind to
127.0.0.1by default. - Every Geometry Agent request requires a random token.
config/agent.env, logs, PIDs, scenes, and renders are ignored.- Arbitrary Python execution is disabled in
runtime/launch_geometry_agent.py. - Do not bind either service to a public interface without adding a proper authenticated reverse proxy.
Repository layout
config/ example configuration (real token ignored)
docs/ build, architecture, and agent documentation
examples/ procedural scene and portfolio scripts
patches/ tracked extensions to pinned upstream projects
runtime/ headless Blender/agent lifecycle
scripts/ installation and verification
viewer/ local Blender bridge and browser viewer
android/ native touch viewport, render controls, and gallery app
Release status
MVP 0.1.0. Blender and third-party dependencies retain their own licenses. Review THIRD_PARTY.md before redistributing binaries.