Open-source AI code review

Your agent writes the code. arnx checks the behavior.

A CLI for investigating changes with executable evidence.

arnx reads a code change, investigates suspected bugs, and generates and runs targeted tests in Docker. A failure is evidence to inspect. You decide whether the behavior is wrong and which tests to keep.

From a change to a regression check

arnx setup understands the project and proposes its test environment. arnx review investigates the selected change and runs generated tests. Use arnx triage to review findings and answer questions, then arnx accept <id> to retain meaningful tests.

You or your coding agent change the production code. arnx prompt provides a handoff; arnx check runs accepted tests on the working tree, without new model calls.

What a result means

A passing check means the accepted tests passed in that environment. It does not establish that the entire change is correct. Read the review’s coverage gaps, untested files, unresolved questions, and incomplete runs.

Generated tests can be wrong or fragile. Developer validation matters even when a failure repeats and another model agrees. Accepted files are pinned so editing a test to make it pass is detected; inspect deliberate test changes before accepting them again.

Local execution, external inference

Tests run in local Docker containers. Diffs, selected files, generated tests, and test output can go to model providers. Bring your own supported API keys; your coding-agent subscription should not be assumed to cover these calls.

BYOM, Cloud, or Enterprise

Tool calls, Docker tests, the before/after check, and report generation run on your machine. arnx cloud receives the diff, the files the agent reads, the tests it writes and their output, then passes them to its model providers.

Get started with Cloud ↗

Where it fits

Run the CLI before opening a pull request or while reviewing a change. It complements your existing tests and human review. Current runners cover Python/pytest, JavaScript and TypeScript with vitest, jest, node:test or bun, and Rust with cargo-nextest (early). Environment setup still needs validation for your repository.

Rust is the least-tested runner. First setup is slow because the image compiles dependencies and test targets, and it can take several GB. Try it on your crate, swap models, and tell us what breaks.

More languages are planned. Want to see more here? ↗

Read the quickstart · Read the case study · Understand the boundaries