docs: def run(self, daemon=False):
          """Launch the process with the given inputs, by default running in the current interpreter.
  
          :param daemon: boolean, if True, will submit the process instead of running it.
          """
          from aiida.engine import launch
  
          # If daemon is True, submit the process and return
          if daemon:
              node = launch.submit(self.process, **self.inputs)
              echo.echo_info('Submitted {}<{}>'.format(self.process_name, node.pk))
              return
  
          # Otherwise we run locally and wait for the process to finish
          echo.echo_info('Running {}'.format(self.process_name))
          try:
              _, node = launch.run_get_node(self.process, **self.inputs)
          except Exception as exception:  # pylint: disable=broad-except
              echo.echo_critical('an exception occurred during execution: {}'.format(str(exception)))
  
          if node.is_killed:
              echo.echo_critical('{}<{}> was killed'.format(self.process_name, node.pk))
          elif not node.is_finished_ok:
              arguments = [self.process_name, node.pk, node.exit_status, node.exit_message]
              echo.echo_warning('{}<{}> failed with exit status {}: {}'.format(*arguments))
          else:
              output = []
              echo.echo_success('{}<{}> finished successfully\n'.format(self.process_name, node.pk))
              for triple in sorted(node.get_outgoing().all(), key=lambda triple: triple.link_label):
                  output.append([triple.link_label, '{}<{}>'.format(triple.node.__class__.__name__, triple.node.pk)])
              echo.echo(tabulate.tabulate(output, headers=['Output label', 'Node']))