Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time


Unreleased v3

  • New two-way binding storage API
  • Next generation configuration parser using pydantic and OmegaConf, bringing optional type safety, recursive dot-notations, versioning using Python code, advanced interpolations, and many fixes and simplifications
  • Mixin API is superseded by Slot API


  • Add URL to submission serialization
  • Simplify view registration methods


  • Allow registration overwrite in Execution.set_schedule


  • Ensure that each Execution object has its own Registration
  • Allow View creation from URL


  • Allow simpler standard Python class usage of views
  • New Component.submission alias for easier introspection
  • Capture Slurm engine resource arguments
  • New start, finish and success dependent component life cycle events
  • Simplify access to engine information


  • Add host_information event for explicit registration of additional host info
  • Add Execution set_directory method
  • Use multiprocess execution by default
  • Add on_before_component_construction event
  • Allow to set environment variables via special ENVIRON flag
  • Allows config method invocation from within config methods


  • Fix bug where SqlIndex models are not recognised correctly
  • Add create option to get_url and get_local_directory
  • Enable schema-validation by default


  • Introduce engine before and after dispatch events
  • Promote mixin overrides in version dict as default


  • Adds default project option
  • Allow mixin overrides in version dict


  • Mixins can be specified, extended and overwritten via Experiment().component(mixins=[])


  • New nested version syntax ~nested:version


  • Resolve @-directives relative to _machinable module rather than top project level
  • Submission API replaces the StorageExperiment/StorageComponent interface


  • Fix uncaught exception in get_commit host information


  • New on_resolve_vendor registration event
  • includes keyword in machinable.yaml
  • Clone git+ vendor imports automatically


  • New before_script and after_script modifier methods in Slurm engine


  • Set default_code_backup options in settings.yaml and Registration


  • Record component inheritance lineage in flags.LINEAGE
  • Support symlinks and recursive .gitignore files in code backup
  • Adds storage.get_component() to directly retrieve components


  • Hide merged ~version configuration in summary
  • Use timestamp representation to decrease records file sizes


  • Capture Slurm status information in engine/info.json


  • Experimental schema_validation option
  • Support .json and .yaml files as version arguments
  • jsonl based record writer for continuous writes
  • Removes deprecated
  • New registration event on_before_storage_creation
  • Control the output redirection via OUTPUT_REDIRECTION flag


  • Deprecates in favor of
  • Support static host info methods in registration
  • New find_experiments method to simplify recursive search for experiments in a given directory


  • Improved reference documentation
  • Experimental storage View API
  • Add default_resources inheritance


  • Restructured documentation
  • Edit experiments from command line when prefixed with :
  • Auto-name experiments when using @-directive
  • Display experiment and project name in logging output
  • Cleaner Execution.summary()


  • Directory specification is now part of the storage configuration
  • Execution/execute can now be used to decorate Components classes
  • New on_component_import events in Registration
  • Configuration updates are validated to only override existing keys to guard against unrecognised typos
  • Specify default resources in Registration
  • Engines can specify support for resource specification


  • GraphQL server supports basic execution, index and storage APIs
  • Allow config inheritance from outer scopes
  • Optional project name in machinable.yaml
  • New get_experiment() shortcut on Storage() instances
  • Explicit symlink support for project dependencies
  • Append vendor project directories to sys.path by default
  • Execution.failure count property to detect failures more easily
  • Removes deprecated v1 compatibility layer


  • Rewrites storage to experiments/ subfolder if experiment exists
  • New storage APIs to discover related experiments
  • Introduce global on_submit event
  • Disable automatic checkpoint handling in favour of increased user control
  • Executions loading via @ import shorthand
  • SqlIndex that can persist experiments in SQL-type databases


  • Make dataset dependency optional


  • Experimental Index() interface
  • Storage configuration can be written in modules using the Storage() interface
  • Support for flattened dict notation
  • Environment variable expansion in machinable.yaml
  • Reduced import dependencies in


  • New CLI option execution that allows for resuming executions more easily
  • Fix issue that prevented the status.json information to be written


  • Improved Slurm engine


  • Many APIs have been renamed for increased consistency
  • for automatic directories per experiment
  • Set default storage and engine in .machinable/settings.yaml
  • machinable.Execution() for fine grained execution control
  • Computable resources specification
  • Specify values based on other values
  • New Registration API that allows to define project wide settings such as global config methods or custom host information


  • Automatic output capturing
  • Allow import registration for non-machinable repositories
  • Handle RayActor exception gracefully


  • New Engine API for support of custom execution modes; deprecates local argument in execute() in favor of default local driver
  • Multiprocessing driver to support parallel execution without Ray
  • Fix uncaught exception in Observations.records when data type was changed between iterations
  • Reload imported components modules to enable easier execution in interactive environments
  • Automatically capture environment variables for host information


  • Bugfix for correct Exception propagation in local mode


  • Fix bug where record writer fails when used before execute events
  • Add avg mode of record.timing()


  • Support for Ray 0.8
  • Fixed bug in observer where task names where not captured correctly
  • New flags with execution information
  • Exceptions in the components are now caught and reported back to the driver


  • Prevent records FileNotFoundError when training in progress
  • Catch occasional error from strptime missing microseconds
  • Don't save actor config in observation data
  • Easier access to versions in ConfigDict via get_versioning


  • Documentation source code release
  • Removes deprecated Experiment.node(). Use Experiment.components() instead
  • New optional dependencies installation via pip install machinable[full]


  • Initial public release