diff --git a/_modules/architect.py b/_modules/architect.py
new file mode 100644
index 0000000..75878a8
--- /dev/null
+++ b/_modules/architect.py
@@ -0,0 +1,74 @@
+# -*- coding: utf-8 -*-
+'''
+Salt modules to work with the Architect service.
+'''
+
+# Import python libs
+from __future__ import absolute_import
+import yaml
+from architect_client.libarchitect import ArchitectClient
+import logging
+
+__virtualname__ = 'architect'
+
+logger = logging.getLogger(__name__)
+
+
+def __virtual__():
+    return __virtualname__
+
+
+def _client():
+    return ArchitectClient()
+
+
+def get_inventory():
+    '''
+    Get the Architect metadata inventory for given Salt master.
+
+    CLI Examples:
+
+    .. code-block:: bash
+
+        salt-call architect.get_inventory
+    '''
+    data = yaml.load(_client().get_data())
+
+    return data
+
+
+def get_node(name):
+    '''
+    Get the Architect node metadata for given Salt master.
+
+    CLI Examples:
+
+    .. code-block:: bash
+
+        salt-call architect.get_node node.domain
+    '''
+
+    data = yaml.load(_client().get_data(name))
+
+    return {
+        name: data
+    }
+
+
+def collect_minion_info():
+    '''
+    Get Salt minion metadata and forward it to the Architect master.
+
+    CLI Examples:
+
+    .. code-block:: bash
+
+        salt-call architect.collect_minion_info
+    '''
+
+    data = {
+        'pillar': __salt__['pillar.data'](),
+        'grain': __salt__['grains.items'](),
+    }
+    output = _client().push_salt_minion({data['grain']['id']: data})
+    return output
