JOB · 3D PIPELINE

A scene compiler for Blender.

One file in. Viewport, stills, glTF, CI out.

collar-01 compile still — stacked housing and brass collar
collar-01.glb 862 KB · 3 meshes · fingerprint 5e507bc0
DRAG TO ORBIT

That model was built from a single text file, not modelled by hand. The fingerprint is the proof: compile the same file again and you get the same model, byte for byte. If anything upstream changed, the fingerprint changes with it.

THE VERB

job / check / exportScene

job(input)
check(job)
run(job)
still(job)
exportScene(job, dir)

// Agents author job.json, not bpy.
// Unchecked Job does not run.
out/ job.json collar-01.blend collar-01.glb hero.png front.png side.png manifest.json meta.json
WHAT A JOB IS WORTH

1,290 bytes in.
Everything else is derived.

job.json 1,290 B · sha 3bbe5964 · schema job/1
{
  "schema": "job/1",
  "id": "collar-01",
  "version": 1,
  "units": "m",
  "stage": "export",
  "block": {
    "groups": ["BASE", "HOUSING"],
    "axial_stack": [
      "foot_ring", "body", "collar"
    ]
  }
}
EXPORT →
collar-01.glb862 KB5e507bc0 · reproducible
collar-01.blend1.3 MBper-run
hero.png504 KBper-run
front.png542 KBper-run
side.png417 KBper-run
manifest.json851 Brecords all six

The glb reproduces anywhere. The blend and stills carry per-run state, so the manifest records what your export made.

SAME JOB, OTHER RUNTIME

check, then export.

$ npx @mrkt_frwd/job examples pull collar-01 --output-dir ./outpulled collar-01 → ./out/job.jsonsha256 3bbe5964edc0… $ npx @mrkt_frwd/job check ./out/job.jsonok  collar-01  schema job/1 $ npx @mrkt_frwd/job export ./out/job.json --output-dir ./outexport → ./outblend  5a694c50e261e46fglb    5e507bc04838f890

Export writes beside the Job it read. It never rewrites it.

THE CLI GUIDES YOUR AGENT

Point your agent at npx @mrkt_frwd/job.

docsls, cat, find, grep the whole manual. No network.
examplesPull a verified Job with its checksums. Mutate it.
checkValidate against schema job/1. Unchecked Job does not run.
mcpLocal stdio server. Writes only with --output-dir.
$ npx @mrkt_frwd/job
# prints getting-started.md

$ npx @mrkt_frwd/job docs ls
catalogs.md
check.md
cli.md
doctrine.md
getting-started.md
job-schema.md
mcp.md

$ npx @mrkt_frwd/job docs find schema
job-schema.md

$ npx @mrkt_frwd/job docs cat getting-started.md
A Job is a versioned scene file. A prompt only writes a Job.

That is the whole instruction.

EXAMPLES

Pull a verified Job. Mutate it.

collar-01 still
collar-01 npx @mrkt_frwd/job examples pull collar-01 --output-dir ./out

One example, published with its own checksum file. Pull it, change a material or a camera, and export again — the manifest tells you exactly which artifacts moved.

Starting from an empty job.json is the slow path. Start from one that already compiles.

DOCS

What the CLI cats.

Get startedagents.md · llms.txt Schemajob/1 Catalogsmaterials · cameras · env OpenAPIMCP · examples