NIMBY
Understanding NIMBY (Not In My Back Yard) for workstation rendering
NIMBY (Not In My Back Yard) is OpenCue’s system for managing workstation availability for rendering. It allows organizations to leverage artist workstations as rendering resources while ensuring artists maintain control over their machines during active work.
What is NIMBY?
NIMBY is a feature that automatically or manually controls whether a workstation accepts rendering jobs from OpenCue. When NIMBY is “locked,” the workstation is unavailable for rendering. When “unlocked,” the workstation can accept and process render jobs.
The name “Not In My Back Yard” reflects the computer user’s perspective: they want rendering to happen somewhere else (not on their machine) when they’re actively using it.
NIMBY Components
OpenCue’s NIMBY system consists of two complementary components:
RQD NIMBY (Automatic)
The RQD (Render Queue Daemon) includes built-in NIMBY functionality that automatically detects user activity:
- Input Detection: Monitors keyboard and mouse activity using the
pynputlibrary - Automatic Locking: Locks the host immediately when user input is detected
- Automatic Unlocking: Unlocks the host after a configurable idle period (default: 5 minutes)
- Frame Termination: Kills running frames when locking due to user activity
RQD NIMBY runs as part of the RQD process and requires no user interaction. It’s enabled by default on workstations when RQD is configured with the OVERRIDE_NIMBY setting.
CueNIMBY (Manual Control + Notifications)
CueNIMBY is a Qt-based system tray application that provides user control and feedback:
- Visual State Indicator: Professional icons with OpenCue logo showing current availability
- Enhanced Status Detection: Monitors CueBot connectivity, host registration, and ping times
- Manual Control: Users can toggle availability on/off via menu
- Desktop Notifications: Alerts with emoji hints (🔒❌⚠️🔧) for quick status recognition
- Time-based Scheduling: Automatic state changes based on schedule
- Launch CueGUI: Direct access to CueGUI from the tray menu
- Resilient Connection: Starts even when CueBot is unreachable, reconnects automatically
- Cross-platform: Works on macOS, Windows, and Linux with native look and feel
CueNIMBY runs independently of RQD and communicates with Cuebot via the OpenCue API.
How NIMBY Works Together
Both NIMBY components can run simultaneously on the same workstation:
┌─────────────────────────────────────────────────┐
│ Workstation │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ RQD │ │ CueNIMBY │ │
│ │ (Daemon) │ │ (Tray App) │ │
│ │ │ │ │ │
│ │ • Monitors │ │ • Shows │ │
│ │ input │ │ state │ │
│ │ • Auto lock │ │ • Manual │ │
│ │ • Kills │ │ control │ │
│ │ frames │ │ • Notifies │ │
│ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │
│ └────────┬───────────────┘ │
│ │ │
└──────────────────┼──────────────────────────────┘
│
▼
┌──────────────┐
│ Cuebot │
│ (Server) │
└──────────────┘
Interaction:
- RQD automatically locks when detecting user input
- CueNIMBY shows the NIMBY_LOCKED state and sends notification
- User can manually lock/unlock via CueNIMBY menu
- Both changes are reflected in Cuebot and visible in CueGUI
NIMBY States
Workstations can be in one of several states. CueNIMBY displays these with professional icons featuring the OpenCue logo:
| State | Icon | Emoji | Description |
|---|---|---|---|
| STARTING | opencue-starting.png |
🔄 | Application is initializing |
| AVAILABLE | opencue-available.png |
🟢 | Host is unlocked and idle, ready to accept jobs |
| WORKING | opencue-working.png |
🔴 | Host is unlocked and actively running frames (red dot in center) |
| DISABLED | opencue-disabled.png |
🔴 | Host is manually locked (via CueGUI or CueNIMBY) |
| NIMBY_LOCKED | opencue-disabled.png |
🔒 | Host is locked by NIMBY due to user activity |
| HOST_DOWN | opencue-disabled.png |
❌ | RQD is not running on the host |
| NO_HOST | opencue-error.png |
❌ | Machine not found on CueBot, check if RQD is running |
| HOST_LAGGING | opencue-warning.png |
⚠️ | Host ping above 60 second limit, check if RQD is running |
| CUEBOT_UNREACHABLE | opencue-error.png |
❌ | Cannot connect to CueBot server |
| REPAIR | opencue-repair.png |
🔧 | Host is under repair, check with tech team |
| UNKNOWN | opencue-unknown.png |
❓ | Unknown status |
Icon Gallery
All CueNIMBY icons feature the OpenCue logo for professional appearance:
| Icon | File | Description |
|---|---|---|
opencue-available.png |
Green - Ready for rendering | |
opencue-working.png |
Icon with red dot in center - Currently rendering | |
opencue-disabled.png |
Red - Locked/disabled | |
opencue-error.png |
Red X - Error/unreachable | |
opencue-warning.png |
Yellow - Warning/lagging | |
opencue-repair.png |
Orange - Under repair | |
opencue-starting.png |
Gray - Initializing | |
opencue-unknown.png |
Gray ? - Unknown | |
opencue-default.png |
Default fallback |
NIMBY Configuration
RQD NIMBY Configuration
Configure RQD NIMBY via environment variables or rqd.conf:
# Enable NIMBY on this workstation
export OVERRIDE_NIMBY=true
# Idle time before unlocking (seconds)
export MINIMUM_IDLE=300
# Check interval when locked (seconds)
export CHECK_INTERVAL_LOCKED=5
CueNIMBY Configuration
Configure CueNIMBY via ~/.opencue/cuenimby.json:
{
"cuebot_host": "cuebot.example.com",
"cuebot_port": 8443,
"poll_interval": 5,
"show_notifications": true,
"scheduler_enabled": true,
"schedule": {
"monday": {
"start": "09:00",
"end": "18:00",
"state": "disabled"
}
}
}
For more details on NIMBY states and desktop rendering, see Desktop rendering control guide.
Use Cases
1. Artist Workstations
Scenario: Artists need their machines during the day but want to contribute to rendering overnight.
Solution:
- Run RQD with NIMBY enabled for automatic protection
- Run CueNIMBY with scheduler: disabled 9am-6pm, available otherwise
- Artists see notifications when overnight renders start
- Artists can manually disable if needed
2. Floating Licenses
Scenario: Expensive software licenses should only run on machines that need them.
Solution:
- Configure jobs with
ignore_nimby=false(default) - Artists manually lock workstations when not using licensed software
- Licensed jobs only run on available machines
3. Development Machines
Scenario: Developers need full control but want to contribute when idle.
Solution:
- Run CueNIMBY only (no automatic RQD NIMBY)
- Developers manually toggle availability as needed
- Visual feedback shows when machine is rendering
4. Render Farm Expansion
Scenario: Studio needs extra capacity during crunch time.
Solution:
- Deploy RQD + CueNIMBY to all workstations
- Artists receive notifications when renders start
- Automatic detection prevents interference with active work
- Manual control allows artists to opt out if needed
Best Practices
For System Administrators
- Enable NIMBY on all workstations: Prevents unexpected interference with artist work
- Set appropriate idle timeouts: Balance between responsiveness and availability
- Communicate clearly: Inform artists about workstation rendering policies
- Monitor usage: Track NIMBY events to optimize configuration
- Test thoroughly: Verify NIMBY behavior before deploying to production
For Artists and Users
- Use CueNIMBY for visibility: Know when your machine is rendering
- Configure schedules: Automate availability based on your work hours
- Manual control: Lock your machine before heavy local work
- Report issues: Help improve NIMBY by reporting problems
- Be considerate: Unlock machines when not in active use
Technical Details
Lock/Unlock API
Both RQD and CueNIMBY use the OpenCue API to control host lock state:
import opencue
# Get host
host = opencue.api.findHost("workstation-01")
# Lock host
host.lock()
# Unlock host
host.unlock()
# Check lock state
if host.lockState() == opencue.api.host_pb2.NIMBY_LOCKED:
print("Host is NIMBY locked")
Frame Behavior
When NIMBY locks a host:
- Running frames: Killed with exit signal (unless
ignore_nimby=true) - Queued frames: Not dispatched to this host
- Resources: Released back to the pool
- Status: Updated in Cuebot and visible in CueGUI
Ignore NIMBY Flag
Jobs can be configured to ignore NIMBY:
import outline
# Create job that ignores NIMBY
job = outline.cuerun.createJob(
show="myshow",
shot="shot01",
ignore_nimby=True # Will run even on NIMBY-locked hosts
)
Use cases for ignore_nimby=true:
- Critical production renders
- Emergency fixes
- System maintenance tasks
Troubleshooting
NIMBY Not Working
Symptoms: RQD doesn’t lock when user is active
Solutions:
- Check
OVERRIDE_NIMBYis set totrue - Verify
pynputis installed:pip list | grep pynput - Check RQD logs for NIMBY initialization errors
- Ensure DISPLAY is set correctly (Linux)
False Positives
Symptoms: NIMBY locks when user is not active
Solutions:
- Check for background processes triggering input events
- Adjust
MINIMUM_IDLEto a higher value - Review system for spurious input device events
CueNIMBY Connection Issues
Symptoms: CueNIMBY shows ❌ error icon or “CueBot unreachable” message
Improved Behavior: CueNIMBY now starts even when CueBot is unreachable and automatically reconnects when available.
Solutions:
- Check the tray icon tooltip for specific error message
- Verify CueBot hostname and port in
~/.opencue/cuenimby.json - Check network connectivity and firewall rules
- Ensure OpenCue client libraries are installed
- Run with
--verboseto see detailed errors - CueNIMBY will show clear visual feedback and automatically reconnect
Host Not Found
Symptoms: CueNIMBY shows ❌ “Machine not found on CueBot”
Solutions:
- Verify RQD is running on the machine
- Check RQD logs for connection errors
- Verify hostname matches in CueBot (check CueGUI > Monitor Hosts)
- Use
--hostnameflag to specify exact hostname - Ensure RQD successfully registered with CueBot
Host Lagging
Symptoms: CueNIMBY shows ⚠️ “Host ping above limit” warning
Solutions:
- Check if RQD is still running
- Verify network connection stability
- Review RQD logs for connection issues
- Consider restarting RQD if problem persists
- Check CueBot server load
Host Under Repair
Symptoms: CueNIMBY shows 🔧 “Under Repair” status
Solutions:
- Contact your technical team for repair status
- Host has been administratively marked for maintenance
- No rendering will occur until repair state is cleared
- Check with system administrators for estimated resolution
Related guides
- Desktop rendering control guide - Detailed guide on desktop rendering, allocations, and subscriptions
- CueNIMBY user guide - Complete CueNIMBY usage guide
- Quick start: CueNIMBY - Get started quickly with CueNIMBY