π LTX Likeness Anchor
Pull attention toward a reference face, block by block
- model
- reference_info
- MODEL
The classic LTX identity failure: the face is right in the early frames, then drifts - subtly at first, unrecognizably by the end. LTXLikenessAnchor attacks that at the attention level, with per-block hooks on video self-attention (attn1) that pull generated tokens toward reference face features. It's the workhorse of TenStrip's pre-Reinforcer identity era, and it's still genuinely good - especially if you're on a merged/vanilla LTX2 checkpoint rather than the Best-Face-ID LoRA stack.
The matching uses centered cosine similarity (per-frame mean subtracted first, so common-mode features don't dominate), and v1.2 adds a directional pull mode that rotates token features toward the reference identity direction without changing magnitude - which is what preserves color and saturation.
The two reference modes
The design is deliberately flexible about where the identity features come from:
latent_frame_0(recommended for i2v) - uses frame 0 of the latent as the reference. In i2v workflows that's literally the conditioning start image, so you get identity anchoring with zero extra plumbing.frame_0_bboxlets you restrict the source to the face region.guide- reads the appended reference frame from areference_infooutput, when you're running the Guide+Anchor combo.auto(default) - uses the guide ifreference_infois wired, otherwise falls back tolatent_frame_0.
So the minimal wiring is just: Model β LTXLikenessAnchor β Sampler. The strength (0.10, band 0.08-0.18 for directional pull; 0.30-0.60 usable for a hard identity lock) is the knob you'll actually touch.
The inputs that fix real problems
pull_mode-directional(recommended) oradditive(legacy). The additive mode pulls magnitude too and desaturates at high strength; directional is why the defaults changed.similarity_threshold(0.50) - how similar a token must be to get pulled. Raise it to narrow the effect to the strongest matches.decay_with_distance(0) - fade the pull strength from frame 0 to the last frame; 0.3-0.5 lets later frames breathe while early frames hold.late_block_falloff(0) - the useful one. The last 12 blocks (37-47) handle fine detail, and pulling still-image detail into video refinement steps over-sharpens. 0.3-0.6 disables or dampens late blocks, which is the documented fix for that overcrisp, texture-flattened look.skip_when_sigma_above(0) - disables the anchor on very noisy early steps.bypass- A/B compare without rewiring.
The README's honest warning: the author notes that with depth_curve=late_focus or very high strength, "variance-collapse side effects" are possible, and to test with clean state - hooks can leak between runs, so restart or bypass to get a true read.
The community reality check
If you're coming from TenStrip's face workflows, you'll have seen the identity-loss complaint pattern: small faces in wide shots lose identity, and the face-region conditioning can leave a visible box artifact. The fixes that recur in the threads are the same ones this node's parameters encode: crop the source closer to the subject (a full-body reference simply has too little face detail), use a second reference with a clean face read, and keep the upscale pass out of the identity path - several users report the upscaler is the fastest way to lose identity. This node is where you tune most of that.
Install is the pack-wide clone (10S_Nodes into custom_nodes, restart, or ComfyUI Manager β "10S-Comfy-nodes"), no extra deps. LTX2-class models only. For the newer Best-Face-ID setups the pack now points you at LTXFaceIdentityReinforcer instead - but for vanilla LTX2 identity anchoring, this is still the node.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| strength | FLOAT | 0.100β0.8 | Magnitude of pull toward reference features. 0.08-0.18 typical with directional pull. Higher values (0.30-0.60) usable for stronger identity lock. Variance-collapse side effects at very high values are possible but practical ceiling unconfirmed β test with clean state (no prior runs' hooks leaked) before drawing conclusions. |
| reference_infoopt | REFERENCE_INFO | Optional: wire from LikenessGuide if using Guide+Anchor combined approach. Leave disconnected to use frame_0 of the latent as the reference (recommended for i2v workflows where frame_0 is already the conditioning). | |
| reference_sourceopt | COMBO | auto | auto: use guide if reference_info wired, else use latent_frame_0. guide: requires reference_info from LikenessGuide. Reads the appended reference frame. latent_frame_0: read the first frame of the latent as the reference. Avoids the end-keyframe interpolation issue; ideal for i2v workflows where frame_0 is the conditioned start image. |
| frame_0_bboxopt | STRING | When reference_source=latent_frame_0: bbox within frame_0 to use as identity source. Format: 'x1,y1,x2,y2' normalized 0-1. Empty = whole frame_0 used as reference. | |
| similarity_thresholdopt | FLOAT | 0.500β1 | Minimum centered-cosine similarity for a generated token to receive pull. Lower = broader effect (more tokens pulled). |
| decay_with_distanceopt | FLOAT | 0.000β1 | Per-frame strength decay from frame 0 to frame F_orig-1. 0 = uniform across all frames. |
| bypassopt | BOOLEAN | false | β |
| debugopt | BOOLEAN | false | β |
| advanced_modeopt | BOOLEAN | false | β |
| depth_curveopt | COMBO | flat | Per-block strength scaling. flat = uniform (recommended). ramp_down = stronger early, lighter late (good for avoiding over-sharpening). late_focus = stronger late blocks (CAUTION: can over-sharpen by pulling still-image detail into video refinement steps). |
| block_index_filteropt | STRING | Limit to specific blocks, e.g. '0-36' to skip the final 12 blocks where over-sharpening tends to manifest. Empty = all blocks. | |
| similarity_sharpnessopt | FLOAT | 8.01β32 | Sigmoid steepness for similarity gating. Higher = more binary in/out. Lower values (4-6) soften the transition. |
| override_face_bboxopt | STRING | Override face_bbox_within_reference set in LikenessGuide. Format: 'x1,y1,x2,y2' normalized 0-1. Empty = use guide's bbox. | |
| skip_when_sigma_aboveopt | FLOAT | 0.000β1 | Disable anchor when sigma > this value (high-noise early steps). 0 = always active. |
| pull_modeopt | COMBO | directional | directional (recommended): rotate token features toward reference identity direction WITHOUT changing magnitude. Preserves color/saturation. additive (legacy): pull toward reference features including magnitude. Identity + tonal pull; can cause desaturation/fade with strong settings. |
| late_block_falloffopt | FLOAT | 0.000β1 | Additional per-block strength falloff in the last 12 blocks (37-47), which handle fine detail. 0 = no falloff. 0.5 = late blocks at half strength. 1.0 = late blocks disabled. Use 0.3-0.6 to reduce over-sharpening or texture-flattening from late-block pull. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | β |