Each DAG node runs in complete isolation from everything, even other nodes of the same DAG. This way we can achieve high levels of security and support node implementations in more than one languages. We consider Node.js and Javascript as the default implementation language of a node. The SDK natively supports Node.js and JavaScript implementations during development. For nodes written in all the other supported languages, including nodes which run on different versions of Node.js the SDK will need to run in a containerised mode with the help of Docker.

If you take a look at the example below, the field javascript defines the language this node uses. The sandbox field gives you the optional ability to pin your implementation to a specific version of the language, if you need to.

"implementation": {
  "javascript": "server/node1.js",
  "sandbox": ""

The format for the qualified name is:

In the table that follows, you can see the complete list of languages that we support, the default versions, a link to all the versions we support for each of them and the dependency management tool we will use to install your dependencies during loading.

LanguageDefault versionVersion tagsDependency
javascriptv6.2.2linknpm, package.json file
pythonv2.7.10linkpip, requirements.txt file
javav1.8.0linkmaven, pom.xml file
scalav2.11.8linksbt, build.sbt file
clojurev1.8.0linkleiningen, project.clj file



When you follow the link to our container repository you will notice two flavours of tags. Tags with just the major version defined and tags that include the minor & patch number too. The former allow you to follow the updates for that major version automatically, whereas the latter locks your implementation to a specific version.