Index: libtaskotron/runner.py
===================================================================
--- libtaskotron/runner.py
+++ libtaskotron/runner.py
@@ -125,45 +125,52 @@
                                          'was not defined' % arg)
 
     def _validate_env(self):
+        # TODO: implement this
         raise NotImplementedError("Environment validation is not"
                                   " yet implemented")
 
 
 def get_argparser():
     parser = argparse.ArgumentParser()
     parser.add_argument("task", nargs=1, help="task to run")
     parser.add_argument("-a", "--arch",
-                        choices=["i386", "x86_64", "armhfp", "noarch", "all"],
-                        action='append',
-                        help="""
-                        Architecture to be used; support arches are x86, x86_64, and armhfp.
-                        If omitted, defaults to noarch. If every architechtures are wanted
-                        use all.
-                        """)
-    parser.add_argument("-i", "--item", help="item to be used as input")
+        choices=["i386", "x86_64", "armhfp", "noarch", "all"],
+        action='append',
+        help="architecture specifying the item to be checked. If omitted, "
+             "defaults to noarch. 'all' specifies all known architectures.")
+    parser.add_argument("-i", "--item", help="item to be checked")
     parser.add_argument("-t", "--type",
                         choices=["bodhi_id", "koji_build", "koji_tag"],
-                        help="Type of input object")
-    parser.add_argument("-j", "--jobid", help="optional jobid used to render log urls",
-                        default="-1")
+                        help="type of --item argument")
+    parser.add_argument("-j", "--jobid", default="-1",
+                        help="optional job identifier used to render log urls")
     return parser
 
 
 def process_args(args):
-    """ Transforms (item, item_type) pairs from input args into specific data
-    types that can be used by tasks.
+    """ Processes raw input args and converts them into specific data types that
+    can be used by tasks. This includes e.g. creating new args based on
+    (item, item_type) pairs, or adjusting selected architecture.
 
-    :param args: dictionary of raw arguments
-    :type args: dict
+    :param dict args: dictionary of raw arguments
     :returns: dict of args with appended specific data
     """
 
+    # process item + type
     if args['type'] == 'koji_build':
         args['envr'] = args['item']
     if args['type'] == 'bodhi_id':
         args['bodhi_id'] = args['item']
     if args['type'] == 'koji_tag':
         args['tag'] = args['item']
+
+    # process arch
+    if args['arch'] is None:
+        args['arch'] = ['noarch']
+    # since lists don't play nice with yaml, convert arch to csv
+    # this is a workaround for https://phab.qadevel.cloud.fedoraproject.org/T148
+    args['arch'] = ','.join(args['arch'])
+
     return args
 
 
@@ -176,10 +183,6 @@
     arg_data = process_args(vars(args))
     arg_data['taskfile'] = args.task[0]
 
-    # since lists don't play nice with yaml, convert arch to csv
-    # this is a workaround for https://phab.qadevel.cloud.fedoraproject.org/T148
-    arg_data['arch'] = ','.join(arg_data['arch'])
-
     task_data = taskyaml.parse_yaml_from_file(arg_data['taskfile'])
 
     if not task_data:
Index: testing/test_runner.py
===================================================================
--- testing/test_runner.py
+++ testing/test_runner.py
@@ -313,13 +313,14 @@
 class TestRunnerProcessArgs():
 
     def test_process_args_koji_build(self):
-        ref_input = { 'arch': 'x86_64',
+        ref_input = { 'arch': ['x86_64'],
                       'item': 'foo-1.2-3.fc99',
                       'type': 'koji_build',
                       'task': 'sometask.yml'}
 
         ref_args = copy.deepcopy(ref_input)
         ref_args['envr'] = 'foo-1.2-3.fc99'
+        ref_args['arch'] = 'x86_64'
 
         test_args = runner.process_args(ref_input)
 
@@ -333,6 +334,7 @@
 
         ref_args = copy.deepcopy(ref_input)
         ref_args['bodhi_id'] = 'foo-1.2-3.fc99'
+        ref_args['arch'] = 'x86_64'
 
         test_args = runner.process_args(ref_input)
 
@@ -346,20 +348,32 @@
 
         ref_args = copy.deepcopy(ref_input)
         ref_args['tag'] = 'dist-fc99-updates'
+        ref_args['arch'] = 'x86_64'
 
         test_args = runner.process_args(ref_input)
 
         assert test_args == ref_args
 
     def test_process_args_koji_tag_multiple_arches(self):
-        ref_input = { 'arch': ['x86_64,i386,noarch'],
+        ref_input = { 'arch': ['x86_64', 'i386', 'noarch'],
                       'item': 'dist-fc99-updates',
                       'type': 'koji_tag',
                       'task': 'sometask.yml'}
 
         ref_args = copy.deepcopy(ref_input)
         ref_args['tag'] = 'dist-fc99-updates'
+        ref_args['arch'] = 'x86_64,i386,noarch'
+
+        test_args = runner.process_args(ref_input)
+
+        assert test_args == ref_args
+
+    def test_process_args_no_arch(self):
+        ref_input = { 'type': 'invalid',
+                      'arch': None}
+        ref_args = copy.deepcopy(ref_input)
+        ref_args['arch'] = 'noarch'
 
         test_args = runner.process_args(ref_input)
+        assert test_args == ref_args
 
-        assert test_args == ref_args
\ No newline at end of file
