Janction Render

io.github.JasmyLab-JANCTIONv0.2.1Updated Oct 1, 2026

Render Blender scenes (.blend or bpy script) on JANCTION GPUs from AI agents: previews, frames, MP4.

VerifiedStreamable HTTPWeb executableCloud & InfrastructureMedia & Design

Overview

AI-generated overview

Renders Blender scenes on JANCTION cloud GPUs, returning preview frames, estimates, and final PNG or MP4 output.

What it does
Lets an assistant submit a .blend file, a bpy scene script, or a scene URL and render it on remote GPUs. Tools include scene_info for inspecting cameras, frame range and missing files without rendering; render_preview for up to four low-cost tiled frames; render_estimate for GPU seconds, queue wait and quota fit; render_final for PNG or MP4 output; render_status, render_download and render_cancel for job control; plus billing and render_info for quota and worker availability. A CLI exposes the same operations.
When to use it
Useful when you want Blender renders without a local GPU, when local rendering is slow, or when an agent should iterate on a scene by previewing, adjusting, and re-rendering. It fits agent workflows that build scenes from bpy scripts and need quick visual feedback before a final render.
Requirements
Remote option: connect to the Streamable HTTP endpoint with OAuth 2.1 or a Bearer API key, nothing to install. Local stdio option: Python with uvx or pip, and the JANCTION_RENDER_SERVER URL (default A temporary API key is issued automatically on first use and cached locally; JANCTION_RENDER_API_KEY can pin one. Network access is required.
Before you install
The stdio server sends local scene files to the remote service, so avoid confidential assets. The API key carries quota and later credit; treat JANCTION_RENDER_API_KEY as a secret. Free beta gives 10 GPU-minutes per day per key, and paid per-GPU-second plans are planned, so spending may follow. Inputs and results are deleted 24 hours after last use. Scene scripts run in an isolated container with no network.

Installation

In SourceWeft

  1. Open Janction Render in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "janction-render": {
      "type": "http",
      "url": "https://render.janction.jp/mcp"
    }
  }
}

README

JANCTION Render

[JasmyLab-JANCTION/janction-render MCP server]

A cloud GPU render farm for Blender, built for AI agents. Render Blender scenes on JANCTION GPUs from Claude, ChatGPT, Claude Code, Codex, Cursor or any MCP client: an MCP server (remote and stdio) plus a CLI. Use it to render Blender without a GPU, or when rendering locally is slow.

  • Input: a .blend file, or a bpy Python script that builds the scene (no local Blender needed).
  • scene_info reads the scene without rendering (cameras, frame range, missing files).
  • render_preview returns 1-4 low-cost frames tiled in one image within seconds, so the agent can look, fix, and repeat.
  • render_estimate says how long a render will take ("about 3 minutes") and whether it fits today's free quota.
  • render_final renders the frames on GPUs and joins them into an MP4; render_status reports the remaining time.
  • Free beta: no charges. Each key gets 10 GPU-minutes per day; a final render is up to 240 frames at 1080p. Paid plans (per GPU second, prepaid credit) will be announced on the service page before they start.
  • Inputs and results are deleted 24 hours after last use and are never used for training.

Status

Free beta. Service page: https://render.janction.jp (/v1/health, /llms.txt). Blender 5.0, Cycles on GPU.

Connect (remote MCP, nothing to install)

MCP server URL: https://render.janction.jp/mcp (Streamable HTTP). Auth is OAuth 2.1 with dynamic client registration: pressing "Connect" opens a page that creates a free API key (or takes one you already have). A raw API key also works as Authorization: Bearer jr_....

clienthow
Claude.ai (web, desktop, mobile)Settings → Connectors → Add custom connector → paste the URL → Connect
ChatGPTSettings → Connectors → Advanced → Developer mode → Create → paste the URL (OAuth)
Claude Codeclaude mcp add --transport http janction-render https://render.janction.jp/mcp, then /mcp to authenticate
Cursor, Windsurf, other MCP clientsStreamable HTTP at the URL above (OAuth, or a Bearer API key header)

Remote tools take scene_script (bpy code as text), scene_url (an https link to a .blend or .py) or scene_id; results come back as an inline image plus download links that need no key and work for about 24 hours.

Claude Code plugin (the remote connector plus a skill with the workflow):

/plugin marketplace add JasmyLab-JANCTION/janction-render/plugin install janction-render@janction-render

