diff --git a/cli/src/main/java/org/onosproject/cli/NodesListCommand.java b/cli/src/main/java/org/onosproject/cli/NodesListCommand.java
index 1ecb3f2..9c43f6f 100644
--- a/cli/src/main/java/org/onosproject/cli/NodesListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/NodesListCommand.java
@@ -24,6 +24,7 @@
 import org.onlab.util.Tools;
 import org.onosproject.cluster.ClusterAdminService;
 import org.onosproject.cluster.ControllerNode;
+import org.onosproject.core.Version;
 import org.onosproject.utils.Comparators;
 
 import java.util.Collections;
@@ -39,7 +40,7 @@
         description = "Lists all controller cluster nodes")
 public class NodesListCommand extends AbstractShellCommand {
 
-    private static final String FMT = "id=%s, address=%s:%s, state=%s, updated=%s %s";
+    private static final String FMT = "id=%s, address=%s:%s, state=%s, version=%s, updated=%s %s";
 
     @Override
     protected void execute() {
@@ -56,9 +57,12 @@
                 if (lastUpdated != null) {
                     timeAgo = Tools.timeAgo(lastUpdated.getMillis());
                 }
+                Version version = service.getVersion(node.id());
                 print(FMT, node.id(), node.ip(), node.tcpPort(),
-                      service.getState(node.id()), timeAgo,
-                      node.equals(self) ? "*" : "");
+                        service.getState(node.id()),
+                        version == null ? "unknown" : version,
+                        timeAgo,
+                        node.equals(self) ? "*" : "");
             }
         }
     }
@@ -70,6 +74,7 @@
         ControllerNode self = service.getLocalNode();
         for (ControllerNode node : nodes) {
             ControllerNode.State nodeState = service.getState(node.id());
+            Version nodeVersion = service.getVersion(node.id());
             ObjectNode newNode = mapper.createObjectNode()
                     .put("id", node.id().toString())
                     .put("ip", node.ip().toString())
@@ -78,6 +83,9 @@
             if (nodeState != null) {
                 newNode.put("state", nodeState.toString());
             }
+            if (nodeVersion != null) {
+                newNode.put("version", nodeVersion.toString());
+            }
             result.add(newNode);
         }
         return result;
