Files
hermes-houdini-bridge/README.md
T
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

96 lines
3.4 KiB
Markdown

# 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)
```bash
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`):
```python
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
```bash
# 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`. |