In Houdini, $JOB is the environment variable that points at your project root. When paths are anchored to $JOB instead of a local drive, the same .hip opens and resolves on any machine that sets it. Get the folder structure right and everything downstream - caches, renders, textures, HDAs - stays portable.
What $JOB actually is
Houdini reads $JOB (and related variables like $HIP, the folder the current scene lives in) to resolve relative paths. A File Cache SOP that writes to $JOB/geo/, a texture referenced from $JOB/tex/, or a render sent to $JOB/render/ will work for any artist who has $JOB set to the same project - and break for anyone who does not. Anchoring paths to $JOB instead of C:/Users/you/Desktop is the single biggest thing that makes a Houdini project shareable.
A standard $JOB folder tree
PROJECT/ <- $JOB points here
hip/ scene files (.hip, .hipnc)
geo/ cached geometry (.bgeo.sc, .vdb)
sim/ simulation caches (flip, pyro, rbd)
render/ rendered frames and AOVs
tex/ textures and source maps
comp/ comp output and COP work
abc/ Alembic caches and exchange
otls/ Houdini Digital Assets (.hda / .otl)
scripts/ Python, shelf tools, pre/post scripts
desk/ desktop layouts and workspace
audio/ audio for animation and sim timing
The exact names vary between studios, but the principle does not: source, working files, caches and output each get a home, and nothing lives on a local desktop. SideFX's default project layout uses this same shape, which is why sticking close to it keeps you compatible with defaults and with other artists' expectations.
What each folder is for
- hip. The scene files themselves, kept separate so they are never lost among caches.
- geo / sim. Cached geometry and simulation data - the heavy, regenerable files that should never be confused with source.
- tex. Textures and source maps, referenced by
$JOB/tex/so materials resolve everywhere. - render / comp. Output frames and comp work, versioned and kept out of the working folders.
- otls. Your Houdini Digital Assets, so HDAs travel with the project instead of living in one artist's home directory.
Validate a project against the structure
A convention only helps if projects actually follow it. Hive scans a Houdini project folder in your browser and flags where it drifts - caches written outside geo or sim, textures on a local drive, HDAs missing from otls, scenes scattered outside hip. Nothing is uploaded; the scan runs locally. If you just want to spin up a clean tree, the free Houdini VEX Lab includes a $JOB project-structure generator, and the folder structure template here walks through it.
Frequently asked questions
What is $JOB in Houdini?
$JOB is an environment variable that points at your project root. Anchoring paths to $JOB instead of a local drive means the same .hip resolves caches, textures and renders on any machine set up for the project.
Is there one correct Houdini folder structure?
No single standard fits every studio, but the geo / sim / render / tex / comp / hip / otls pattern above follows SideFX defaults and is a clean starting point you can adapt.
Can Hive check my $JOB structure?
Yes. Hive scans a project folder in your browser and flags files that landed outside the expected folders, without uploading anything.