diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp
index 1c02a820abda8b89a0e789703b547bb9b96ee2b1..368e86c834c63935bdc1316e66c9459b96645fe2 100644
--- a/src/language/PugsParser.cpp
+++ b/src/language/PugsParser.cpp
@@ -18,6 +18,7 @@
 #include <language/utils/ASTPrinter.hpp>
 #include <language/utils/OperatorRepository.hpp>
 #include <language/utils/SymbolTable.hpp>
+#include <utils/ConsoleManager.hpp>
 #include <utils/PugsAssert.hpp>
 #include <utils/PugsUtils.hpp>
 #include <utils/SignalManager.hpp>
@@ -45,8 +46,10 @@ parser(const std::string& filename)
     throw UnexpectedError(os.str());
   }
 
-  std::cout << rang::style::bold << "Parsing file " << rang::style::reset << rang::style::underline << filename
-            << rang::style::reset << " ...\n";
+  if (ConsoleManager::showPreamble()) {
+    std::cout << rang::style::bold << "Parsing file " << rang::style::reset << rang::style::underline << filename
+              << rang::style::reset << " ...\n";
+  }
 
   auto parse_and_execute = [](auto& input) {
     OperatorRepository::create();
@@ -75,8 +78,11 @@ parser(const std::string& filename)
     ASTNodeEmptyBlockCleaner{*root_node};
 
     ASTNodeExpressionBuilder{*root_node};
-    std::cout << "-------------------------------------------------------\n";
-    std::cout << rang::style::bold << "Executing AST..." << rang::style::reset << '\n';
+
+    if (ConsoleManager::showPreamble()) {
+      std::cout << "-------------------------------------------------------\n";
+      std::cout << rang::style::bold << "Executing AST..." << rang::style::reset << '\n';
+    }
 
     ASTExecutionInfo execution_info{*root_node, module_importer.moduleRepository()};
 
diff --git a/src/language/ast/ASTModulesImporter.cpp b/src/language/ast/ASTModulesImporter.cpp
index fa3f479e307fd2b0c78d265879c22157dfec85b8..4154a7d8ca2bc874ba7df224c14a23838a21f493 100644
--- a/src/language/ast/ASTModulesImporter.cpp
+++ b/src/language/ast/ASTModulesImporter.cpp
@@ -2,6 +2,7 @@
 
 #include <language/PEGGrammar.hpp>
 #include <language/utils/OperatorRepository.hpp>
+#include <utils/ConsoleManager.hpp>
 
 void
 ASTModulesImporter::_importModule(ASTNode& import_node)
@@ -13,12 +14,16 @@ ASTModulesImporter::_importModule(ASTNode& import_node)
   const std::string module_name   = module_name_node.string();
 
   if (auto [i_module_name, success] = m_imported_modules.insert(module_name); not success) {
-    std::cout << " * ignoring  '" << rang::fgB::green << module_name << rang::style::reset
-              << "' module, already imported\n";
+    if (ConsoleManager::showPreamble()) {
+      std::cout << " * ignoring  '" << rang::fgB::green << module_name << rang::style::reset
+                << "' module, already imported\n";
+    }
     return;
   }
 
-  std::cout << " * importing '" << rang::fgB::green << module_name << rang::style::reset << "' module\n";
+  if (ConsoleManager::showPreamble()) {
+    std::cout << " * importing '" << rang::fgB::green << module_name << rang::style::reset << "' module\n";
+  }
 
   m_module_repository.populateSymbolTable(module_name_node, m_symbol_table);
   m_module_repository.registerOperators(module_name);
@@ -43,5 +48,8 @@ ASTModulesImporter::ASTModulesImporter(ASTNode& root_node) : m_symbol_table{*roo
   m_module_repository.populateMandatorySymbolTable(root_node, m_symbol_table);
 
   this->_importAllModules(root_node);
-  std::cout << " - loaded modules\n";
+
+  if (ConsoleManager::showPreamble()) {
+    std::cout << " - loaded modules\n";
+  }
 }
diff --git a/src/language/ast/ASTNodeDataTypeBuilder.cpp b/src/language/ast/ASTNodeDataTypeBuilder.cpp
index cb9e479df5f2e1f64edb4d5cb732acebcb505af6..ac1d36a5401bb372aefe2b8190acd04938e9bb54 100644
--- a/src/language/ast/ASTNodeDataTypeBuilder.cpp
+++ b/src/language/ast/ASTNodeDataTypeBuilder.cpp
@@ -7,6 +7,7 @@
 #include <language/utils/OperatorRepository.hpp>
 #include <language/utils/ParseError.hpp>
 #include <language/utils/SymbolTable.hpp>
+#include <utils/ConsoleManager.hpp>
 #include <utils/PugsAssert.hpp>
 
 void
@@ -635,5 +636,7 @@ ASTNodeDataTypeBuilder::ASTNodeDataTypeBuilder(ASTNode& node)
 
   this->_buildNodeDataTypes(node);
 
-  std::cout << " - build node data types\n";
+  if (ConsoleManager::showPreamble()) {
+    std::cout << " - build node data types\n";
+  }
 }
