Skip to main content

Researcher quickstart

Prerequisites

  • Node.js 22 and pnpm 9.15.4
  • Python 3.12 and uv
  • Rust and wasm-pack for the browser build
  • Chromium when running Playwright

From a clean clone:

pnpm install --frozen-lockfile
pnpm research:setup
pnpm research:dev

research:dev starts Vite at http://localhost:9001/ and the research service at http://127.0.0.1:9013/. Open Runs, select the seed, total timesteps, and episode limit, then start training. The default example uses Stable-Baselines3 PPO with MlpPolicy, seed 42, and 50,000 timesteps.

To run the components separately:

pnpm dev
pnpm research:serve
pnpm research:train -- --seed 42 --timesteps 50000

Only one local job may run at a time. Closing the Runs view does not upload or delete a run. Use Stop to terminate the active process; the environment finalizes its current trajectory as explicitly aborted and truncated.

Run artifacts

Each ignored .exepert/runs/<run-id>/ directory contains the run manifest, episode metrics, a replayable trajectory, summary, dependency/environment versions, and the local model checkpoint. Download links in Runs call the loopback service with the current session token. Imported trajectories are parsed and replayed in the browser; malformed or incompatible artifacts are rejected rather than guessed.

Validation

pnpm typecheck
pnpm test
pnpm research:conformance
pnpm research:test:service
pnpm research:test
pnpm research:train -- --seed 7 --timesteps 256 --max-episode-steps 120
pnpm exec playwright test tests/e2e/research-runs.spec.ts
cargo build --workspace --locked --all-targets
cargo test --workspace --locked
pnpm build
pnpm --dir docs-site typecheck
pnpm.cmd --dir docs-site exec docusaurus build
git diff --check

The direct Docusaurus command intentionally bypasses activity-calendar regeneration when that generated file is outside the task scope.