VibeInc AI Art Team
An open-source, AI-first Blender toolkit: an "art team" of roles that agents (Claude Code, through MCP) and people (through a Blender panel) can drive. Every action runs in headless Blender too, returns machine-readable JSON, and measures its own output.
Made by VibeInc, an AI-first game studio. The core tool is free and always will be.
GPT concept, then TRELLIS.2 on the local GPU, then Blender cleanup to 12k triangles, 35 cm tall, pivot at the base.
Rendered with render_still.
How it works
You, or Claude, ask for something in plain words. The request becomes one of 36 tools, and Blender does the work in the background. Each tool returns what it made, along with its own checks: triangle count, scale, pivot, clearance from walls, and whether anything is cropped. When a check fails, the agent can fix the problem before you ever see it.
The same concept at TRELLIS.2 draft quality (left) and best quality (right), after Blender cleanup.
Why it makes the work easier
- Idea to game-ready prop in about 5 minutes: 45 s of concept art, about 3 min of 3D on a free 16 GB GPU, then seconds of cleanup.
- The boring part is automatic: scale, pivots, UVs, triangle budgets and GLB/FBX exports.
- Blockouts and camera passes in seconds: the same seed gives the same level, and walkthroughs never clip through walls.
- No new subscriptions needed: it uses your ChatGPT plan, your GPU and free Blender. Meshy is an optional paid engine (your own account) for higher-quality meshes, rigging and animation; TRELLIS.2 stays free.
- Agents can run it unattended: results are plain JSON with pass/fail checks, so Claude knows whether each step worked.
What works today (v0.2.1)
| Role | Engine | Status | Tool(s) |
|---|---|---|---|
| Concept artist | GPT image generation through your ChatGPT plan (Codex app); or the OpenAI API with your key | Works (API path untested: no key here) | concept |
| 3D artist | TRELLIS.2 on your GPU (free), or Meshy with your own key (paid, cleared for commercial use; remeshed to budget with the detailed surface baked on), then Blender cleanup with optional LODs | Works (both tested live) | image_to_mesh, cleanup_mesh, bake_detail |
| Surfacing | Script-built PBR presets, bake to maps, photo to PBR | Works | assign_material, photo_to_pbr, list_material_presets |
| Layout | Seeded or spec-driven greybox levels | Works | greybox |
| Camera | Orbit, greybox flythrough, explicit paths | Works | camera_path |
| Render | Workbench (viewport look), EEVEE, Cycles on CPU; studio lighting; image sequences for turntables and flythroughs | Works | render_still, studio_setup, render_frames |
| Animator | BVH import (100STYLE, CC BY 4.0); Meshy auto-rig and Meshy's animation library with your own key (paid) | Works (Meshy rig and clips tested live). Kimodo is blocked until a Hugging Face login. | import_motion, list_motion_styles, autorig, list_animations, animate |
| Sound | Search your own library | Search works. Generation is a stub. | sound_search, sound_generate |
| Art director | GPT (your ChatGPT plan via Codex) and/or Gemini 4 Argon (your key) score a render; a saved style bible adds an on-style score | GPT tested live; Gemini tested offline | review_asset, style_save, list_styles |
| Self-fix | The art director's lowest score picks a fix: Meshy retexture, GPT-drawn views + Meshy multi-view rebuild, or Meshy remesh; within a credit budget | Works (needs a Meshy key) | improve_asset |
| One shot | Concept → mesh → cleanup → render | Works | make_prop |
| Asset packs | Matching concepts → meshes → renders → art-director review → regenerate or self-fix → contact sheet → .vibepack with LODs |
Works | make_pack |
Plus: status, list_providers, connect_provider, package_asset, verify_package, about,
usage_stats, live_blender, job_status, import_asset, scene_report.
Quick start
Requirements: Blender 4.2 or newer (tested on 5.2.2) and Python 3.10 or newer. The toolkit uses only the standard library, so it has no dependencies.
Install with pip (the Blender-side files come with it):
pip install vibeinc-ai-art-team
Or straight from GitHub: pip install "git+https://github.com/VibeIncStudio/ai-art-team@v0.2.1".
This gives you the vibeart command and the vibeart-mcp server. Machine settings go in ~/.vibeart/local.json
(same keys as vibeart.local.example.json), and results go to Documents/VibeInc/art-team-output.
Or work from a checkout:
- Machine settings. Copy
vibeart.local.example.jsontovibeart.local.jsonand set the paths: Blender, your TRELLIS.2 folder, GPU lock files to respect, and your BVH and sound libraries. - Check it.
python -m vibeart.cli status '{}'
- Use it from Claude Code. Copy
.mcp.example.jsonto.mcp.jsonand fix the path, or add the server by hand:claude mcp add vibeinc-art-team -- python <path-to>/ai-art-team/vibeart/mcp_server.py
After a pip install, useclaude mcp add vibeinc-art-team -- vibeart-mcpinstead. - Use it in Blender. Build the extension with
python tools/build_addon.py, then in Blender go to Edit > Preferences > Get Extensions > Install from Disk and pickvibeinc_art_team-0.2.1.zip(from the GitHub release, ordist/after building). The panel is at View3D > Sidebar > VibeInc.
For agents
- Read AGENTS.md. It covers the contract, the rules and the typical flows.
- Result envelope. Every tool returns
vibeart.result/1. Thestatusfield is one ofok | ok_with_failed_checks | blocked | stub | error. The envelope also carriesoutputs(file paths),metrics,checks(name, passed, value, expected),warningsandprovenance.render_still,cleanup_meshandimage_to_meshalso return the image itself through MCP, so you can look at it. - Scenes chain. Scene tools take
scene(a.blendpath). Each step loads it and saves it back. - Long jobs.
concept,image_to_mesh,make_prop,review_asset,improve_assetandmake_packacceptbackground: true, which returns ajob_idforjob_status. - Live mode. With the add-on's "Allow live control" preference on,
live_blenderruns the same actions in the user's open Blender. It listens on localhost only, needs a token, and only runs whitelisted actions.
CLI examples
python -m vibeart.cli greybox '{"scene": "runs/level/level.blend", "preset": "rooms", "seed": 3, "rooms": 5}'
python -m vibeart.cli camera_path '{"scene": "runs/level/level.blend", "mode": "flythrough"}'
python -m vibeart.cli render_still '{"scene": "runs/level/level.blend", "engine": "eevee", "camera": "auto"}'
python -m vibeart.cli make_prop '{"prompt": "a battered field radio", "quality": "draft", "target_height_m": 0.35}'
Art director and asset packs
review_asset sends a render (and, optionally, the concept it came from) to GPT through the Codex app. The job
runs in an empty folder with the read-only sandbox, so it can look at the images but cannot change files. The answer
must match a fixed JSON schema, and the toolkit checks it again before using it:
- four scores from 1 to 10:
silhouette,material_read,matches_brief,game_readiness; issues, each with a criterion, a severity (minor,majororblocker) and a suggested fix;- a one-line
summary.
The asset passes when every score is at or above threshold (default 6) and no issue is a blocker. The review is
saved as <name>.review-<time>.json (format vibeart.review/1) and recorded in provenance.json with the model, effort,
prompt and image hash. One review takes about 15 seconds.
make_pack builds a set of matching props from a theme and a list of items (or a count, and GPT plans the
items):
- Every concept shares one style prefix, so the set looks consistent.
- Meshes are made one at a time. The step waits up to
gpu_wait_sfor GPU locks and never runs two TRELLIS jobs at once. - Each mesh gets studio lighting and an EEVEE render. The asset
.blenditself stays clean. - The art director reviews every render. A failing item is regenerated once with a new seed, and the better of the two attempts is kept.
- A contact sheet PNG shows the whole pack with scores.
- Everything is packaged as one
.vibepack(kindprop) with the merged provenance. TRELLIS output stayscommercial_use_cleared: false.
python -m vibeart.cli make_pack '{"theme": "weathered sci-fi field gear", "items": ["field radio", "ammo crate", "medkit"], "background": true}'
Style bible
style_save stores the studio's art direction as styles/<name>.json: a summary, palette, materials, wear level,
setting, shape language, things to avoid, and up to three reference images (kept next to the file). Pass its name as
style_bible to concept, review_asset, improve_asset or make_pack:
- concepts get the style in the prompt, and the reference images are attached (Codex provider);
- reviews add a fifth score,
on_style, and the reviewer sees the references; - Meshy retextures get the style's materials, palette and wear, which always fit in Meshy's 800-character prompt.
styles/frontier-field-gear.json is an example.
Self-fix loop
improve_asset takes a mesh that failed review and works on its weakest score:
| Weakest score | Fix | Meshy credits |
|---|---|---|
material_read, on_style |
Retexture, with the reviewer's own suggested fixes in the prompt | 10 |
silhouette, matches_brief |
GPT draws front, left and back views of the same object; Meshy rebuilds from all of them | 30 |
game_readiness |
Remesh to the triangle budget | 5 |
After each fix the mesh is cleaned, rendered and reviewed again, and the best version so far is kept. The loop stops
when the asset passes, after max_rounds (default 2), or when the next fix would exceed budget_credits
(default 60). Credits are reserved before each request and released only when Meshy refuses it or reports the real
charge, so the budget holds even if a request times out. If GPT or Meshy is unavailable, it stops with blocked.
In a pack, self_fix: true uses this loop instead of regenerating.
Fixes never change the licence status: anything derived from TRELLIS output stays uncleared, and so does a mesh of unknown origin.
Detail bake (finishing)
bake_detail takes a textured low-poly and a detailed mesh in the same space and bakes the detailed surface into
the low-poly's normal map, keeping its colours. replace uses only the baked normals; combine blends them with the
low-poly's own normal map. It reports how many pixels carry detail, how many look like wrong hits, and whether the
two meshes line up.
With Meshy, image_to_mesh does this by default (finish: true): Meshy remeshes to the triangle budget in the same
job (no extra credits in our runs) and also returns its detailed mesh, which is baked on in combine mode. If the
bake's own checks fail, the unbaked version is kept and a warning says why. On the field radio the bake took 5
seconds and gave visibly crisper bevels in close-ups.
Gemini (optional, your own key)
Set GEMINI_API_KEY (Google AI Studio, paid tier) to use Google's models:
review_asset {judges: ["gpt", "gemini"]}: Gemini 4 Argon reviews next to GPT. Scores are averaged, a blocker from either judge fails the asset, and the disagreement is reported. Set"judges": ["gpt", "gemini"]invibeart.local.jsonto make it the default. Argon costs about $2/$10 per million input/output tokens until 2026-11-30, then $4/$20.concept {provider: "gemini"}: concept art from Nano Banana Pro (gemini-3-pro-image), with style references.- Fallback: when your ChatGPT usage runs out (or Codex is unavailable), concepts, GPT-drawn views and reviews
switch to Gemini automatically and say so in
warnings. Set"gemini_fallback": falseto turn that off.
The key is read from the environment and only sent to Google; it is never logged or written.
Rigging and animation (Meshy, your own key)
autorig {source}: Meshy's auto-rigger on a textured humanoid GLB (front toward glTF +Z) or a Meshy task id; 5 credits. You get a rigged GLB and FBX, Meshy's free walk and run clips, and arig_task_id.list_animations {query}: browse Meshy's animation library (free), e.g."wave"or"walk".animate {rig_task_id, actions}: library motions by name or id, 3 credits each, capped bymax_credits.
Rigs and library motions are Meshy "Service Assets": use them as part of your character, not on their own. examples/character_demo.py runs the whole chain from a text prompt: GPT views, Meshy multi-view 3D, detail bake, cleanup, art-director review, rig and clips.
LODs
cleanup_mesh, image_to_mesh, improve_asset and make_pack take lods, for example [0.5, 0.25]. That exports
<name>_LOD1.glb and <name>_LOD2.glb at half and a quarter of the triangles. Packs ship them by default.
Determinism and self-measurement
- Greybox. A seed or spec always gives the same layout. It reports
layout_signature, connectivity, grid snapping and blocks on floor. - Mesh cleanup. Reports triangles against the budget, UVs in 0–1, UV area (overlap), texel density, pivot at the
base centre, transforms applied, height, open edges, export files and a thumbnail.
shape_keptfails if triangle reduction shrank the model (it can drop whole regions of some meshes); loose vertices left by the reduction are removed so the size and pivot are measured on real geometry. - Camera. Reports path length, speed, minimum clearance to geometry and whether the target stays in frame.
- Render. Reports exposure, clipping, subject coverage and render time.
- Photo to PBR. Reports seam ratio before and after, normal validity and height detail.
- Art director. The review format is fixed by a JSON schema and validated locally (one retry if GPT strays). The scores themselves come from a model and can vary between runs.
- Generators. TRELLIS and GPT take seeds or prompts, but their output is not bit-identical between runs.
Every run folder keeps
provenance.json.
GPU courtesy
image_to_mesh checks the lock files listed in gpu_lock_files and the GPU load first. If another app owns the GPU,
it refuses with blocked. The exception is quality: "draft" with allow_busy_gpu: true, which runs a short job of
about 3 minutes using about 4 GB. It never kills other processes.
The toolkit also runs only one TRELLIS job at a time on the machine. The TRELLIS worker process itself holds an OS
file lock (%TEMP%/vibeart/trellis.lock, shared by the CLI, MCP server and Blender add-on) for exactly as long as it
runs, and the OS releases it if the worker dies. make_pack waits for the GPU between items when gpu_wait_s is set.
Money: how VibeInc earns without charging for the tool
- Referral links. Users connect their own accounts. A connector can carry a VibeInc referral link, which is shown only with this disclosure: "Referral link: VibeInc may earn a referral fee if you subscribe. Your price is the same." Users can switch referral links off. Referral fees never change the ordering or the defaults. See docs/providers.md and docs/affiliate-programmes.md.
- Marketplace (designed, not launched).
.vibepackpackages carry licence, provenance, AI disclosure and file hashes. See docs/marketplace.md. - Studio funnel. "Made with VibeInc" appears in the panel, in glTF
extras.generatorand in PNG metadata. A visible render badge is opt-in. The panel also links to the studio and to the opt-in community. Links stay hidden until URLs are set invibeart/data/branding.json.
Studio and privacy
There is no telemetry unless the user opts in (usage_stats). If they do, the toolkit keeps per-tool counts only, on
the user's machine, and has no upload endpoint. Opting out deletes the counts. VibeInc never sells data, never uses the
user's machine for background compute, and never trains on users' creations without explicit consent.
See docs/privacy.md.
Licences
See LICENSES.md.
- Meshy output (
provider: "meshy") belongs to the account holder. On Meshy's free plan it is CC BY 4.0, so credit Meshy. Paid plans give a private licence. Your key stays inMESHY_API_KEYand is never written to disk. - TRELLIS output is not cleared for commercial use. Its GLB export uses NVIDIA nvdiffrast, which is licensed for
non-commercial use only. The toolkit records this in provenance, and
package_assetrefuses paid listings for it. - 100STYLE motion needs a credit line (CC BY 4.0).
Tests
cd tests && python -m unittest
- About 100 tests cover every role plus the art director, style bible, self-fix loop, Meshy (generation, finishing, rigging and animation, offline), Gemini, asset packs, LODs, MCP, the add-on install, the live bridge, providers, the marketplace and privacy. The run takes about 6 minutes with headless Blender.
- Live engine tests are opt-in:
VIBEART_LIVE_GPT=1andVIBEART_LIVE_TRELLIS=1. Results of the live runs made during development are in evidence/README.md.
Layout
vibeart/ host package (stdlib only): roles, tools registry, MCP server, CLI, providers,
marketplace, branding, telemetry, jobs, live client
blender_addon/vibeinc_art_team/ Blender extension: ops_core (all bpy actions), headless runner, panel, live bridge
tests/ unittest suite + Blender fixture builder
tools/ build_addon.py, try_action.py, when_gpu_free.py, showcase/ (renders + composes the demo videos)
examples/ character_demo.py (concept to rigged, animated character)
docs/ providers, affiliate research, marketplace design, privacy
evidence/ live run outputs (GPT concept, TRELLIS mesh, renders)
Inspiration
Scenario's Blender plugin (announced by @emmanuel_2m on X, 14 Oct 2026) showed eight AI roles exposed through MCP. This project has no Scenario code and does not use Scenario's service. It follows the same idea, but with engines you run yourself or connect with your own accounts.
Metadata
Release files for vibeinc-ai-art-team 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vibeinc_ai_art_team-0.2.1.tar.gz | 128.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vibeinc_ai_art_team-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 276.3 kB
Release files / vibeinc_ai_art_team-0.2.1.tar.gz
| Download URL | vibeinc_ai_art_team-0.2.1.tar.gz |
|---|---|
| Size | 128.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a216c3a8b462a744f694619368b9a2399d44b711cc3ce146171fead8f34ed7e1
|
|
BLAKE2b-256 checksum How to use checksums |
674be5efd17b85a5faaaa0db610fd1ea7ba8e32c6d44620f34098ac9c2d7a9b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / vibeinc_ai_art_team-0.2.1-py3-none-any.whl
| Download URL | vibeinc_ai_art_team-0.2.1-py3-none-any.whl |
|---|---|
| Size | 147.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d09998ca1f2ab82ec62dbc3f3037a241e5c956f3ee69c8a634dd984ed2a4c0d1
|
|
BLAKE2b-256 checksum How to use checksums |
8a824a4e08803e604c583a8d532406b3b01403c5988966c7eaa55f6c43c3b383
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logSecurity for vibeinc-ai-art-team 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vibeinc_ai_art_team-0.2.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.