Install
Inside ComfyUI, nothing: link the node pack (below) and seriesmith runs on ComfyUI’s own Python, loaded from the repo the pack is linked from. Forseriesmith serve and the command line, Python 3.10 or newer, in a virtual
environment of its own (run_seriesmith.bat / run_seriesmith.sh make it the
first time they run):
python -m venv .venv
.venv\Scripts\activate (Windows; source .venv/bin/activate elsewhere)
pip install -e .
That brings comfy-sdk, which Comfy Cloud, deployments and Router use. Inside
ComfyUI, seriesmith installs comfy-sdk into ComfyUI’s Python itself, in the
background, once a Comfy API key is set (saved in Settings, or COMFY_API_KEY
at startup); Settings shows how it went and has Install to try again. Only
those backends use it. SERIESMITH_NO_AUTO_INSTALL=1 turns the automatic
install off.
Your own GPU: ComfyUI
Local renders go straight to your ComfyUI (comfyui_url, default
http://127.0.0.1:8188; inside ComfyUI, that ComfyUI on whatever port it runs),
through its own API: the input files go up to input/seriesmith/ (named by
their content, so each is sent once), the graph is queued on /prompt,
followed on /ws and /history, and its outputs fetched from /view. A job
that was running when seriesmith stopped is picked up again by its prompt id.
Through comfy-api-proxy instead (optional)
comfy-api-proxy serves the same Comfy API v2 as Comfy Cloud in front of a ComfyUI. seriesmith used it for every local render before it talked to ComfyUI directly; it still can, with"local_via": "proxy" in the settings (or
SERIESMITH_LOCAL_VIA=proxy, or Settings → Through comfy-api-proxy). Install it
in the same environment:
pip install comfy-api-proxy
comfy-api-proxy start —comfyui http://127.0.0.1:8188 —port 8189 —state-dir “%LOCALAPPDATA%\seriesmith\proxy”
--state-dirmatters: without it, a restart of the proxy forgets the files it has uploaded and the jobs it has run.- It listens on 127.0.0.1 only. To reach it from another machine it needs
--token, and seriesmith’slocal_urlset to match. comfy-api-proxy status/stopmanage the background process.- The proxy can’t see ComfyUI’s model lists or installed nodes; seriesmith asks
ComfyUI for those directly (
comfyui_url). - With
local_via“proxy” you rarely start it yourself:seriesmith serve, and every command that queues work onlocal(render, upscale, post, master, tour, kreagen), start it when it isn’t running and ComfyUI is.
The seriesmith nodes
Everything seriesmith sends a backend runs on its own nodes (comfy_nodes/):
the shot loader and saver, the continuous: latent chain, the upscale loaders
and saver, and the upscale and post compute nodes. h3pipe’s node pack isn’t
needed (the runner refuses a graph that would use it). Link the folder into
ComfyUI’s custom_nodes and restart ComfyUI:
mklink /J “<ComfyUI>\custom_nodes\seriesmith” “<seriesmith>\comfy_nodes” (Windows)
ln -s “<seriesmith>/comfy_nodes” “<ComfyUI>/custom_nodes/seriesmith” (elsewhere)
They sit happily beside h3pipe’s node pack if you keep it for h3pipe. The pack
also serves the editor inside ComfyUI, the same app as seriesmith serve
(INSTALL.md, “The editor inside ComfyUI”): it finds the seriesmith package in
the repo it is linked from (or installed in ComfyUI’s Python, if it is). No
other pack is needed to render. A node a target can do without (binding
bypass_if_missing: H3’s H3SLAAttention, from ComfyUI-PlagueKind-Nodes) is
spliced out of the graph where ComfyUI hasn’t it, and the take notes it.
seriesmith render --dry-run writes the graph a shot would run.
The default models
A series config that names no video target (series.target) or picture
target (refs.target) renders on this machine’s default for that kind:
- the one picked in Settings (
default_targetsin the settings file); - else the one found installed (
detected_targets). Each time a host (seriesmith serve, the editor inside ComfyUI) sees ComfyUI answer, and on each readiness check after that, it takes the first target, indefault_rankorder (target.json), that is ready, else the first that is degraded: H3 Ref2VA, LTX-2.5, LTX-2.3 ingredients, Wan 2.2 VACE / I2V / 5B; Krea 2, FLUX.2 Klein, Z-Image Turbo, Qwen-Image 2.1, FLUX.3 Klein, MOSS-Image SFT, …; - else the built-in:
minimax_h3_ref2vaandkrea2.
Comfy Cloud, deployments and Router
All three use your Comfy API key (platform.comfy.org). Keep it in the environment rather than in a file: setx COMFY_API_KEY comfyui-… (Windows; export COMFY_API_KEY=… elsewhere) Router also needs it when everything else runs locally: a hosted model fetches its reference pictures from Comfy Cloud, so they are uploaded there (a few models take them inline in the request instead). The editor’s Settings window sets the key too (saved in the settings file below);seriesmith backends says whether one is set.
Comfy Router models
A hosted model is a target like any other, on therouter backend only: no GPU, no
model files. seriesmith ships the video and image models it has tried (Seedance, Kling,
Wan, Veo, Runway, hosted H3; Nano Banana, Seedream, GPT Image, Flux, Qwen, Krea 2 and
more), and others as drafts, which stay out of the pickers until you probe one and Enable it in the editor’s Models
window. That window also adds any other model from Router’s catalog
(EDITOR.md, “Comfy Router models”).
What a hosted take costs is the provider’s, billed to the key’s account. Runs on Cloud,
Router or a deployment are counted in the Jobs window, and paid_limit (below) caps
them per server session.
Settings
Anything not in the environment can go in a settings file,%APPDATA%\seriesmith\settings.json (Windows) or
~/.config/seriesmith/settings.json:
cloud_url(defaulthttps://cloud.comfy.org) andapi_key(better kept inCOMFY_API_KEY).default_targets:{"video": id, "image": id}, the models a series naming none renders on (Settings’ Video model / Picture model);detected_targets: the ones found installed, written by seriesmith (The default models, above).hf_token: a Hugging Face read token, for the gated downloads (LTX-2.5, FLUX) the Features window makes;HF_TOKENin the environment wins.ffmpeg_dir: a folder holding your own ffmpeg and ffprobe, used before anything else (seriesmith/ff.py).comfyui_dir: ComfyUI’s folder (the one withmain.py), for the Features window to install into when the standalone server can’t ask ComfyUI (/internal/folder_paths).local_via:"comfyui"(the default: local renders straight to ComfyUI) or"proxy"(through comfy-api-proxy atlocal_url, defaulthttp://127.0.0.1:8189).paid_limit: how many paid runs one server session may queue (none: no cap).enabled_drafts: the built-in draft models switched on for every show (the Models window’s Enable).target_limits: this machine’s changes to a built-in model’s limits (its Limits form; Back to shipped removes one).
targets/<id>/),
the editor’s project folders (default/seriesmith/config.json) and the queue’s journal
(queue.json; queue-comfyui.json for the editor inside ComfyUI). A model saved for one
show only goes in <show>/targets/<id>/ instead.
The environment wins over the file: SERIESMITH_LOCAL_URL,
SERIESMITH_COMFYUI_URL, SERIESMITH_CLOUD_URL, SERIESMITH_LOCAL_VIA, COMFY_API_KEY,
HF_TOKEN;
SERIESMITH_SETTINGS names another file. These are this machine’s settings;
nothing here goes in the series config, which gets shared.