Since 1.6.7 (at 2012.12.03) site moved to

CGRU Changes Log.


If Afanasy network protocol changed, it became incompatible with old one. Protocol version number exists in any Afanasy network system message in it first bytes. When server receives any message with another protocol version, it sends an empty message back to client, but with new protocol version. If client receives a message with new protocol version it exits. So server shuts down all incompatible clients that tries to connect.

If Afanasy database schema changed server can't restore state. All information will be lost. You need to reset old database tables and create new. You can use this command to perform it:
afcmd db_resetall

  1. The first number in version means some major changes in the project architecture (this can never happen at all).
  2. The second number means changes in network protocol or (and) database schema. Clients and server with another second number are incompatible. You should upgrade all clients and server at the same.
  3. The third number in version can have new features and bugs fixes. But is fully compatible with other versions with the same first two numbers. You can upgrade only one client to check changes, the is no need to update all clients and server.

1.6.6 2012.09.26

All Python applications with GUI in CGRU can use and PySide and PyQt. At first PySide will be tried to import and than PyQt. It means that if you have PySide instaled it will be used. PySide has LGPL license, PyQt - only GPL. So now all components in CGRU has LGPL license or similar.

New Linux package afanasy-qtgui appeared. Needed only to remove libqt dependence from afanasy-render and afansy-server packages (not to install huge Qt on render nodes).

Bugs Fixed:

"afcmd uadd" works fine (is was broken in 1.6.5 - it added users that can't run any tasks)

1.6.5 2012.09.04

Movie Maker can fake dailies date and time.

Afanasy Python Parser can consider that task is already done and ask render to stop a task and send to server that it was finished with a success.

Bugs Fixed:

Movie Maker open/save parameters and non ASCII characters bug fixed, all operations uses UTF-8 encoding.
AfStarter and negative frame values (actually the bug was in
Negative frame values and numeric commands with padding (afserver generates commands, so it should be restarted).

1.6.4 2012.06.26

CGRU now has a domain Soon documentation from will be removed. If you have RSS subscribed, you should resubscribe on domain parked.

Bugs Fixed:

Python API af.Block.setHostsMask and af.Block.setHostsMaskExclude functions are back after occasional deletion when switching to JSON.
AfStarter maya_mental submission set verbose level for task progress parsing, changed for it.
AfStarter dialog GUI dialog bug fixed: first_frame <= last_frame check works correctly.
Nuke CGRU menu open/save scene through paths map fixed.

1.6.3 2012.05.07

Nuke render and submission scripts options added to skip paths map and render to temporary image stages. Render hosts (farm) should be updated too to recognize such options, as not only submission script changed.

Bugs Fixed:

Nuke render just one frame fixed.
Depend sub task and depended block frames per task > 1 fixed.

1.6.2 2012.04.23

API is based on JSON now. Python API is the same but no binary module needed, it communicates with server itself by json build-in module. (All Python API is written on Python language, not on Python C API.) You can communicate with Afanasy server within any language/script that can create JSON structures. (No libafanasy needed to send and get data, all possible linking problems are in the past.)

JSON protocol is not finished. Finished only job structure - to remove python binary module dependence to send a job.

Bugs Fixed:

AfWatch shows tasks with no service icon.
AfWatch filtering and sorting nodes when new nodes created and old changed fixed.
Houdini render script loads scene within try-catch to pass warning exception.
Nuke dailies node can handle tcl expressions, it uses getEvaluatedValue() instead of value().
Nuke render script changes "root.project_directory" according to OS paths map (for mixed OS-es farm rendering).

1.6.1 2012.03.28

Tasks can be solved in a not-sequential manner. For example 1-10: 0 9 5 2 7 1 3 6 8 4
This can be needed to catch some error earlier and to calculate average running time more accurate.

You can hide jobs or renders in AfWatch by some parameter. Also you can show only hidden nodes. And a new "hidden" parameter was added to every node (job, render) just to hide (and store hidden state).

Bugs Fixed:

AfWatch can preview tasks of a not-numeric blocks in a task information window (by double click).
This is a main reason of this release.

1.6.0 2012.03.22 New Afanasy network protocol version.

New parameter added to configuration - cmd_shell. Render will launch tasks commands with it. Default values are:
UNIX: "/bin/bash -c"
MS Windows: "cmd.exe /c"

Administrator (super users) can change job owner. It can be performed by AfWatch GUI and afcmd CLI.

You can enable/disable render service via afcmd (CLI).

AfWatch GUI styles available. You can change, copy, modify them, create your own.
You can set sounds to playback on some events (Job added, finished or got an error).
Renders list has an ability to change items size.

No Qt library in Afanasy render client. So Qt is used for GUI only now.

Magic Number to filter connections.

Afanasy server is available for MS Windows OS.

GitHub CGRU project started.

Afanasy branches removed from repository. Use git for branching. As there is no need in branches in project subdirectories structure.

Bugs Fixed:

Server bug fixed. It could hung on job submission. It was a very rare deadlock bug. I never managed to catch it for 4 years.
Keeper hung on new network protocol version fixed.

1.5.5 2012.02.12 (rev2294 af2290)

Cinema 4D support.

"Maya Bins" release removed. Use archive for MS Windows for or Linux to get plugins for Maya.

Nuke dailies gizmo can encode only (skip convert stage).

Movie Maker allow user to specify container to encode movie to (mov, avi, ...), through GUI dialog or command line argument.

Movie Maker can save and load settings, keeps recent jobs options.

Nuke submit and render scripts can handle write node file expressions.

Python Class Block - added following functions: setErrorsAvoidHost, setErrorsForgiveTime, setErrorsRetries, setErrorsTaskSameHost.

Afanasy stand-alone starter has an ability to add some custom arguments to command.

Server has acceptable IP Addresses Mask. Connections form addresses not matching specified masks will be ignored by server.

User can set jobs solving method to parallel.

Afanasy now supports only PostgreSQL database engine. QtSql library replaced with native PostgreSQL libpq in libafsql module. So there is no Qt in afserver and afcmd applications (as later Qt was removed from libafanasy). Do not forget to update you server database connection settings, if you override defaults.

Bugs Fixed:

Afanasy Starter error message in console fixed, sending a job and with Python 2.x (Fedora Linux raises a warning in system tray in this case).
Paths map works in lower case mode on windows and only in client -> server direction (So you can use paths with uppercase letters with UNIX clients and MS Windows).

1.5.4 2011.12.22 (rev2030 af2025)

AltLinux RPM packages support.

"Nimby" schedule improved. Now if time begin > time end it assumes that time end is tomorrow. So now you can set for example for Monday that time begin is 14:00 and time end is 1:00, and it makes render free at Tuesday 1:00.

Afanasy stand-alone starter has an ability customize command, preview images and OS needed for render.

Blender Cycles render engine support.

Windows version switched on MSVC 10 SP1.

Release archives switched on Qt 4.8.0.

Bugs Fixed:

Error messages in standard output fixed opening Movie Maker and Afanasy Starter dialogs.
Afanasy render and server Linux packages post install scripts fixed. On some systems they were unable to create render user, if it does not exist.

1.5.3 2011.12.05 (rev1988 af1980)

Bugs Fixed:

Home configuration folders and files permissions. Now they writable to all.

1.5.2 2011.12.02 (rev1985 af1980)

Movie Maker can decode movie to sequence and add sound to movie from an audio or another movie file with audio.

Keeper tray icon displays Afanasy local render client status.

Bugs Fixed:

Keeper AFANASY client operation local host name bug fixed. Bug was, for example, if you are setting NIMBY on "c1" machine, it will be set to all computers with name starts with "c1": "c10","c11","c19" ... )
Movie Maker fixed to work with a sequence without padding specified ("%d" or single "#" character).
Houdini submission fixed. Afanasy ROP got a check for a null connection. Full path to ROP is used. You can to submit ROPs placed anywhere in a scene, not only from "/out/".

1.5.1 2011.11.14 (rev1939 af1917)

Keeper - CGRU applications managing program.

Afanasy Starter - Standalone dialog to submit jobs to Afanasy.

Adobe After Effects support.

Linux packages structure simplified. Some of them removed. See 'Warning' section at the bottom of that page.

Server farm setup clearservces directive.

Movie Maker input images and output movie pixel aspect and auto input aspect. Custom aspect cacher.

Scan Scan input images and output movie pixel aspect and auto input aspect. Search path include and exclude patterns. Search files older than some date option. Place result relative to the sequence.

Python 3 full support. You can build all Afanasy application with Python 3, construct and submit jobs, write services and parsers for render clients.
Release for MS Windows uses Python 3. It provided with CGRU. You don't need to install and configure Python and PyQt on MS Windows.
On Linux distributions native python version is used and you should to install native PyQt.

Bugs Fixed:

SoftImage submit a scene with a spaces in file path.
Scan Scan does not try to create a movie just from one file with digits in a filename like a sequence.
When block (job) errors avoid host parameter is zero, block (job) does not avoiding any hosts.
Mac OS X Afanasy server with client connection error fixed, render client resources collection improvements.
Nuke submission frame increment parameter not ignored any more.

1.5.0 2011.08.29 (rev1684 af1684) New Afanasy network protocol version.

Houdini submission improvements. You can connect several Afanasy and other ROP nodes together to describe a complex job with dependencies between ROPs.

Block tasks can depend on other sub-task progress.

New job parameter Maximum running tasks per host. The same parameter was added to job block.

You can override render "Max Tasks" parameter directly from Watch in super user mode.

New numeric pattern replacement rules.
You should delete all jobs on server as their tasks commands can be invalid.
Jobs created by your custom submission scripts probably will generate invalid numeric tasks too. But it is very simple to fix them.
You should to fix your custom submission scripts.

Server stores renders IP and MAC addresses in a database. So you can perform some operations with off-line renders after server restart (for example wake-on-lan).

On start, server checks all database tables, and adds (removes) needed columns.

All date/time and frame range parameters are 64bit integers.

All numeric types has BIGINT SQL type.

Numeric tasks block "frame increment" (or "by frame") parameter plays role in tasks generation. It means that blocks with this parameter grater then one will have less tasks number. So you should delete all jobs on server before upgrade to this version.

Bugs Fixed:

Web Visor statistics average farm usage parameter does not ignore custom dates range.

1.4.5 2011.05.26 (rev1609 af1598)

Server tries to reconnect to database when connection failed. Database configuration documentation.

Python 3 supported by Afanasy module. You can construct and send jobs using Python 3.

Blender 2.5 support.

Web visor statistics favorite user and favorite service column. You can specify dates to for statistics information tables.

Autodesk Max, Maya and XSI 2012 support.

Bugs Fixed:

Render "Division by zero" hung fixed. It was very rare bug but you could catch it after machine sleep (was suspended with stored RAM and running afrender process).
Only Chuck Norris can divide by zero.

1.4.4 2011.05.07 (rev1566 af1565)


Render client sends network interfaces information to server (MAC and IP addresses).

Watch can request information message from server about render client.
Watch items tool-tips improved.
Watch renders custom commands can use selected node(s) IP address ("@IP@" string will be replaced with it).
Watch can set job block parameter for all selected jobs.

Web-Visor statistics displays total counters row, first record date, services tasks quantity.

When render can't import task service Python class, it imports services base class called "service".

Movie Maker temporary images format and quality settings, option to auto correct color space (Linear and Cineon to sRGB).

Nuke client-server-client paths map interface in CGRU menu.

Bugs Fixed:

Render busy time calculation corrected (it affects GUI counter only).
Watch job tasks list window title - job total percentage fixed.
Watch job tasks list - block item tool-tip corrected.
Nuke dailies node - job (block) custom capacity not ignored.
Nuke afanasy node - "Wait whole frame range rendered" behavior corrected.
Client does not try to lookup Afanasy server if direct IP literals specified.
MS Windows 7 clients does not try to create Afanasy home folder if it is already exists.
Server reload farm setup on-the-fly fixed when new host has less services.
Server hung when user tries to restart or skip all job blocks (but not restart entire job menu item) fixed.
Listen entire job when some tasks are already running corrected. They begin to sent output too.
Fixed ffmpeg presets end-of-line for UNIX. On Linux they cause an error with Windows end-of-line.

1.4.3 2011.04.11 (rev1502 af1502)

Bugs Fixed:

Some server memory leaks fixed.
Watch listen just one task bug fixed.

1.4.2 2011.04.03 (rev1491 af1490)

Added afcmd commands to control jobs: start, stop, pause, restart.

Bugs Fixed:

Lots of errors in Afanasy server log if it was launched without database connection fixed.
Watch jobs list stores sorting and filtering settings.
Nuke parser bug fixed (error could appear in Nuke 6.2).

1.4.1 2011.03.30 (rev1479 af1476)

Farm Services Limits to describe a number of software licenses.

Movie Maker can draw a logo on an images sequence.

Watch renders list can sort and filter renders addresses.

System job commands queue can be cleared by restarting task.


Default Python version is 2.7.1. Default Qt version is 4.7.2.
XML parser moved from Qt to RapidXML. No library needed, they are realized by headers only.
Regular expressions moved from Qt to POSIX, they are almost the same. No library needed. They are in C standard, already realized in GCC and MSVC>=2008SP1.
No Qt needed for libafanasy and so for libafapi and libpyaf too. No errors can happen importing Python module in other software using Qt.
Windows version moved to static Qt libraries. No errors can happen with various Qt "dll"s in PATH.
If parsing is no needed, parser should have an empty string name. Render do not tries to import parser module with an empty name, no error happen.

Bugs Fixed:

Nuke render script: A try to delete moved temporary image removed.
Listen job and task output connection error fixed.
Numeric command frame(s) replacement bug fixed. Now it replaces any number of %04d patterns with start and end frame in a cycle. (The bug appears for example on a composite commands: "cmd1 && cmd2" or "cmd1; cmd2". And when one task has several files for preview.)
Maya Auto Save Manager history backup filename from date and time construct on MS Windows bug fixed.

1.4.0 2011.02.20 (rev1348 af1343) New Afanasy network protocol version. New Afanasy database schema.

Errors forgive time for job tasks block and for user. It is a time form last host error to exclude it from error hosts list.

System job. Now job (and block) post commands are executed on a render farm by a special system job.
*Your farm hosts must have "system" service to execute job post commands (remove rendered scenes).

afcmd db_sysjobdel - New afcmd command argument. It deletes system job from database. Will be needed if system job will have too much changes with new Afanasy version.

Nuke dailies gizmo can be connected to "Read" node. Render views list can be customized.

Job Life Time parameter added, for automatic jobs deletion after some time.

WindowsMustDie windows names list can be defined in several files, matched windowsmustdie*.txt mask.

User can sort jobs in Watch.

Server does not store deleted jobs logs and tasks outputs.

Release bin_pyaf removed. Modules for various Python versions are in every release now.

Release svn# added. It is an export of a repository.

Bugs Fixed:

Nuke afanasy gizmo: If it creates output folder, it creates recursive all needed folders.
Watch job tasks list: Block item error hosts counters corrected.
Server stores job order in user list in database, so on server restart user jobs list order restored.
When parser on render finds an error, and than rapidly finds a warning, error status may be lost.

1.3.1 2010.12.14 (rev1257 af1255)

Movie Maker output file naming customizable rules. This rules works for Nuke dailies node too.

Server Farm Setup changed. Now host get setup form every matched pattern. And in each pattern you can concretize host settings.

Render reboot and shutdown commands can be configured.

Bugs Fixed:

Watch job tasks window: Task item: Task host name string may overlap task name strings if this strings are long enough.

1.3.0 2010.12.06 (rev1247 af1244) New Afanasy network protocol version. New Afanasy database schema.

AfWatch shows services icons, it is common programs icons for users to recognize jobs type.

Every Afanasy client has compiled revision number, startup version string and sends them to server. Most dialogs in CGRU show version, Afanasy GUI also shows clients build revision.

Nuke dailies node to generate movies locally or on Afanasy farm.

"movgen" service added. It will be used for movies generation: annotate frames, encode, make dailies.

Bugs Fixed:

"ScanScan" codecs presets search folder.
SoftImage "VariRender" changes output folder name for every Framebuffer if folder is specified.
Houdini mantra filter (af_separate_render ROP) does not filter null images now (shadows for example).

1.2.4 2010.11.01

3D Studio MAX submit to Afanasy scripts. MAX Afanasy service and parser.

Watch can ask and launch a custom command with render items and has more sort&filter parameters.

Movie Maker stereo mode, DNxHD codec ffmpeg preset and Utf-8 full support. Linear float EXR and logarithm DPX to sRGB conversion bug fixed. H264 ffmpeg preset updated: good size&quality and frame navigation on MS Windows QuickTime player.

Nuke stereo render views in different folders bug fixed.

1.2.3 2010.08.18

Houdini parsers total percentage calculation bug fixed.

1.2.2 2010.08.17

Movie Maker works with folders with spaces.

MS Windows:
Afanasy Render prefix commands with "cmd.exe /c ". Afrender kills all child tasks in any case. (There was still some cases when it did not do it. Warning! QtCore4.dll patched, do not use it.) Afrender measures network and disk traffic. Afrender MS Windows version has the same functionality as Linux version.

Package "afanasy-examples" removed. All examples are in "cgru" package.

Full compatibility since 1.2.0.

1.2.1 2010.08.06

Afanasy server database communication bug fixed. No clients changes. Full compatibility with 1.2.0.

1.2.0 2010.08.02 New Afanasy network protocol version. New Afanasy database schema.

Afanasy Python Resources Meter. You can measure any resource by writing you Python resource meter class.

Afanasy Python Parsers has a new functionality. A parser can produce warning to notify user, error to stop task with error, bad result to finish task like with bad exit status (with error in any way).

Afanasy render client "Windows Must Die" function. It finds and kills windows with specified names. When process crashes, MS Windows can raise a window with apologizes. This can hang process until someone closes the window.
(afRender periodically sends WM_CLOSE signal to windows listed in special file.)

Houdini Separate Render - ROP to separate Mantra ROP render process on 'ifd' files generation and 'mantra' command render. It can also split one frame into tiles and render them simultaneous, clean 'ifd' files, clean tiles and render an image in local temporary folder, and after successful render copy it to network location (it can save network traffic, as host do not often write small portions of an image during calculations).

Block Frames Per Task parameter can be negative. Needed for sub-frame dependency.

Afanasy has an ability to map paths. You can setup farm with various platforms clients. Submit jobs on Windows or Linux (MacOSX) to render and on Windows and on Linux (MacOSX) clients. Every client can have individual a paths map file to translate paths to server and from server.

Movie Maker works on MS Windows. Linux releases has 'ffmpeg' binary compiled with 'x264' library to encode 'H.264' codec. Windows users need to install ImageMagick, which contains 'ffmpeg' with 'x264'.

Softimage XSI submit to Afanasy scripts. XSI Afanasy service and parser.

Lots of bug-fixes for MS Windows platform. Windows version can be called 'beta'.

1.1.0 2010.05.09 New Afanasy network protocol version.

Afanasy supports IPv6. Server needs to support new protocol, as it stores client addresses, and do not ask name server at every connect (most managers do, alfred too).

Nuke render script to render images locally in temporary folder and copy completely rendered image (it can reduce network traffic).

Nuke render network: 'afanasy' nodes can be connected to describe 'Write' nodes dependency.

Movie Maker - Dialog and command line utility to make movie file from image sequence on Linux.

RPM build scripts (tested on openSUSE, Fedora, CentOS).

Windows Afanasy GUI applications does not open terminal.

Maya 2010 and 2011 support.

'fbx2clip' utility removed.

1.0.0 2009.12.21

New project structure. Afanasy source code repository contains 'tags', 'branches' and 'trunk'.

CGRU has 'deb' packages build scripts (for Debian and Ubuntu Linux).


Afanasy project building uses CMake now. CMakeLists are in repository. CMake is a cross-platform build system.

CGRU environment initialization is much simplified. You do not need to edit or create scripts. To setup CGRU you need to go in it's root folder and source setup script (like in Houdini now). Unix and Windows examples corrected to work the same way. ( And also total quantity of variables initializing by CGRU setup and needed for correct work is reduced.)


Python class Job has a 'blocks' list variable. You can manipulate it in your own way it to fill job with blocks.

Python class Block can be constructed without any job and has a 'tasks' list variable. You can manipulate it in your own way it to fill block with tasks.

Python class Task can be constructed without any block or job.

2009.09.16 New network protocol version. New database schema.

Watch renders colors customization.

Multi Host Tasks - tasks can run on several hosts.

Python Class Block - setMultiHost method to describe multihosts tasks.

2009.08.24 New network protocol version.

Afanasy Watch GUI can manipulate job blocks parameters without to open job tasks window.

afjob command, which used to construct job from command line arguments, now supports tasks capacity and capacity coefficients.

2009.08.20 New network protocol version. New database schema.

Block Capacity - job block capacity can be variable.

Python Class Block - setVariableCapacity method to describe variable capacity.

Job blocks errors solving parameters has '-1' value by default, it means to take this parameters from job user settings. Watch does not show this default values.

2009.08.12 New network protocol version. New database schema.

Block Tasks Names - job block have a rule for generated tasks names.

Block View Command - not numeric block can generated tasks with preview.

Python Class Block - addTask method to add tasks.

Python Class Task - Task New interface for not numeric blocks.

Watch shows block generated task by double click on task in job tasks view.

Since 1.6.7 (at 2012.12.03) site moved to Project


Libre Graphics World