Install (stdio MCP, sends local files)

The package is on PyPI as janction-render.

# Claude Code (uvx runs it without a global install)claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- uvx --from janction-render janction-render-mcp
# or with pip / pipxpip install janction-renderclaude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- janction-render-mcp

Codex: add to ~/.codex/config.toml

toml
[mcp_servers.janction-render]command = "uvx"args = ["--from", "janction-render", "janction-render-mcp"]env = { JANCTION_RENDER_SERVER = "https://render.janction.jp" }

A temporary API key is issued automatically on first use and cached in ~/.janction-render.json; set JANCTION_RENDER_API_KEY to pin one (quota and, later, credit belong to the key). The same key can be used from the remote connector: paste it on the connect page.

Then, in Claude Code:

Build a small street scene in Blender with a camera fly-through and render a preview with janction-render.

Tools

toolwhat
`scene_info(scene_scriptscene_url
render_preview(..., frames="1-24")up to 4 frames (720p budget) tiled with frame labels; returns the image inline
render_estimate(scene_id, frame_start, frame_end, width, height, samples)GPU seconds, queue wait, "about N minutes", fits today's free quota? No GPU time used
render_final(scene_id, frame_start, frame_end, width, height, samples, fps, output)PNG or MP4; returns job_id + estimate
render_status(job_id)progress and ETA (eta.human); render_download(job_id) files or links; render_cancel(job_id)
billing()free-beta quota (used today, daily limit, reset time); later balance and top-up link
render_info()workers online, queue and expected wait

CLI: janction-render inspect|preview|render|status|download|cancel|jobs|balance|topup|info.

Writing a scene script

python
import bpy, mathfor ob in list(bpy.data.objects):    bpy.data.objects.remove(ob, do_unlink=True)scene = bpy.context.scenescene.frame_start, scene.frame_end = 1, 24bpy.ops.mesh.primitive_monkey_add(location=(0, 0, 1))cam = bpy.data.objects.new("Camera", bpy.data.cameras.new("Camera"))scene.collection.objects.link(cam); scene.camera = camcam.location = (6, -6, 4); cam.rotation_euler = (math.radians(60), 0, math.radians(45))sun = bpy.data.objects.new("Sun", bpy.data.lights.new("Sun", "SUN"))scene.collection.objects.link(sun)

The service sets engine (Cycles), resolution, samples and denoising; your script sets the scene, camera and frame range. Scripts run in an isolated container with no network. See samples/cube_scene.py.

HTTP API

POST /v1/keys                                   -> {api_key}         (header X-API-Key afterwards)POST /v1/files  multipart "file" (.blend|.py)   -> {scene_id}POST /v1/estimate {kind, frames|frame_start/frame_end, width, height, samples, scene_id?} -> seconds, wall_seconds, human, quotaPOST /v1/jobs   {scene_id, kind: info|preview|final, frames|frame_start/frame_end, width, height, samples, camera, fps, output}GET  /v1/jobs/{id}      status, progress, eta, artifacts[], cost, warnings, info    DELETE /v1/jobs/{id}  cancelGET  /v1/jobs/{id}/artifacts/{name}             PNG / MP4POST /mcp                                       remote MCP (Streamable HTTP; Bearer api key or OAuth)GET  /.well-known/oauth-protected-resource/mcp  OAuth discoveryPOST /v1/billing/checkout {amount_yen} -> {checkout_url}   POST /v1/billing/sync   GET /v1/ledger   GET /v1/meGET  /llms.txt  /terms  /privacy  /legal  /security

During the free beta a 429 quota_exceeded response carries resets_at; a 400 beta_limit means the job is too big (split it). Once paid plans start, a 402 payment_required response carries checkout_url.

Self-hosting

The server (FastAPI + SQLite, with the remote MCP endpoint) and the worker (Blender in disposable Docker containers, --network none --cap-drop ALL) live in the internal repository and are not part of this package yet. This repository holds the client side: stdio MCP server, CLI, HTTP client, samples and the Claude Code plugin.

MCP registry

This server is listed in the official MCP registry as io.github.JasmyLab-JANCTION/janction-render (remote: https://render.janction.jp/mcp).

mcp-name: io.github.JasmyLab-JANCTION/janction-render

License

MIT (see LICENSE). Operated by JasmyLab Inc.

Source: README.md at commit 5b9c716

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v0.2.1LatestOct 1, 2026