Nodes/Akatz Seamless Tiling/Akatz Make Circular VAE
ComfyUI Node

Akatz Make Circular VAE

Patch a VAE once, reuse it everywhere in your tile workflow

By akatz-ai·Created 3 months ago·Updated 2 months ago· 2
Akatz Make Circular VAE
  • vae
  • VAE
tiling
copy_vae

Where Akatz Circular VAE Decode is the one-shot version, this node is the reusable one. Akatz Make Circular VAE takes your VAE, patches its convolutions to use circular padding, and hands you back a patched VAE you can wire anywhere a normal VAE is accepted. Same idea, different shape: you get the tool, not just a finished decode.

Why would you want that? Because a seamless tiling workflow often needs the VAE in more than one place. Maybe you're decoding, then re-encoding for an img2img pass, or you're comparing outputs side by side, or you're chaining into a node that wants a VAE input rather than an IMAGE output. Instead of patching the same VAE again per decode, you patch once, upstream, and every downstream VAE consumer gets seamless behavior automatically. It keeps the graph readable - one node doing one job - which is worth something in a workflow that's already sprouting controlnet and upscale branches.

How it works

Under the hood it's the same circular-padding trick as the rest of the pack: the node swaps every Conv2d layer's padding mode from zero to circular, so the VAE treats the image as a torus and there's no border artifact to create a seam. The difference from AK_CircularVAEDecode is purely what comes out the other end - a VAE object instead of an IMAGE.

Two controls to know:

  • tiling - the standard four modes (enable, x_only, y_only, disable). Match the axis choice to how you're sampling, or you'll patch the VAE for a seam direction you don't use.
  • copy_vae - and here's the genuine trap of this node. "Make a copy" clones the VAE before patching and returns the clone; your original stays normal. "Modify in place" patches the actual VAE object you passed in - which means it's now seamless everywhere in your entire workflow, including any node that expected a normal VAE. That's occasionally exactly what you want. It's more often how people accidentally make their whole graph seamless. Start with "Make a copy"; flip to "Modify in place" only when you're sure.

Inputs and output

Three required inputs - vae, tiling, copy_vae - and one output, VAE. Feed that output into a standard VAE Decode node (or anything else that takes a VAE) and you get the seamless decode with ordinary built-in nodes. There's no image processing here; the node never touches pixels, it only changes how the VAE will behave later.

Install

Same as the rest of the pack - they ship together.

cd ComfyUI/custom_nodes
git clone https://github.com/akatz-ai/Akatz-Seamless-Tiling

Then restart ComfyUI, or install via ComfyUI Manager by searching "Akatz Seamless Tiling". Dependencies are numpy and opencv-python-headless; no model downloads, no API calls.

Troubleshooting

  • My whole workflow is seamless now and I didn't mean it to be - you used "Modify in place". Re-load the VAE and switch to "Make a copy".
  • Nothing looks different - confirm the patched VAE is the one actually feeding your decode, and that tiling isn't disable. Circular padding is subtle until you tile the image; preview by tiling, not by squinting at a single frame.
CategoryAkatz Seamless Tiling/Latent

Inputs (3)

NameTypeDefaultDescription
vaeVAE
tilingCOMBO4 options: enable, x_only, y_only, disable
copy_vaeCOMBO2 options: Make a copy, Modify in place

Outputs (1)

NameTypeDescription
VAEVAE