Wisent Glina

Your AI sculpts your game assets.

Glina turns a text prompt into a verified, game-ready GLB. A Brama-routed model writes Blender Python and runs it in a live Blender MCP session. A structural gate passes or fails the result before it counts as done.

  • Prompt to verified GLB
  • Gate fails, never warns
  • Two gate-verified assets
  • 6000-triangle budget
  • Runs through Blender MCP

Raw text-to-3D output ships unverified.

A game project needs hundreds of modeled, budgeted GLB assets. Hand-modeling them is slow, and raw AI output arrives broken.

Broken meshes

AI-generated geometry arrives with no mesh or primitive sanity check, so defects reach the game.

Blown triangle budgets

Nothing enforces a budget. Glina's gate checks a default of 6000 triangles, plus or minus 100 percent.

Missing materials

Materials, skins, and animation presence go unchecked unless a gate verifies them before the asset counts as done.

From prompt to verified GLB.

Every generation follows the same path: prompt, model, Blender, gate.

  1. Write a text prompt

    Describe the prop, weapon, or character you need as plain text.

  2. Brama routes the model

    Model access goes only through Brama, the Wisent model router. There is no direct provider API code in the package.

  3. The model writes Blender Python

    The Brama-routed model writes bpy code for the asset.

  4. Blender MCP executes it

    The code runs in a live Blender session through a Blender MCP server, uvx blender-mcp by default. Never hand-rolled sockets.

  5. The gate decides

    The gate checks a valid glTF container, mesh sanity, the triangle budget, materials, file size, and an optional render smoke. It fails the job and never warns.

Real runs, real gate output.

Captured terminal output from the Glina CLI: install, config validation, verification, and session health.

$ npm install -g @wisent-ai/glina
added @wisent-ai/glina
$ glina check-config
config: valid
skarbiec:// refs: resolved
inline secrets: rejected (none present)
$ glina verify assets/models/kamien.glb
glTF container: valid
mesh/primitives: sane
triangles: within 6000 ±100%
materials: present
file size: within bounds
gate: PASS
$ glina blender-health
blender-mcp session: connected
$ glina weles-tools
weles-mcp tools: listed
Install, check-config, verify, and health probes

Two assets passed the gate.

These are the only generations this page presents as evidence.

Proven live results
AssetDescriptionGate-verified
kamien.glbGranite boulder with moss patches, 12 bpy rounds through Brama and Blender MCP2026-07-27
krasnolud-wojownik.glbDwarven warrior, generated through local Brama2026-07-28

Hard rules, never bypassed.

Where do my secrets live?

Only in Skarbiec. Config holds skarbiec://<item>/<field> references, and the loader rejects inline secrets and credential-shaped environment variables.

How does model access work?

Only through Brama, the Wisent model router. Direct provider API paths were deleted at the owner's demand, not gated.

How is Blender controlled?

Only through a Blender MCP server, uvx blender-mcp by default. Never hand-rolled sockets.

What drives the browser layer?

Only the Weles MCP stdio server, weles-mcp. Never a local Chromium profile.

Install the CLI and sculpt your first asset.

One npm install ships two bins: glina for the command line and glina-mcp as an MCP stdio server for agent hosts. Glina started as the asset pipeline of the browser RTS simple-rts-unity and now ships as a standalone Wisent product with a CLI and a macOS desktop app.