a simple asset management and pipeline system for film and vfx
Python Ruby JavaScript Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.




Ue is a simple asset management and pipeline system for film and vfx. It's intended for small projects, though it would likely scale to a multi-user environment.

It currently has support for Maya and Nuke, with some more limited support for Adobe Photoshop, Adobe After Effects, RV and TVPaint. There is (also currently limited) support for DrQueue, an open source render farm solution.

Ue is based on a client/server archetecture and is backed by a MongoDB database. Comunication between client/server is handled though a CRUD JSON interface.

  • The server (src/ueServer) is implemented in Ruby on Rails with Mongoid as the MongoDB interface library.

  • The core asset system (src/ueClient, src/ueCore, src/ueRender, src/ueSpec) is implemented in Python.

  • The command line tools and application wrappers (src/tools, src/wrapper) are implemented in Python and Bash.

  • The core application GUI tools (src/ueCommon) are implemented in Python and PyQt.

  • The applications specific tools (src/ueAdobe, src/ueMaya, src/ueNuke, src/ueTVP) and implemented in appropriate application specific languages - Maya in Python and MEL, Nuke in Python, the Adobe tools in JavaScript and the TVPaint tools in George.

Ue was born out a need for a structured way to develop my own projects, after getting sick of loosing files, having to navigate though endless directory trees and ending up with tons of broken paths and references to files.

Ue should be treated as Alpha software right now!


Ue describes elements. Elements abstract away filesystem storage from the user. Elements contain one or more versions. Each version contains one or more files, e.g. one comp script or an image sequence. Versions can optionally contain passes to hold multi-pass renders.

An element is described like so:


  • Projects i.e. a film.

  • Groups i.e. a sequence.

  • Assets are the working base of the pipeline, where applications can be launched from and elements saved to i.e. a shot. In ue, assets are also Maya projects and contain a Workspace.mel template.

  • Name is the specific name of the element

  • Types describe what the element is in the context of the asset

  • Classes describe what the element i

An element string is a like an absolute file path - it needs to be unique. However, an individual project/group/asset/name/type/class is like a file or directory - it only needs to be unique within its parent.

Directory Structure

  • lib Non-executable resources.

  • src Contains the ue source tree.

  • template Contains files that aren't sourced themselves, but are copied out when a project/group/asset etc. is created.

  • bin Created on running ue_setup. It will contain symlinks to executable scripts. This is added to your path my ue_env_setup.

  • ue_env_setup This should be sourced on login. It adds initial bin/python paths, some aliases and some environment variables to your session.

  • ue_setup This should be ran on setup after sourcing ue_env_setup. It creates a bin directory and populates it with symlinks.


  1. Prerequisites

    • Linux

    • Python

    • Ruby

    • Rails (gem install rails)

    • Qt and PyQt

    • MongoDB

    • Nginx and Passenger (or similar solution)

  2. Edit ue_env_setup

    Change UE_PATH to the absolute path of the ue source root.

  3. Source ue_env_setup

    In your .bashrc, put a line like this:

    source /work/bin/ue/ue_env_setup

  4. Run ue_setup


    This will set up a bin directory in the ue source root with a bunch of symlinks.

  5. Edit the paths in src/wrapper to match your applications

  6. Set up ueServer

    cd $UE_PATH/src/ueServer bundle install rails server

    Check the server is running (default is on port 3000). This is beyond the setup instructions here, but for production, setting up a real webserver would be recommended. Nginx and Passenger is a common choice, but other options would include Thin or a proxy setup with Apache and Mongrel.

    Consult the Rails documentation for more information. There's also a lot of other good information out there on running Rails apps.

  7. Application specific setup

    Ue makes extensive use of PyQt in its interfaces. This is largely to standardise interface design accross applications.

    Neither Maya nor Nuke ship with PyQt due to licening restrictions, however you can compile application specific PyQt stacks for each application. This can be tedious and not for the feint of heart, but there's some good instructions out there and some pre-compiled binaries.

    Maya: www.maya-python.com/2011/09/building-and-installing-pyqt and nathanhorne.com Nuke: tdasylum.com/entry.php?5-Nuke-and-PyQt4-on-Fedora-13 and www.kurianos.com/wordpress/?p=546


Short term

  • Script checker for Maya and Nuke

  • Thumbnail generator for Maya

  • Various fixes and improvements to the Maya Import/Export/Reference tools

Long term

  • Houdini support

  • 3Delight/Renderman compliant renderer support

  • Web based asset browser

  • Cloud rendering

  • Export tools for Photoshop and After Effects

  • Reference tool for After Effects