diff --git a/orchestra/cmds/clean.py b/orchestra/cmds/clean.py
index 79c05bed1cbcd58e68fe25b1845031f4d35f943c..985862b197191c7f6491fb109a05e4b0728be25a 100644
--- a/orchestra/cmds/clean.py
+++ b/orchestra/cmds/clean.py
@@ -1,6 +1,9 @@
-from ..model.configuration import Configuration
 import shutil
 
+from loguru import logger
+
+from ..model.configuration import Configuration
+
 
 def install_subcommand(sub_argparser):
     cmd_parser = sub_argparser.add_parser("clean", handler=handle_clean, help="Remove build/source directories")
@@ -10,6 +13,12 @@ def install_subcommand(sub_argparser):
 
 def handle_clean(args, config: Configuration):
     build = config.get_build(args.component)
+
+    if not build:
+        suggested_component_name = config.get_suggested_component_name(args.component)
+        logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+        exit(1)
+
     if input(f"Do you want to clean {build.qualified_name}? [y/N] ").lower() != "y":
         return
 
diff --git a/orchestra/cmds/clone.py b/orchestra/cmds/clone.py
index a2de711172e093709d164d2087500882c6d7dd6f..e183d954fe40096d80c87b3b4a126ac76a426c01 100644
--- a/orchestra/cmds/clone.py
+++ b/orchestra/cmds/clone.py
@@ -1,5 +1,7 @@
-from ..model.configuration import Configuration
+from loguru import logger
+
 from ..executor import Executor
+from ..model.configuration import Configuration
 
 
 def install_subcommand(sub_argparser):
@@ -10,6 +12,12 @@ def install_subcommand(sub_argparser):
 
 def handle_clone(args, config: Configuration):
     build = config.get_build(args.component)
+
+    if not build:
+        suggested_component_name = config.get_suggested_component_name(args.component)
+        logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+        exit(1)
+
     if not build.clone:
         print("This component does not have a git repository configured!")
         return
diff --git a/orchestra/cmds/components.py b/orchestra/cmds/components.py
index 6a63fb85cab77cf4752848ef853f0637c728cbba..252af662b43896b831479816b7afd8cd5f5d44b8 100644
--- a/orchestra/cmds/components.py
+++ b/orchestra/cmds/components.py
@@ -1,3 +1,5 @@
+from loguru import logger
+
 from ..model.configuration import Configuration
 from ..util import get_installed_build
 
@@ -13,6 +15,12 @@ def install_subcommand(sub_argparser):
 def handle_components(args, config: Configuration):
     if args.component:
         build = config.get_build(args.component)
+
+        if not build:
+            suggested_component_name = config.get_suggested_component_name(args.component)
+            logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+            exit(1)
+
         components = {build.component.name: build.component}
     else:
         components = config.components
diff --git a/orchestra/cmds/configure.py b/orchestra/cmds/configure.py
index da7666e57cec3cdb3f072635787d874526f9c69d..e0704eeef478b03ea07792fe7260c81060846fd9 100644
--- a/orchestra/cmds/configure.py
+++ b/orchestra/cmds/configure.py
@@ -1,5 +1,7 @@
-from ..model.configuration import Configuration
+from loguru import logger
+
 from ..executor import Executor
+from ..model.configuration import Configuration
 
 
 def install_subcommand(sub_argparser):
@@ -10,5 +12,11 @@ def install_subcommand(sub_argparser):
 
 def handle_configure(args, config: Configuration):
     build = config.get_build(args.component)
+
+    if not build:
+        suggested_component_name = config.get_suggested_component_name(args.component)
+        logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+        exit(1)
+
     executor = Executor(args)
     executor.run(build.configure, force=args.force)
diff --git a/orchestra/cmds/environment.py b/orchestra/cmds/environment.py
index d086aa54081f0915a3245b31a739ad27851a46ec..ad34d620bd43fbc5960bf3dc18217bd3bb0cd68f 100644
--- a/orchestra/cmds/environment.py
+++ b/orchestra/cmds/environment.py
@@ -1,3 +1,5 @@
+from loguru import logger
+
 from ..util import export_environment
 
 
