Hermes 716852aef8 v0.3: PySide2 mini-UI panel + installer
- New: hermes_bridge_panel.py — PySide2 floating panel with:
  - Port configuration (spinner)
  - Open/Close toggle with green/red status
  - Auto-detected hostname
  - One-click copy prompt: 'Hey Hermes, I have Houdini on [host] port [N]'
  - Persists port setting across sessions
- New: install.py — auto-detects houdini dir, copies panel + shelf
- New: hermes_bridge.shelf — shelf tool integration
- Updated: README with panel usage instructions
2026-07-12 12:46:02 +00:00

Hermes-Houdini Bridge

Hermes Agent ↔ Houdini Python Bridge — remote node control, parameter editing, VEX injection, and scene querying via Houdini's built-in hcommand protocol.

Architecture

Hermes Agent (orange-desktop)          Houdini 21.0 (fedora.fritz.box)
┌─────────────────────┐                ┌──────────────────────────────┐
│  hhb eval "code"    │──SSH──────────→│  hcommand PORT "python code" │
│  hhb script file.py │                │       ↓                      │
│  hhb get-selected   │                │  hou module (running session) │
└─────────────────────┘                └──────────────────────────────┘

No custom server needed — uses Houdini's built-in openport + hcommand protocol. The bridge wraps SSH and command quoting so Hermes can send Python code to your live Houdini session.

Quick Start

1. Install (once)

cd houdini && python3 install.py

Or manually: copy hermes_bridge_panel.py to ~/houdini21.0/scripts/python/.

2. Open the Panel (every session)

In Houdini Python Shell (Alt+Shift+P):

exec(open(hou.homeHoudiniDirectory() + '/scripts/python/hermes_bridge_panel.py').read())
show()

The panel lets you:

  • Choose a port number
  • Open/Close the bridge with one click
  • Copy a ready-to-use prompt: "Hey Hermes, I have a Houdini session running on [hostname] (port 12345)"

3. Use from Hermes

# Get selected node info
./hermes/bin/hhb get-selected

# Set a parameter
./hermes/bin/hhb eval "hou.selectedNodes()[0].parm('file').set('/path/to/file.abc')"

# Query connections
./hermes/bin/hhb eval "print(hou.selectedNodes()[0].inputConnections())"

# Execute a complex Python script
./hermes/bin/hhb script ./examples/create_pyro_setup.py

Requirements

  • Houdini 20+ (tested with 21.0)
  • SSH access from Hermes host to Houdini workstation
  • Network connectivity (port 12345, default)

Project Structure

hermes-houdini-bridge/
├── houdini/
│   └── shelf/
│       └── hermes_bridge.shelf    # Shelf tool: open/close port
├── hermes/
│   ├── bin/
│   │   └── hhb                    # Client: send commands to Houdini
│   └── skill/
│       └── SKILL.md               # Hermes skill for standard workflows
├── examples/
│   └── create_pyro_setup.py       # Example: build a pyro sim
├── docs/
│   └── REFERENCE.md               # hou module cheat sheet
└── README.md

Security

  • Port 12345 opens on 0.0.0.0 — only use on trusted networks
  • To restrict to localhost: modify the shelf tool's openport call to hou.hscript('openport 12345 +.+.+.+')
  • The bridge uses Hermes' existing SSH key — no additional credentials needed

Troubleshooting

Symptom Fix
hcommand: connect failed Port not open. Click shelf button in Houdini.
hcommand: connection refused Houdini not running or port blocked by firewall.
Python error in output Code has syntax issues. Test in Houdini Python Shell first.
ModuleNotFoundError: No module named 'hou' Running hython directly, not through hcommand. Use hhb.
S
Description
Hermes Agent ↔ Houdini Python Bridge — remote node control, parameter editing, VEX injection, and scene querying via hcommand
Readme 114 KiB
Languages
Python 75.1%
Shell 24.9%