Skip to main content

Apex Ray logo animation

Apex Ray

CI Docs PyPI Python 3.14+ License: Apache-2.0

Local CLI-first AI code review for git diffs with analyzer-backed context.

Full documentation: dobrotacreator.github.io/apex-ray

Apex Ray reads a git diff, builds compact context packs around changed code, runs optional specialist LLM review through local CLIs or direct APIs, verifies findings, and writes Markdown, JSON, HTML, and SARIF reports. It can run locally or in GitHub Actions without depending on a hosted PR-review product.

Apex Ray is pre-1.0. Report schemas and configuration can change while the project is prepared for production use.

Install

One-off run without a persistent install:

uvx apex-ray --help
uvx apex-ray doctor

User-level CLI install:

uv tool install apex-ray
apex-ray --version
apex-ray doctor

pipx install apex-ray is also supported if you use pipx for isolated Python CLI tools.

Quick Start

In a project you want to review:

apex-ray init
apex-ray doctor
git status --short

Inspect and commit the setup files before using the first worktree review for application changes. init writes the repository's exact Apex Ray version to .apex-ray/version and renders managed hooks and agent commands through cached uvx; keep uv available on developer and CI machines.

If Apex Ray later warns that generated agent instructions are outdated, refresh only those managed artifacts with:

apex-ray init --refresh-agent-artifacts --dry-run
apex-ray init --refresh-agent-artifacts

Use apex-ray init --refresh-managed-artifacts to synchronize the lock-derived hook and instructions. Upgrading the lock is explicit: run the target package with uvx, then add --update-version-lock. See configuration for the safe migration flow.

Run a deterministic no-LLM review:

apex-ray review --worktree --no-llm --output .apex-ray/reports/review.md --json .apex-ray/reports/review.json

Run the configured LLM review:

apex-ray review --worktree --llm --output .apex-ray/reports/review.md --json .apex-ray/reports/review.json --html .apex-ray/reports/review.html

Review a branch against the configured base:

apex-ray review --base main --llm

Continue only unreviewed packs from a partial report:

apex-ray review --continue-from .apex-ray/reports/review.json --residual-priority p0 --llm
apex-ray review --continue-from .apex-ray/reports/review.json --only-pack '<pack-id>' --llm

Findings describe the reviewed scope, not necessarily the whole diff. A PARTIAL COVERAGE or INCOMPLETE REVIEW result can therefore have zero findings while work remains. To drain a configured baseline reviewer in bounded batches and fail if it cannot finish:

apex-ray review \
  --continue-from .apex-ray/reports/review.json \
  --reviewer correctness \
  --until-complete \
  --strict-coverage \
  --llm

Use an existing reviewer id; when a project has several reviewers, selecting the intended baseline explicitly also keeps cost and completion semantics predictable. Completion covers only context packs matching that reviewer, so a narrow specialist can finish while unrelated global debt remains. The saved report must contain a review-input snapshot, and any live target must still validate. Ordinary non-completion continuation of an older snapshot-less report remains available with a warning, but completion fails closed and requires a fresh review.

Run the same gate that apex-ray init wires into pre-push:

apex-ray gate pre-push

The gate reviews review.base...HEAD, writes .apex-ray/reports/pre-push.md and .apex-ray/reports/pre-push.json, prints an agent-friendly blocking summary, and exits non-zero when the configured policy fails.

See the full Quick Start and Review Workflow docs for installation requirements, provider setup, report interpretation, continuation commands, cache behavior, and troubleshooting.

What It Does

  • Builds context packs from changed files, symbols, callers, callees, contracts, metadata, and related tests.
  • Runs a language-neutral diff -> context pack -> optional LLM review workflow.
  • Uses enhanced analyzers for TypeScript/JavaScript, Python, Go, and Dart/Flutter today, with Rust planned next.
  • Supports project-specific rules and repo-committed review memory.
  • Runs without LLM calls, with Codex CLI / Claude Code CLI subscriptions, or with OpenAI, Anthropic, DeepSeek, Qwen, Kimi, Z.ai, and custom compatible APIs.
  • Supports project risk policies and independent correctness, security, financial, UX, or other focused reviewers with separate scope, model routing, depth, verification, and budgets.
  • Runs reviewer matrices in GitHub Actions and emits SARIF/code-scanning, step-summary, and downloadable report artifacts.
  • Routes cheap and strong models through profiles.
  • Tracks LLM coverage, skipped packs, partial severity, provider failures, cache usage, and continuation commands.
  • Replays historical GitHub PR review comments for local evals.
  • Writes local telemetry so teams can tune cost, latency, and coverage over time.

