diff --git a/lib/xos-util/xosutil/autodiscover_version.py b/lib/xos-util/xosutil/autodiscover_version.py
index d41f4b3..2e606e1 100644
--- a/lib/xos-util/xosutil/autodiscover_version.py
+++ b/lib/xos-util/xosutil/autodiscover_version.py
@@ -24,7 +24,7 @@
 import inspect
 import os
 
-def autodiscover_version(caller_filename=None, save_to=None):
+def autodiscover_version(caller_filename=None, save_to=None, max_parent_depth=None):
     """ walk back along the path to the current module, searching for a VERSION file """
     if not caller_filename:
         caller_filename = os.path.realpath(__file__)
@@ -41,6 +41,12 @@
                 f.close()
             return version
 
+        # limit_parent_depth can be used to limit how far back we search the tree for a VERSION file.
+        if (max_parent_depth is not None):
+            if (max_parent_depth <= 0):
+                return None
+            max_parent_depth -= 1
+
         (cur_path, remainder) = os.path.split(cur_path)
         if not remainder:
             return None
diff --git a/xos/coreapi/xos_dynamicload_api.py b/xos/coreapi/xos_dynamicload_api.py
index cadfaa6..2d775dc 100644
--- a/xos/coreapi/xos_dynamicload_api.py
+++ b/xos/coreapi/xos_dynamicload_api.py
@@ -26,6 +26,7 @@
 
 from importlib import import_module
 
+from xosutil.autodiscover_version import autodiscover_version_of_main
 from dynamicbuild import DynamicBuilder
 
 class DynamicLoadService(dynamicload_pb2_grpc.dynamicloadServicer):
@@ -101,6 +102,15 @@
                         item.state = "present"
                         # TODO: Might be useful to return a list of models as well
 
+            # the core is always onboarded, so doesn't have an explicit manifest
+            item = response.services.add()
+            item.name = "core"
+            item.version = autodiscover_version_of_main()
+            if "core" in django_apps_by_name:
+                item.state = "present"
+            else:
+                item.state = "load"
+
             return response
         except Exception, e:
             import traceback; traceback.print_exc()
diff --git a/xos/synchronizers/new_base/modelaccessor.py b/xos/synchronizers/new_base/modelaccessor.py
index 608b4e0..f917612 100644
--- a/xos/synchronizers/new_base/modelaccessor.py
+++ b/xos/synchronizers/new_base/modelaccessor.py
@@ -164,7 +164,7 @@
     # is waiting on our models.
 
     if Config.get("models_dir"):
-        version = autodiscover_version_of_main() or "unknown"
+        version = autodiscover_version_of_main(max_parent_depth=0) or "unknown"
         log.info("Service version is %s" % version)
         try:
             ModelLoadClient(client).upload_models(Config.get("name"), Config.get("models_dir"), version=version)
diff --git a/xos/xos_client/xossh b/xos/xos_client/xossh
index 374a267..9eda018 100644
--- a/xos/xos_client/xossh
+++ b/xos/xos_client/xossh
@@ -11,6 +11,7 @@
 import rlcompleter
 
 from twisted.internet import reactor
+from xosapi.version import __version__
 from xosapi.xos_grpc_client import InsecureClient, SecureClient, setup_logging, Empty
 
 current_client = None
@@ -83,6 +84,13 @@
                         action='count',
                         help=_help)
 
+    _help = 'enable verbose logging'
+    parser.add_argument('-V', '--version',
+                        dest='version',
+                        action='store_true',
+                        default=False,
+                        help=_help)
+
     args = parser.parse_args()
 
     return args
@@ -256,6 +264,10 @@
 
     setup_logging(args)
 
+    if args.version:
+        print __version__
+        sys.exit(0)
+
     login(username=args.username, password=args.password)
     reactor.run()
 
