π§ Kanibus Master
The 'all-in-one' eye tracking node that's half real, half promise
- image
- video_frames
- video_metadata
- kanibus_result
- processed_image
- eye_mask
- depth_map
- normal_map
- pose_visualization
- controlnet_conditioning
- processing_report
Kanibus Master is the poster child for the kanibus/kanibus pack, and it's the node where you most need to know what you're actually getting. The README sells it as a "primary orchestrator" that fuses eye tracking, depth, normals, pose, emotion and object tracking into ControlNet-ready conditioning for WAN 2.1/2.2. The code is more honest: it genuinely runs real eye tracking, then fills most of the rest with placeholders.
Here's the deal in one line - the pack is a "vibecoded" Claude-generated repo (the source literally says "Generated by Claude Flow Hive Mind", last commit Aug 2025), and Master is the hub where the working parts meet the not-yet-working parts. Know which is which and you can still get value out of it.
What it actually does
You feed it a source and a bunch of feature toggles, it pushes each frame through a pipeline, and hands you back a kanibus_result, masks, maps and a controlnet_conditioning output. The real work:
- Eye tracking is real. It calls
NeuralPupilTracker(MediaPipe FaceMesh with iris landmarks), soeye_maskand the tracking insidekanibus_resultare genuine. - Everything else is placeholder. Depth, normals, pose, emotions, hands and objects are generated by
_generate_placeholder_*functions in the source - canned values that ignore your actual image. The depth "map" is a gradient ramp, not a MiDaS/Depth Anything output. - Webcam mode doesn't exist yet. Set
input_sourcetowebcamand the code logs "not yet implemented" and returns black frames. The README'srealtime_webcam.jsonexample is aspirational. controlnet_conditioningis not real conditioning. It's a list of Python dicts describing what could be applied. It wires only into the pack's own MultiControlNetApply node, which - check the source - builds those dicts and then returns your model and conditioning unchanged. Nothing actually gets conditioned.
That last point is the one that bites. If you plug controlnet_conditioning straight into a KSampler you'll get a type error; the output is a custom CONDITIONING-shaped thing that isn't a CONDITIONING.
The inputs that matter
input_source (image, video, webcam) and pipeline_mode (real_time, batch, streaming, analysis) pick the path, but in practice only image with a wired image input, or video with video_frames + video_metadata from the pack's VideoFrameLoader, do anything today. The feature toggles are worth knowing: enable_eye_tracking (on) and enable_face_tracking (on) are the live ones; enable_depth_estimation is on but produces the placeholder ramp.
The weight sliders (eye_mask_weight, depth_weight, canny_weight, sketch_weight, landmarks_weight, pose_weight, hands_weight) feed _create_controlnet_conditioning's dicts. They're wired and real within the pack's own apply node - they just don't reach a sampler. tracking_quality and temporal_smoothing do affect the real eye tracking (smoothing is passed straight to the pupil tracker).
Installing it
Same as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/kanibus/kanibus
cd kanibus # note: lowercase. The README says "cd Kanibus" - wrong on Linux/Mac.
pip install -r requirements.txt
python install.py
Restart ComfyUI and look for the Kanibus category. ComfyUI Manager can install it too - search "Kanibus". The full requirements.txt is heavy (mediapipe, torch, transformers, diffusers, ultralytics, timm, numbaβ¦) and may collide with your ComfyUI environment; if the install throws, the repo ships requirements_minimal.txt as the fallback. The README insists you must download ~5.6GB of SD 1.5 ControlNet models before anything works - the shipped code never loads them, so don't let that scare you off the nodes that do work.
Troubleshooting
- Black/blank outputs for depth or normals: that's the placeholder working as designed, not a bug. Use a real depth node instead.
- Webcam returns nothing useful: not implemented yet, regardless of what the docs imply.
- No Kanibus category after install: check the console for an import error (usually a missing mediapipe or torch dependency), fix, restart.
If your actual goal is eye-tracking-driven video control, Master is a convenient wrapper, but you'll get further wiring NeuralPupilTracker directly and feeding its masks to a real ControlNet setup. Master is the demo floor - the individual nodes are where the substance is.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| input_source | COMBO | image | 3 options: image, video, webcam |
| pipeline_mode | COMBO | real_time | 4 options: real_time, batch, streaming, analysis |
| wan_version | COMBO | auto_detect | 3 options: wan_2.1, wan_2.2, auto_detect |
| target_fps | FLOAT | 24.01β120 | β |
| imageopt | IMAGE | β | |
| video_framesopt | IMAGE | β | |
| video_metadataopt | VIDEO_METADATA | β | |
| enable_eye_trackingopt | BOOLEAN | true | β |
| enable_face_trackingopt | BOOLEAN | true | β |
| enable_body_trackingopt | BOOLEAN | false | β |
| enable_object_trackingopt | BOOLEAN | false | β |
| enable_depth_estimationopt | BOOLEAN | true | β |
| enable_emotion_analysisopt | BOOLEAN | false | β |
| enable_hand_trackingopt | BOOLEAN | false | β |
| tracking_qualityopt | COMBO | high | 4 options: low, medium, high, ultra |
| depth_qualityopt | COMBO | medium | 3 options: low, medium, high |
| temporal_smoothingopt | FLOAT | 0.70β1 | β |
| eye_mask_weightopt | FLOAT | 1.10β3 | β |
| depth_weightopt | FLOAT | 0.90β3 | β |
| canny_weightopt | FLOAT | 0.60β3 | β |
| sketch_weightopt | FLOAT | 1.20β3 | β |
| landmarks_weightopt | FLOAT | 0.80β3 | β |
| pose_weightopt | FLOAT | 0.70β3 | β |
| hands_weightopt | FLOAT | 0.50β3 | β |
| model_preferenceopt | COMBO | t2i_adapter | 3 options: t2i_adapter, legacy_controlnet, auto |
| batch_sizeopt | INT | 11β16 | β |
| enable_cachingopt | BOOLEAN | true | β |
| enable_gpu_optimizationopt | BOOLEAN | true | β |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| kanibus_result | KANIBUS_RESULT | β |
| processed_image | IMAGE | β |
| eye_mask | MASK | β |
| depth_map | IMAGE | β |
| normal_map | IMAGE | β |
| pose_visualization | IMAGE | β |
| controlnet_conditioning | CONDITIONING | β |
| processing_report | STRING | β |