Analyzer Coverage

Apex Ray's review pipeline is language-neutral. It is strongest where an analyzer backend can build repository-aware context instead of relying only on diff hunks.

Status Language family Strongest current surfaces
Enhanced analyzer available TypeScript, JavaScript NestJS controllers/providers/modules/guards, DTO/schema validators, route and DI metadata, workspace imports/exports, enum/const fanout, cache and permission surfaces, related tests.
Enhanced analyzer available Python FastAPI routes/dependencies, Pydantic models/settings/validators, SQLAlchemy sessions/transactions, Alembic migrations, async worker/event flows, external HTTP/cloud/Redis adapters, dataclass/TypedDict/Protocol contracts, pytest/unittest tests and fixtures.
Enhanced analyzer available Go Type-aware package loading, repository-relative symbols, changed and deleted symbol ranges, callers/callees, interface contracts, context metadata, syntax-only fallback, and related tests.
Enhanced analyzer available Dart, Flutter Dart Analysis Server symbols, references, call/type relationships, parts and local packages, related tests, bounded Flutter framework metadata, generated-code suppression, and exact literal platform-channel contracts.
Enhanced analyzer planned Rust Repository-aware symbols, callers/callees, contracts, service boundaries, persistence/I/O surfaces, and related tests.
Generic fallback Other reviewable diffs Diff-hunk context, risk signals, project rules, memory, reports, and optional LLM review without a repository-aware symbol graph.

What It Does Not Do

Apex Ray does not replace CI, tests, linters, typecheck, dependency scanners, SAST, or human review. It focuses on diff-aware behavioral review and makes partial coverage explicit.

Documentation

Development

For local development from source:

git clone git@github.com:dobrotacreator/apex-ray.git
cd apex-ray
uv sync --all-groups
npm --prefix analyzer-runtimes/typescript ci
npm --prefix analyzer-runtimes/typescript run build

Useful checks:

uv run coverage run -m pytest -q
uv run coverage report -m
npm --prefix analyzer-runtimes/typescript run typecheck
npm --prefix analyzer-runtimes/typescript test
npm --prefix analyzer-runtimes/typescript run coverage
git diff --check

See docs/development.md and CONTRIBUTING.md.

Maintainers: release automation is documented in docs/development.md.

License

Apache-2.0. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apex_ray-0.1.14.tar.gz (5.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apex_ray-0.1.14-py3-none-any.whl (5.1 MB view details)

Uploaded Python 3

File details

Details for the file apex_ray-0.1.14.tar.gz.

File metadata

  • Download URL: apex_ray-0.1.14.tar.gz
  • Upload date:
  • Size: 5.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for apex_ray-0.1.14.tar.gz
Algorithm Hash digest
SHA256 e28b9a89bd091f89e15b973d9b9c9a11ca0c30ad05ce5aee25c41416b79ca92c
MD5 594293b8f59cd02a8383997fa6d8e0e7
BLAKE2b-256 9497224d63b9423c948a055f59370451db960d7c6834add3d4da2a3f610cd452

See more details on using hashes here.

Provenance

The following attestation bundles were made for apex_ray-0.1.14.tar.gz:

Publisher: publish-pypi.yml on dobrotacreator/apex-ray

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file apex_ray-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: apex_ray-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 5.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for apex_ray-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 aa682d1080c63383637bd64d3c3432ee92cc154cd9a5af68be037710a3047c72
MD5 48ca9cc05853de0ae992ef6c7718ea34
BLAKE2b-256 e32aae24bae0cd07af0cc53ab55578f5449d85af79c0142384ba5bbb8b7529a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for apex_ray-0.1.14-py3-none-any.whl:

Publisher: publish-pypi.yml on dobrotacreator/apex-ray

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page