diff --git a/xos/tools/xossh b/xos/tools/xossh
new file mode 100755
index 0000000..e71b5f7
--- /dev/null
+++ b/xos/tools/xossh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+# This is a stub for launching xossh in the xosproject/xos-client container
+
+docker run -it -v /opt/cord_profile/im_cert_chain.pem:/usr/local/share/ca-certificates/local_certs.crt xosproject/xos-client:candidate -u xosadmin@opencord.org -p `cat /opt/cord/build/platform-install/credentials/xosadmin@opencord.org`
\ No newline at end of file
diff --git a/xos/xos_client/xosapi/orm.py b/xos/xos_client/xosapi/orm.py
index 3daed94..12e658f 100644
--- a/xos/xos_client/xosapi/orm.py
+++ b/xos/xos_client/xosapi/orm.py
@@ -392,9 +392,6 @@
         model = getattr(self, model_name)
         return model.objects.get(id=id)
 
-    def listObjects(self):
-        return self.all_model_names
-
     def add_default_metadata(self, metadata):
         default_metadata = [ ("caller_kind", self.caller_kind) ]
 
@@ -438,6 +435,9 @@
     def make_Query(self):
         return _sym_db._classes["xos.Query"]()
 
+    def listObjects(self):
+        return self.all_model_names
+
 def register_convenience_wrapper(class_name, wrapper):
     global convenience_wrappers
 
diff --git a/xos/xos_client/xossh b/xos/xos_client/xossh
old mode 100755
new mode 100644
index 7e3fe58..8a480d3
--- a/xos/xos_client/xossh
+++ b/xos/xos_client/xossh
@@ -11,7 +11,7 @@
 import rlcompleter
 
 from twisted.internet import reactor
-from xosapi.xos_grpc_client import InsecureClient, SecureClient, setup_logging
+from xosapi.xos_grpc_client import InsecureClient, SecureClient, setup_logging, Empty
 
 current_client = None
 
@@ -103,6 +103,20 @@
         client.set_reconnect_callback(functools.partial(start_xossh, client))
         client.start()
 
+def setDirtyModels(*args, **kwargs):
+    return current_client.utility.SetDirtyModels(current_client.utility_pb2.ModelFilter(*args, **kwargs))
+
+def listDirtyModels(*args, **kwargs):
+    return current_client.utility.ListDirtyModels(current_client.utility_pb2.ModelFilter(*args, **kwargs))
+
+def listModelDefs():
+    return current_client.modeldefs.ListModelDefs(Empty())
+
+def listUtility():
+    print 'setDirtyModels(class_name=None)'
+    print 'listDirtyModels(class_name=None)'
+    print 'listModelDefs()'
+
 def examples():
     print 'coreapi.Slice.objects.all() # list all slices'
     print 's = Slice.objects.new() # create a new slice'
@@ -131,6 +145,7 @@
         print "XOS Core server at %s" % client.endpoint
 
         print 'Type "listObjects()" for a list of all objects'
+        print 'Type "listUtility()" for a list of utility functions'
         print 'Type "login("username", "password")" to switch to a secure shell'
         print 'Type "examples()" for some examples'
 
