mcpbeat

I4h Catheter Navigation Viewport

nvidia/i4h-catheter-navigation-viewport

Launch the interactive Slang fluoroscopy viewport with XPBD catheter physics. Use when asked to open the viewport, teleop a catheter, or demo fluoro navigation.

5k tokens
context cost
the whole folder, loaded on every use
5
files
instructions only
0
copies elsewhere
how many repositories repackaged it
2778
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/NVIDIA/skills --skill i4h-catheter-navigation-viewport

What comes with it

17 723 bytes besides the instruction
BENCHMARK.md
evals/evals.json
skill-card.md
skill.oms.sig

The instruction itself

12 sections, as written by the author

i4h Catheter Navigation - Interactive Viewport

Purpose

Launch the interactive fluoroscopy viewport with real-time XPBD catheter physics, DSA, C-arm presets, and centerline-guided insertion. Requires a digital twin cache from [[i4h-catheter-navigation-digital-twin]].

Base Code

ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/catheter_navigation" ]; then
  ROOT="${I4H_WORKFLOWS:-$HOME/i4h-workflows}"
  [ -d "$ROOT/workflows/catheter_navigation" ] || git clone https://github.com/isaac-for-healthcare/i4h-workflows "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"; cd "$ROOT"

Basics

  • Entry mode: ./i4h run catheter_navigation interactive_viewport (preferred)
  • Requires display (X11); remote/VNC may need QT_QPA_PLATFORM=xcb.
  • Recommended flags: --vessel-source real --insertion-axis centerline --dsa --key-hold-ttl 0.20

Run

Run the steps below in order. Each step is a separate bash call; variables persist in the local agent's tmux session.

Step 1 - resolve cache and run dir

REPO_ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"; [ -d "$REPO_ROOT/workflows/catheter_navigation" ] || REPO_ROOT="$HOME/i4h-workflows"
WF_ROOT="${REPO_ROOT}/workflows/catheter_navigation"
RUN_DIR="${WF_ROOT}/runs/viewport_$(date +%Y%m%d_%H%M%S)"
mkdir -p "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${WF_ROOT}/runs/.latest"

CACHE="${CACHE:-/tmp/ct_cache}"
if [ ! -f "${CACHE}/mu_volume.npy" ]; then
  echo "viewport: set CACHE to a digital-twin dir (missing mu_volume.npy). Run i4h-catheter-navigation-digital-twin first." >&2
  exit 1
fi

Step 2 - launch viewport

QT_QPA_PLATFORM="${QT_QPA_PLATFORM:-xcb}" \
"${REPO_ROOT}/i4h" run catheter_navigation interactive_viewport --local \
  --run-args="--ct-dir ${CACHE} --vessel-source real --insertion-axis centerline --det-size 1024 --pixel-spacing-mm 0.6 --dsa" \
  2>&1 | tee "${RUN_DIR}/logs/viewport.log"

Controls (summary)

| Input | Action |

|---|---|

| W / S | Advance / retract catheter along centerline |

| A / D | Rotate catheter CCW / CW |

| F / C | Toggle vessel / centerline overlay |

| X | Toggle DSA contrast bolus |

| 1-4 | C-arm presets (AP, LAO-45, Lateral, RAO-30) |

| Space | Pause / resume |

| R | Reset catheter |

| Q / Esc | Quit |

Full table: workflows/catheter_navigation/README.md.

Prerequisites

  • [[i4h-catheter-navigation-setup]] and [[i4h-catheter-navigation-digital-twin]] completed.
  • Display server (local X11 or remote desktop with keyboard focus).
  • GPU with >= 8 GB VRAM (16 GB recommended).

Limitations

  • Interactive GUI - not suitable for headless CI.
  • Keyboard focus on remote desktops may require pointer over the fluoro window.

Troubleshooting

  • Error: controls appear dead on remote X11 - Fix: QT_QPA_PLATFORM=xcb (Step 2 sets this by default).
  • Error: missing cache - Fix: run [[i4h-catheter-navigation-digital-twin]].
  • Error: Vulkan / slang init failure - Fix: verify GPU driver; try Docker without --local.

Final Response

Report CACHE used, note any display/input workarounds applied, and point to README controls if the user needs the full key map.

How to use it

Copy the folder

Take nvidia/i4h-catheter-navigation-viewport from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.