The Problem

Researchers often juggle multiple code‑review, experiment, and artifact‑management tasks on a single machine. Existing tools separate code, data, and experiment logs, making it hard to tie a specific run to the exact code and model used. The result is duplicated effort, hard‑to‑reproduce experiments, and a fragmented user experience.

What This Does

OpenResearch turns any LLM harness (Claude Code, Codex, OpenCode, Cursor) into a research agent that can independently explore a hypothesis, launch an experiment, and store evidence in the same Git‑native workspace. The CLI (src/commands/*.rs) orchestrates everything from orx up to orx run. The server (ui/src/App.tsx and ui/dist/index.html) provides a local dashboard that surfaces logs, diffs, and artifacts. agent-skills/ bundles reusable agent behaviours (e.g., orx-compute, orx-create, orx-experiment-tree) that can be invoked via the CLI or the UI.

How It Is Wired

Entry Point – src/main.rs parses CLI args and dispatches to the appropriate command module. Command Layer – src/commands/compute.rs → src/jobs/* (e.g., src/jobs/localbox.rs, src/jobs/k8s.rs) and src/compute.rs to launch compute jobs. Agent Layer – src/local/agent_skills.rs loads skill definitions from agent-skills/. Each skill exposes a run(ctx) function that the CLI calls. State Layer – src/config.rs reads Cargo.toml, ui/package.json, and demo/nanochat/base/pyproject.toml for default settings. Project state lives in the workspace’s .orx/ directory; all commits are recorded in Git. UI Layer – ui/src/App.tsx fetches state via a REST endpoint served by src/commands/serve.rs. The UI does not mutate state directly; it only visualises the Git tree and logs.

The breadth of the effect is limited: src/main.rs is the single entry point, src/commands/*.rs are thin wrappers, and the core logic resides in src/jobs/* and src/local/agent_skills.rs. The only cyclic dependency is between agent_skills and commands, which is resolved at load time and does not affect runtime performance.

How To Use It

Setup

# clone
git clone https://github.com/moses-y/OpenResearch
cd OpenResearch
# install Rust toolchain
curl https://sh.rustup.rs -sSf | sh
# build CLI
cargo build --release
# install UI dependencies
cd ui
pnpm install

Configuration

  • src/config.rs reads CARGO_HOME and ORX_HOME (default ~/.orx).
  • To point a skill at a local model, edit src/local/agent_skills.rs or set ORX_MODEL_ENDPOINT in the environment.

Running

# start the dashboard
./target/release/orx up
# launch an experiment
./target/release/orx experiment run my_experiment

The dashboard is accessible at http://127.0.0.1:4791.

Real‑World Use

A research group can spin up a new experiment with orx experiment create, commit the experiment tree, and let the chosen LLM (e.g., OpenCode) generate a hypothesis. The LLM then runs orx compute on a local GPU cluster; logs and artifacts are stored under .orx/experiments/<id>/. The group can later replay the run with orx experiment replay <id>.

orx experiment create my_experiment
# LLM writes code
orx compute
# view results
orx experiment logs my_experiment

Code Health & Issues

  • Tests: 33 files in demo/nanochat/base/tests/ cover core engine logic.
  • CI: GitHub Actions (.github/workflows/*) run cargo test, pnpm test, and lint checks.
  • License: MIT, present in LICENSE.
  • No structural red flags: Cargo dependencies are locked, Rust code passes Clippy, TypeScript passes ESLint.
  • Missing docs: Several modules lack inline documentation; only top‑level README covers usage.

The Bottom Line

OpenResearch offers a unified, local‑first platform for research agents with a clear separation of concerns: CLI, compute, and UI. The architecture is modular, with a single entry point and minimal cross‑module coupling, making it straightforward to add new skills or compute backends. It is well‑tested and CI‑protected, though documentation could be expanded. Researchers who need reproducible, isolated experiments on their own hardware will benefit most.