# ProcessManager `ProcessManager` executes structured `CommandOperation` objects and low-level commands, with secure-by-default shell execution. ```{eval-rst} .. automodule:: oduit.process_manager :members: :undoc-members: :show-inheritance: ``` ## Usage Examples ```python from oduit import ConfigLoader, ProcessManager from oduit.builders import InstallCommandBuilder loader = ConfigLoader() config = loader.load_config("dev") manager = ProcessManager() operation = InstallCommandBuilder(config, "sale").build_operation() result = manager.run_operation(operation, verbose=True) shell_result = manager.run_shell_command( ["python", "-c", "print('hello')"], capture_output=True, ) ``` ## Key Methods - `run_operation()`: execute a structured command with automatic result parsing - `run_command()`: run a direct command list - `run_command_yielding()`: stream structured output events - `run_shell_command()`: execute list commands safely, or string commands with explicit `allow_shell=True` - `clear_sudo_password()`: clear cached sudo credentials ## Notes - `run_command()` does not expose a public `timeout=...` parameter - string shell commands require `allow_shell=True` - embedded execution is not a supported public `ProcessManager` mode