Nodes/Quality of Life Nodes for ComfyUI/TensorScale SenseNova U1.5 (Soze)
ComfyUI Node

TensorScale SenseNova U1.5 (Soze)

TensorScale SenseNova U1.5 in ComfyUI

By SozeInc·Created 2 years ago·Updated a day ago· 10
TensorScale SenseNova U1.5 (Soze)
    • image
    • image_path
    • request_id
    • config
    • status
    prompt
    seed42
    size2048x2048
    cfg_scale4.0
    timestep_shift3.0
    api_key_envTENSORSCALE_API_KEY_SENSENOVA_U1_5
    timeout1800

    There's no GPU on Earth that will ever run this node's model locally, and that's the point. TensorScale SenseNova U1.5 is a hosted text-to-image model, and this node is a thin HTTP client that sends your prompt to TensorScale's API, waits for the finished PNG, and drops it into your graph as if a local sampler had made it. Type a prompt, hit run, get a 2048x2048 image back. No checkpoint to download, no VRAM, no model files at all.

    It's one node in Soze's "Quality of Life" pack (SozeInc/ComfyUI_Soze), which also wraps MiniMax H3, LTX video, FAL, and ElevenLabs. The TensorScale group is all cloud inference: each node POSTs once and streams the result back. If the community is split on API nodes - "right tool for a model you can't run, wrong default for one you can" - this one is squarely in the first camp. SenseNova isn't something you're going to abliterate and run at home. You either call it or you don't use it.

    How it works

    Under the hood (in py/tensorscale.py) the node builds a small JSON payload - prompt, seed, size, cfg_scale, timestep_shift - and POSTs it to https://api.tensorscale.io/v2/sensenova-u1.5/t2i with your key as a Bearer token. The call is synchronous, not polling: the socket stays open for the entire generation, and TensorScale streams the finished PNG back to ComfyUI's temp folder, where it's decoded into a normal IMAGE tensor. The request runs on a worker thread so a long generation doesn't freeze ComfyUI's event loop.

    A couple of honest gotchas buried in the source. The current "service profile" is pinned to the golden 2048x2048 / 50-step request: size must be 2048x2048, cfg_scale must be 4.0, and timestep_shift must be 3.0. The widgets are exposed anyway in case TensorScale widens the profile, but the tooltips literally say "must be" - leave them alone. And unlike an image-only sampler, this thing has a 30-minute default read timeout (timeout, default 1800s, max 7200s). If the model's queue is long, that's your buffer.

    The inputs that matter

    Only two are required, and one of them is obvious:

    • prompt - your text, multiline. Blank prompt gets you a graceful skip, not a crash.
    • seed - integer, default 42. Set it for reproducible results.

    The optional ones are mostly set-and-forget: the pinned size/cfg_scale/timestep_shift above, plus api_key_env (which env var holds the key; more below) and timeout.

    The five outputs are image (wire this straight into a Preview Image / Save Image / upscaler), image_path (where the PNG landed), request_id (your audit trail for billing disputes), config (a summary string of what you sent), and status (the run log). On failure it doesn't blow up the graph - it returns a 64x64 blank image and puts the error in status. If you ever see a tiny blank square, that's the node telling you the API call failed.

    Installing and the API key

    Clone it into custom_nodes (or install via ComfyUI Manager by searching "ComfyUI_Soze") and restart:

    cd ComfyUI/custom_nodes
    git clone https://github.com/SozeInc/ComfyUI_Soze.git
    pip install -r ComfyUI_Soze/requirements.txt
    

    No models to fetch. The heavy requirements (torch, moviepy, fal-client, azure-storage-blob) serve the pack's other nodes; this one just needs requests plus ComfyUI itself.

    The real setup step is the key. TensorScale keys are model-scoped, so the node reads TENSORSCALE_API_KEY_SENSENOVA_U1_5 by default, falling back to a shared TENSORSCALE_API_KEY. Set it in your environment, or drop a .env file in the repo root (gitignored - never commit it):

    echo "TENSORSCALE_API_KEY_SENSENOVA_U1_5=tsk_..." >> ComfyUI_Soze/.env
    

    Common issues

    • "No TensorScale API key found" - the exact RuntimeError the source raises when no matching env var exists. The key must also be authorized for this model, so a key for another model won't do.
    • Blank 64x64 output - API error; read the status output string for the real message.
    • Read timeout - the endpoint is synchronous and generation can be slow; that's what the 1800s default is for. Bump timeout if your runs time out.
    • Your prompt leaves the machine - it goes to TensorScale's servers with their moderation and logging. Same as any API node: fine for a model you can't run, not a privacy feature.

    It's pay-per-call, so keep an eye on the meter. But for the one time you need a 2K image from a model that only exists in the cloud, nothing local touches it.

    CategoryTensorScale/ImageGeneration

    Inputs (7)

    NameTypeDefaultDescription
    promptSTRING
    seedINT420–4294967295
    sizeoptSTRING2048x2048Must be 2048x2048 in the current service profile.
    cfg_scaleoptFLOAT4.00–20Must be 4.0 in the current service profile.
    timestep_shiftoptFLOAT3.00–20Must be 3.0 in the current service profile.
    api_key_envoptSTRINGTENSORSCALE_API_KEY_SENSENOVA_U1_5Environment variable holding the model-scoped key. Falls back to TENSORSCALE_API_KEY when unset.
    timeoutoptINT180060–7200Read timeout in seconds. These endpoints are synchronous — the socket stays open for the whole generation.

    Outputs (5)

    NameTypeDescription
    imageIMAGE
    image_pathSTRING
    request_idSTRING
    configSTRING
    statusSTRING