Skip to content

Extensible research runtime

Automo supplies complete default infrastructure while keeping subsystem boundaries narrow. A project can therefore start with a thin plugin and replace only the pieces that are genuinely domain-specific.

Thin plugin contract

A ResearchPlugin registers:

  • data sources;
  • feature computers and feature sets;
  • objectives;
  • metrics;
  • model specifications;
  • model runners.

Automo's ResearchRuntime resolves those registrations, materializes feature dependencies, fits the requested model runner, and evaluates the model using the declared metrics.

```python from automo.runtime import ResearchPlugin, ResearchRuntime

plugin = ResearchPlugin( id="my-project", data_sources=(...), feature_computers=(...), feature_sets=(...), objectives=(...), metrics=(...), model_specs=(...), model_runners=(...), )

runtime = ResearchRuntime(plugin) model = runtime.fit("candidate-v1", data_source_id="training") metrics = runtime.evaluate("candidate-v1", model, data_source_id="validation") ```

Project plugin discovery

A host package may expose a factory directly in automo.toml:

toml [project] plugin = "my_package.automo:create_plugin"

or through the automo.plugins Python entry-point group:

toml [project] plugin = "entrypoint:my-package"

This keeps project integration thin: the project defines domain data/features/objectives and optional custom runners, while Automo owns the surrounding research runtime.

Design principles

The runtime keeps the reusable research layer domain-neutral:

  • immutable declarative model and feature specifications;
  • feature selection independent from estimator implementation;
  • explicit metric direction and evidence scope;
  • optional ordering/availability semantics rather than mandatory timestamps;
  • stable IDs suitable for registry and provenance lineage.