@@ -11,4 +13,10 @@ def handle_environment(args, config):
         print(export_environment(config.global_env()))
     else:
         build = config.get_build(args.component)
+
+        if not build:
+            suggested_component_name = config.get_suggested_component_name(args.component)
+            logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+            exit(1)
+
         print(export_environment(build.install.environment))
diff --git a/orchestra/cmds/graph.py b/orchestra/cmds/graph.py
index e074e1340a165d26b0cae6700c31f11b212e3e3e..ab10f88a66af51bf289f1402bddcfe2d46276a9b 100644
--- a/orchestra/cmds/graph.py
+++ b/orchestra/cmds/graph.py
@@ -1,3 +1,5 @@
+from loguru import logger
+
 from ..model.configuration import Configuration
 
 
@@ -10,7 +12,14 @@ def install_subcommand(sub_argparser):
 
 def handle_graph(args, config: Configuration):
     if args.component:
-        actions = [config.get_build(args.component).install]
+        build = config.get_build(args.component)
+
+        if not build:
+            suggested_component_name = config.get_suggested_component_name(args.component)
+            logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+            exit(1)
+
+        actions = [build.install]
     else:
         actions = set()
         for component in config.components.values():
diff --git a/orchestra/cmds/install.py b/orchestra/cmds/install.py
index 543ee11b23d5c65ef9fa66688df0d00ada165553..0003bb9988ed5db795141be344a8224b5724cab6 100644
--- a/orchestra/cmds/install.py
+++ b/orchestra/cmds/install.py
@@ -1,5 +1,7 @@
-from ..model.configuration import Configuration
+from loguru import logger
+
 from ..executor import Executor
+from ..model.configuration import Configuration
 
 
 def install_subcommand(sub_argparser):
@@ -13,5 +15,11 @@ def install_subcommand(sub_argparser):
 
 def handle_install(args, config: Configuration):
     build = config.get_build(args.component)
+
+    if not build:
+        suggested_component_name = config.get_suggested_component_name(args.component)
+        logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+        exit(1)
+
     executor = Executor(args)
     executor.run(build.install, force=args.force)
diff --git a/orchestra/cmds/shell.py b/orchestra/cmds/shell.py
index b3c320bf4e1fcb843bf00639d3fd95eb0f753ac1..4fbc26b9486d4095b0d54b2829f0b1180d1b5079 100644
--- a/orchestra/cmds/shell.py
+++ b/orchestra/cmds/shell.py
@@ -6,6 +6,8 @@ import termios
 import tty
 from subprocess import Popen
 
+from loguru import logger
+
 from ..actions.util import run_script
 from ..model.configuration import Configuration
 from ..util import export_environment
@@ -23,6 +25,12 @@ def handle_shell(args, config: Configuration):
         env["PS1"] = "(orchestra) $PS1"
     else:
         build = config.get_build(args.component)
+
+        if not build:
+            suggested_component_name = config.get_suggested_component_name(args.component)
+            logger.error(f"Component {args.component} not found! Did you mean {suggested_component_name}?")
+            exit(1)
+
         env = build.install.environment
         env["PS1"] = f"(orchestra - {build.qualified_name}) $PS1"
 
diff --git a/orchestra/model/configuration.py b/orchestra/model/configuration.py
index 93a28dbbf5550f77a461a47f32b3c6071f9c7c77..9774bed891801cb4be580cca0e71b7aef0eea448 100644
--- a/orchestra/model/configuration.py
+++ b/orchestra/model/configuration.py
@@ -68,8 +68,7 @@ class Configuration:
         component_name, build_name = parse_component_name(comp_spec)
         component = self.components.get(component_name)
         if not component:
-            suggested_component_name = self.get_suggested_component_name(component_name)
-            raise Exception(f"Component {component_name} not found! Did you mean {suggested_component_name}?")
+            return None
         if build_name:
             build = component.builds[build_name]
         else: