1 of 12

AUTONOMOUS RESEARCH LABORATORY

GENESIS

From question to experiment to discovery.

An autonomous lab that reads the literature, forms competing hypotheses, writes the experiment, runs it in an isolated sandbox, and measures what actually happened. No human in the middle.

Dhruv Gouniyal · Parikshit Dahiya · Sagar Makkar

GENESIS / 01

2 of 12

THE DIFFERENCE

Ordinary AI tools answer questions.

GENESIS tests them.

An LLM decides what to test and why. Executed code decides what is true. No metric in this system is ever produced by a language model — if the experiment did not run, there is no number to show.

No chat window

No hard-coded results

No human in the loop

GENESIS · Autonomous Research Laboratory

02

3 of 12

THE RESEARCH LOOP

A complete research team. One continuous loop.

01

Scout

Searches arXiv; pulls out concepts and open gaps

02

Scientist

Three competing, falsifiable hypotheses

03

PI

Picks one and records the evidence behind it

04

Designer

Dataset, variables, metrics, split

05

Engineer

Writes the Python, and repairs it on failure

06

Sandbox

Real execution. No network, no host access

07

Analyst

Supported or not, against the baseline

08

PI decides

Run the next experiment, or conclude

One pass through the loop is one experiment. Step 08 feeds step 02 with every measured number so far — the run ends when the budget is spent or the PI judges nothing further is worth testing.

Seven specialised agents, one continuous loop

03

4 of 12

THE SIX AGENTS

Each agent is one job, and one fallback.

Agent

What it owns

Scout

Searches arXiv live; a curated corpus of real papers as fallback

Scientist

Competing, falsifiable hypotheses; never re-proposes a tested one

Experimentalist

Dataset, baseline, variables, parameters, metrics, train/test split

Engineer

Writes executable Python; on failure it repairs, twice

Analyst

Verdict computed arithmetically, not written by the model

Investigator

What to run next, when to stop, and why — with structured evidence

Every agent has a deterministic fallback, so the loop completes with no model provider at all. What degrades is the reasoning — never the measurement.

Scout · Scientist · Experimentalist · Engineer · Analyst · Principal Investigator

04

5 of 12

THE ONE THING THAT MATTERS

Where the numbers come from

01

The Engineer produces a Python program.

02

It is written to a throwaway directory with a trusted bootstrap.

03

A separate process runs it — environment scrubbed, network disabled.

04

The program must write result.json.

05

Every metric is coerced to a float. NaN, infinite and non-numeric values are discarded.

{"status": "success",

"metrics": {"f1": 0.9842,

"precision": 0.982,

"false_positive_rate": 0.0024},

"execution_time": 3.5}

No result.json, unparseable, or no numeric metrics — the run is a failure. A clean exit is not enough.

There is no path by which a model-authored string becomes a displayed metric.

05

6 of 12

EVIDENCE, NOT ESTIMATES

Every number on screen was computed by code that actually ran.

0.364 → 0.984

F1 score, baseline to best

4.27% → 0.24%

False-positive rate

100%

Metrics from executed code

Network anomaly detection · three experiments · roughly thirteen seconds of compute. Nothing here is hard-coded: re-run it and the ranking is re-derived from execution.

06

7 of 12

A REPRESENTATIVE RUN

Three experiments, each one chosen by the last

Experiment

Approach

Features

F1

FPR

EXP-001

isolation_forest

base

0.364

4.27%

EXP-002

random_forest

base

0.848

1.98%

EXP-003

random_forest

temporal

0.984

0.24%

F1 +170%

Best over the first baseline

FPR -94%

False alarms, near eliminated

EXP-003 exists because EXP-002's measured errors pointed at the time dimension. The PI chose it, and recorded why.

Source: demo benchmark, network anomaly detection · deterministic dataset, real execution

07

8 of 12

HONESTY BY CONSTRUCTION

A synthetic dataset can be rigged. This one cannot.

Invisible scans

Each port-scan flow looks like an ordinary DNS probe. Scans surface only in a time window, through distinct ports per source. A per-flow model is structurally blind to them.

Benign confusers

Monitoring sweeps, backups and flash crowds are labelled normal but mimic attacks per flow. They are why false positives exist, and only a windowed feature separates them.

Measurement jitter

Without it a supervised model memorises the generative signature and scores a meaningless F1 of 1.0. That happened in development; the jitter was added to fix it.

So “temporal features help” is a finding the system measures — not one the dataset was built to announce.

Different approaches genuinely differ on this data — by design

08

9 of 12

SECURITY MODEL

AI-generated code is unreviewed code. We treat it as untrusted.

PREFERRED

DockerSandbox

  • Network disabled entirely
  • Capped CPU, memory and PIDs
  • Read-only root filesystem
  • All capabilities dropped
  • Runs as a non-root user
  • Docker socket never exposed

FALLBACK

SubprocessSandbox

  • Throwaway working directory
  • Environment scrubbed to an allowlist
  • Sockets and process spawning neutered
  • Hard timeout with process-tree kill
  • Defence in depth, not a boundary

VERIFIED

By tests, not claims

  • Network blocked
  • Zero host secrets visible
  • Process spawning blocked
  • Timeouts enforced
  • 51 tests, sandbox and API

The backend is selected automatically, and /system/status always reports which one is live

09

10 of 12

HOW IT IS BUILT

Two services, one source of truth

apps/web

Next.js, TypeScript (strict), Tailwind, React Flow, Recharts

apps/api

FastAPI, Pydantic, SQLAlchemy — routes, orchestrator, agents, sandbox, literature

PostgreSQL

SQLite locally. Every state transition is persisted, so a restarted backend recovers interrupted runs

REST + WebSocket

Agent events stream live; structural changes nudge the client to re-fetch the record

RUN STATE MACHINE

CREATED

RESEARCHING

HYPOTHESIS_GENERATION

EXPERIMENT_DESIGN

CODE_GENERATION

RUNNING

ANALYZING

DECISION

COMPLETED

Threading

The orchestrator runs on a background thread with plain synchronous SQLAlchemy and publishes onto the API loop. No async-DB friction, and the console stays live.

Pause and stop are cooperative — checked at phase boundaries, never killed mid-experiment

10

11 of 12

WATCH IT RUN

A full research run, in about thirteen seconds.

THE DEMO

Fixed budget

Three experiments, the standard depth preset

Deterministic data

The shipped network flow dataset, seed-stable

Offline reasoning

Deterministic agent strategies; no API key needed

Real execution

The experiments run, and the metrics are measured

WHAT TO CLICK

WHY?

Every PI decision, its evidence and confidence

View Code

The exact generated program, stdout and stderr

Literature

Papers found, with relevance and source

Inject Hypothesis

Add your own; GENESIS tests it next

Real code. Isolated sandbox. Measured results.

Dhruv Gouniyal · Parikshit Dahiya · Sagar Makkar

11

12 of 12

DEPLOYED AND LIVE

Try it live, or read the source.

RUN THE LAB

SOURCE CODE

No sign-up

Demo run in about 13 seconds

Real experiments, measured results

GENESIS · Dhruv Gouniyal, Parikshit Dahiya, Sagar Makkar

12