diff --git a/src/language/ast/ASTNodeDataTypeChecker.cpp b/src/language/ast/ASTNodeDataTypeChecker.cpp
index 3e6774849a5bbef6386f606a1bfe8a6993a84192..76a153f22a9c76670e33fa732f748c960e3bc393 100644
--- a/src/language/ast/ASTNodeDataTypeChecker.cpp
+++ b/src/language/ast/ASTNodeDataTypeChecker.cpp
@@ -1,6 +1,7 @@
 #include <language/ast/ASTNodeDataTypeChecker.hpp>
 
 #include <language/utils/ParseError.hpp>
+#include <utils/ConsoleManager.hpp>
 
 void
 ASTNodeDataTypeChecker::_checkNodeDataTypes(const ASTNode& n)
@@ -18,5 +19,8 @@ ASTNodeDataTypeChecker::ASTNodeDataTypeChecker(const ASTNode& node)
 {
   Assert(node.is_root());
   this->_checkNodeDataTypes(node);
-  std::cout << " - checked node data types\n";
+
+  if (ConsoleManager::showPreamble()) {
+    std::cout << " - checked node data types\n";
+  }
 }
diff --git a/src/language/ast/ASTSymbolTableBuilder.cpp b/src/language/ast/ASTSymbolTableBuilder.cpp
index 2e019d8db10301f274cfa2946d39f290ed5a4da5..d2eb7d77c8abb454a8db76818af01227ba400fcc 100644
--- a/src/language/ast/ASTSymbolTableBuilder.cpp
+++ b/src/language/ast/ASTSymbolTableBuilder.cpp
@@ -3,6 +3,7 @@
 #include <language/PEGGrammar.hpp>
 #include <language/utils/ParseError.hpp>
 #include <language/utils/SymbolTable.hpp>
+#include <utils/ConsoleManager.hpp>
 
 void
 ASTSymbolTableBuilder::buildSymbolTable(ASTNode& n, std::shared_ptr<SymbolTable>& symbol_table)
@@ -124,5 +125,8 @@ ASTSymbolTableBuilder::ASTSymbolTableBuilder(ASTNode& node)
   Assert(node.is_root());
 
   this->buildSymbolTable(node, node.m_symbol_table);
-  std::cout << " - checked symbols declaration\n";
+
+  if (ConsoleManager::showPreamble()) {
+    std::cout << " - checked symbols declaration\n";
+  }
 }
diff --git a/src/utils/ConsoleManager.cpp b/src/utils/ConsoleManager.cpp
index f55004ac7dd2181256404b486ad1eaa0c05abd85..7006d373f17715e7b521b81501f970bc1ab0f3c2 100644
--- a/src/utils/ConsoleManager.cpp
+++ b/src/utils/ConsoleManager.cpp
@@ -2,6 +2,20 @@
 
 #include <rang.hpp>
 
