π₯ Gimbal GPS Load (Recall)
Teleport back to a saved latent coordinate in a later session
- reference_latent
- reconstructed_latent
- waypoint_meta
- load_report
GPS Load is the other half of the bookmarking pair in the Gimbal-comfy suite (by Form & Noise). If GPS Anchor is "save this latent," GPS Load is "bring it back" - it reads a JSON waypoint that Anchor wrote and reconstructs a latent from it in a fresh session. Together they're what make a good generation a place you can return to, rather than a one-time roll of the dice.
The honest framing first: a saved waypoint is a snapshot of a latent's coordinates and statistics, not a complete image. To turn those numbers back into something you can denoise, the node needs a reference_latent - a live latent from your current graph that provides the geometry - and then it layers the saved waypoint's information onto it. That's the whole design: you load a coordinate and let the current model re-render toward it.
How it works
waypoint_file is a dropdown populated from every .json in output/gimbal/ (the same directory GPS Anchor writes to). If nothing's been saved yet, it reads "<no waypoints found>" - and yes, that's the actual first entry you'll see. There's a manual_path string input to bypass the dropdown and point straight at a JSON file anywhere on disk.
The mode controls how the saved data gets merged onto your reference latent:
- Reference_Only - keep the reference latent's structure and just apply the waypoint's stored metadata.
- Statistical_Match - rescale the reference so its mean and standard deviation match the saved tensor's. This is the mode for "my new latent is the right shape but the wrong texture/contrast neighborhood."
- Coord_Steering - steer the reference toward the saved coordinates, with
strength(0β2) controlling how far you go.
Outputs are reconstructed_latent (into a KSampler or VAEDecode), waypoint_meta (DICT), and load_report (STRING). The node also re-checks the file each run via its change detection, so if you regenerate a waypoint file, a re-run picks up the new data.
The inputs that matter
For a first attempt: pick the waypoint from the dropdown, leave mode on Statistical_Match, set strength to 1.0, and wire a latent of the same shape in as reference_latent - one fresh out of a KSampler or a VAE Encode both work. If the recall looks weak or overdriven, strength is your dial, not the mode.
Common issues
The biggest footgun is expecting a pixel-perfect restoration: because the waypoint stores statistics and hashes rather than the full tensor, the reconstructed latent is a close neighbor, not a clone - you'll usually want a refinement pass (denoise ~0.5, modest CFG) to land cleanly. And if the dropdown is empty, you haven't saved a waypoint yet (or it's not in output/gimbal/); run a GPS Anchor with save_waypoint on first, or use manual_path.
Install
# ComfyUI Manager β search "Gimbal"
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/FormAndNoise/Gimbal-comfy
pip install -r Gimbal-comfy/requirements.txt
Restart ComfyUI; it's under Add Node β Gimbal/Navigation as "π₯ Gimbal GPS Load (Recall)". Just torch, numpy, pillow - no extra downloads.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| waypoint_file | COMBO | 1 options: <no waypoints found> | |
| reference_latent | LATENT | β | |
| mode | COMBO | Statistical_Match | 3 options: Reference_Only, Statistical_Match, Coord_Steering |
| strength | FLOAT | 1.000β2 | β |
| enable_perf_logging | BOOLEAN | false | β |
| manual_pathopt | STRING | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| reconstructed_latent | LATENT | β |
| waypoint_meta | DICT | β |
| load_report | STRING | β |