Messages are sent over nanomsg. Message format is JSON. All messages have one string key 'op', a string key 'role' and a unique name field, currently 'host'. 'op' can be: - 'discover' - 'register' 'role' can only be: - 'master' - 'coordinator' - 'worker' 'host' is the FQDN or hostname of a coordinator (depends on the network setup). Operations: Discovery: ---------- Master sends: { "op": "discover", "role": "master" } Coordinators answer with: All coordinators send: { "op": "register", "role": "coordinator", "host": "server1", "cpus": 2, "os": "cpe:\/o:arch:arch:rolling", "arch": "x86_64" } The coordinator sends its own configuration to the master. On receiving a 'register' operation the master must handle accordingly, usually adding the coordinator as known and alive and provide new platforms and architectures to run workers on. Also currently scheduled jobs must be examined.