+bool ConsoleManager::s_show_preamble = true;
+
+bool
+ConsoleManager::showPreamble()
+{
+  return s_show_preamble;
+}
+
+void
+ConsoleManager::setShowPreamble(bool show_preamble)
+{
+  s_show_preamble = show_preamble;
+}
+
 bool
 ConsoleManager::isTerminal(std::ostream& os)
 {
diff --git a/src/utils/ConsoleManager.hpp b/src/utils/ConsoleManager.hpp
index b9ee7cbfbf123af63f131d07df8655c6f6ba4f85..a2afe46fbc0ad16e263d1f5a9b3f8a84d5202d94 100644
--- a/src/utils/ConsoleManager.hpp
+++ b/src/utils/ConsoleManager.hpp
@@ -3,8 +3,14 @@
 
 #include <string>
 
-struct ConsoleManager
+class ConsoleManager
 {
+ private:
+  static bool s_show_preamble;
+
+ public:
+  static bool showPreamble();
+  static void setShowPreamble(bool show_preamble);
   static bool isTerminal(std::ostream& os);
   static void init(bool colorize);
 };
diff --git a/src/utils/PugsUtils.cpp b/src/utils/PugsUtils.cpp
index 3214ba653989b13805181b7c54e3502182cf9e63..705fbd5e0a349ff60ef3a1c680dd3d3e0a4d25ec 100644
--- a/src/utils/PugsUtils.cpp
+++ b/src/utils/PugsUtils.cpp
@@ -105,6 +105,9 @@ initialize(int& argc, char* argv[])
 
     app.add_flag("--fpe,!--no-fpe", enable_fpe, "Trap floating point exceptions [default: true]");
 
+    bool show_preamble = true;
+    app.add_flag("--preamble,!--no-preamble", show_preamble, "Show execution info preamble [default: true]");
+
     bool show_backtrace = false;
     app.add_flag("-b,--backtrace,!--no-backtrace", show_backtrace, "Show backtrace on failure [default: false]");
 
@@ -123,6 +126,7 @@ initialize(int& argc, char* argv[])
     }
 
     BacktraceManager::setShow(show_backtrace);
+    ConsoleManager::setShowPreamble(show_preamble);
     ConsoleManager::init(enable_color);
     SignalManager::setPauseForDebug(pause_on_error);
   }
@@ -135,18 +139,21 @@ initialize(int& argc, char* argv[])
 
   setDefaultOMPEnvironment();
   Kokkos::initialize(argc, argv);
-  std::cout << "----------------- " << rang::fg::green << "pugs exec info" << rang::fg::reset
-            << " ----------------------" << '\n';
 
-  std::cout << rang::style::bold;
+  if (ConsoleManager::showPreamble()) {
+    std::cout << "----------------- " << rang::fg::green << "pugs exec info" << rang::fg::reset
+              << " ----------------------" << '\n';
+
+    std::cout << rang::style::bold;
 #ifdef PUGS_HAS_MPI
-  std::cout << "MPI number of ranks " << parallel::size() << '\n';
+    std::cout << "MPI number of ranks " << parallel::size() << '\n';
 #else    // PUGS_HAS_MPI
-  std::cout << "Sequential build\n";
+    std::cout << "Sequential build\n";
 #endif   // PUGS_HAS_MPI
-  Kokkos::DefaultExecutionSpace::print_configuration(std::cout);
-  std::cout << rang::style::reset;
-  std::cout << "-------------------------------------------------------\n";
+    Kokkos::DefaultExecutionSpace::print_configuration(std::cout);
+    std::cout << rang::style::reset;
+    std::cout << "-------------------------------------------------------\n";
+  }
 
   return filename;
 }
diff --git a/src/utils/RandomEngine.cpp b/src/utils/RandomEngine.cpp
index 9b7efc162c4d2d7b0ff912689b9f718eae39af5b..dd463af5322c7af4d60b9b6e26ac1a0f9bf7a5ea 100644
--- a/src/utils/RandomEngine.cpp
+++ b/src/utils/RandomEngine.cpp
@@ -1,4 +1,5 @@
 
+#include <utils/ConsoleManager.hpp>
 #include <utils/Messenger.hpp>
 #include <utils/RandomEngine.hpp>
 
@@ -47,10 +48,13 @@ RandomEngine::RandomEngine()
 void
 RandomEngine::setRandomSeed(const uint64_t random_seed)
 {
-  m_random_engine = std::default_random_engine(random_seed);
-
-  std::cout << " * setting " << rang::fgB::green << "random seed" << rang::style::reset << " to " << rang::fgB::yellow
-            << random_seed << rang::style::reset << '\n';
+  m_random_engine  = std::default_random_engine(random_seed);
+  static bool init = true;
+  if (ConsoleManager::showPreamble() or not init) {
+    std::cout << " * setting " << rang::fgB::green << "random seed" << rang::style::reset << " to " << rang::fgB::yellow
+              << random_seed << rang::style::reset << '\n';
+  }
+  init = false;
 }
 
 void