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
Clone and Setup
git clone https://github.com/BinaryMuse/athanor.git
cd athanor
mix setup
Start the Server
iex -S mix phx.server
Create Your First Experiment
Visit localhost:4000 and create an instance from one of
the example experiments, or
write your own.