Skip to main content
RELAI works best with Python, TypeScript, and Go agent projects that can run locally and are committed to git. TypeScript and Go agents are supported experimentally.

Compatible projects

Before running relai init, make sure that:
  • the project is a git repository with at least one commit.
  • the project has a clear agent entrypoint, function, command, graph, or framework object.
  • local path dependencies may point outside the repo snapshot RELAI uploads during compatibility analysis, as long as they are clearly declared in repo-visible dependency metadata and remain available in your local environment for later init/runtime steps.
  • runtime secrets come from environment variables or local env files, not committed source.
  • the behavior you want to test can run without a production-only hosted boundary.

Python agents

  • the RELAI simulator virtual environment can run Python 3.11 or newer.
  • dependencies are declared in files such as pyproject.toml, requirements.txt, uv.lock, poetry.lock, setup.py, setup.cfg, Pipfile, pdm.lock, or Conda environment files.

TypeScript agents (experimental)

  • Node.js 20 or newer is available on PATH.
  • dependencies and scripts are declared in package.json and, where applicable, the project’s package-manager lockfile.
  • the project’s package manager — npm, pnpm, Yarn, or Bun — is available on PATH.

Go agents (experimental)

  • Go 1.24.4 or newer is available on PATH.
  • dependencies are declared in go.mod and, where applicable, go.sum.

Frameworks

RELAI is framework-agnostic. During init it resolves the project’s exact dependencies and generates a project-owned adapter instead of selecting a maintained framework recipe. Every adapter must support end-to-end turns. Named targets, tool overrides, tool events, and framework-native components are optional capabilities and are enabled only when init can verify them locally. Opaque or hosted frameworks can still support end-to-end simulation when the project exposes a runnable boundary. If init cannot expose a required boundary within its permissions, it explains the application change needed to continue.

Limits on file sizes and arguments