Antra
How it worksStar2Get Started
Star2
Antra
How it worksStar2Get Started
Star2
Documentation
  • Introduction
  • Installation
  • Quick start
  • Configuration basics
  • Monorepos
  • Trust boundaries
  • Findings and severity
  • Schema providers
  • Suppressions and baselines
  • antra init
  • antra scan
  • antra sync
  • antra doctor
  • antra baseline
  • antra trace
  • antra watch
  • antra fix
  • antra query
  • antra studio
  • Studio
  • Launching Studio
  • Reading the graph
  • Configuration reference
  • BG-001: Server-to-client leak
  • BG-002: Unvalidated input
  • BG-003: Opaque object pass
  • BG-004: Secret in markup
  • GitHub Actions
  • Introduction
  • Installation
  • Quick start
  • Configuration basics
  • Monorepos
  • Trust boundaries
  • Findings and severity
  • Schema providers
  • Suppressions and baselines
  • antra init
  • antra scan
  • antra sync
  • antra doctor
  • antra baseline
  • antra trace
  • antra watch
  • antra fix
  • antra query
  • antra studio
  • Studio
  • Launching Studio
  • Reading the graph
  • Configuration reference
  • BG-001: Server-to-client leak
  • BG-002: Unvalidated input
  • BG-003: Opaque object pass
  • BG-004: Secret in markup
  • GitHub Actions

Introduction

A static analysis security linter for React Server Components and the Next.js App Router.

Antra is a static analysis security linter for React Server Components and the Next.js App Router. It finds the point where a value crosses a trust boundary without validation.

The problem it targets

The App Router makes it easy to move a value from the server to the client, and easy to do it by accident. A field read from your data layer gets returned from a Server Component, or handed to a Server Action, or interpolated into markup. Each of those is a boundary where "the server already checked that" stops being true.

Nothing in the type system catches this. An object crossing into client props is well-typed whether or not the fields inside it were meant to travel.

What Antra does

It parses your project into syntax trees, classifies what each file is, and follows concrete values from where they enter your program to the boundary they cross. The result is a finding that names the rule, the file and line, the sink expression, and the path the value took to get there.

Because the analysis is static, it runs locally: a scan makes no network calls, sends no code off the machine, and needs no running application to instrument. Only init and sync may reach out, and only to a Supabase project or OpenAPI URL you configure.

The pipeline

  1. Scan: parse the project and classify every file's boundary role.
  2. Detect: trace values into Client Component props, Server Action return values, and route handler responses, and check what Server Actions and route handlers accept.
  3. Understand: read the path a value took, per finding.
  4. Fix: sanitize, suppress with a reason, or baseline what you accept.

Scope

Antra looks at how values move across boundaries in your own code. It is not a dependency scanner, not a secrets scanner, and not an infrastructure audit. Being clear about that matters more than a longer feature list. See findings and severity before you decide where it fits in your pipeline.

Where to go next

  • Installation
  • Quick start
  • Trust boundaries: the model the rules are built on
Next
Installation
On this page
  • The problem it targets
  • What Antra does
  • The pipeline
  • Scope
  • Where to go next