A powerful experiment harness for systematic research. Define experiments as code, track runs with full reproducibility, and monitor execution in real-time.

defmodule MyExperiment do
  use Athanor.Experiment

  @impl true
  def run(ctx) do
    config = Runtime.config(ctx)

    for i <- 1..config["iterations"] do
      Runtime.progress(ctx, i, config["iterations"])
      result = run_trial(i, config)
      Runtime.result(ctx, "trial_#{i}", result)
    end

    Runtime.complete(ctx)
  end
end

Built for Rigorous Research

๐Ÿ“

Code-Defined Experiments

Define experiments as Elixir modules with typed configuration schemas. Version control your methodology alongside your code.

๐Ÿ”„

Reproducible Runs

Separate experiment instances from runs. Configuration snapshots ensure you can always reproduce past results.

๐Ÿ“Š

Real-Time Monitoring

Watch experiments execute with live progress, streaming logs, and resultsโ€”all through a responsive web interface.

๐Ÿ”Œ

Programmatic Access

Full MCP server integration with 15 tools. Automate experiment workflows or integrate with your existing toolchain.

โšก

Supervised Execution

Each run executes in isolated processes with proper supervision. Failures are contained, cancellation is clean.

๐Ÿ—„๏ธ

Persistent Results

Structured results and logs persist to PostgreSQL. Query, analyze, and export your data however you need.

Quick Start

1

Clone and Setup

git clone https://github.com/BinaryMuse/athanor.git
cd athanor
mix setup
2

Start the Server

iex -S mix phx.server
3

Create Your First Experiment

Visit localhost:4000 and create an instance from one of the example experiments, or write your own.