Skip to content
MLReps

Setup

Set up MLReps

Two steps, the same whatever your code is built with: connect your code, and turn on checks. MLReps reads your code with the CLI, in your pipeline or on your laptop, so your CI and where you deploy change nothing — they only change which snippet a step shows you. Telemetry (data from your running app) is a third thing you can add later, and the product works without it.

What you get· an example repository, not yours
acme/storefrontapp/checkout/page.tsxapp/cart/page.tsxapp/api/checkout/route.tsapp/api/orders/route.tslib/orders/OrderService.tslib/pricing/PriceRules.tslib/invoice.tsprisma/schema.prismaREADSSCREENSAPISERVER CODEDATAcheckoutcart/api/checkout/api/ordersOrderService.tsPriceRules.tsinvoice.tsordersusersOrderService.ts · a query in a loop
  1. 1 Connect a repository
  2. 2 MLReps reads the code
  3. 3 See how it fits together, and what to fix

Step 1 · your first repository

How do you want to connect?

Compare the ways in — and whether your code leaves your machine
 From your terminal or CIGitHub AppRun it yourself
Does your code leave your machine?No — only the result travelsYes, a read-only copyWhat that copy is, and where it goes
  • We copy the repository to our server and analyse it in a container with no network access.
  • Our copy is deleted from our server when the scan ends. Nothing is removed on your side.
  • Read-only: your repository is never written to or changed.
  • What stays in our database is the result — nodes, edges, findings, counts and the commit.
No — nothing is sent at all
What we end up storingThe same thing either way: nodes, edges, findings, counts and the commit they came from. Never your source, and never trained on.Nothing — there is no account and no key on this one
Who has to approve itYou, for this one repositoryWhoever may install an App on the organisationYou, plus whoever reviews a workflow file
Checks on pull requestsPosted by your CI, with your own tokenPosted by the App, on every pull requestPosted by your CI — and that is the whole path
Time to the first mapAbout two minutes, from your own machineOne push after installingThere is no map on this one
Runtime, measuredA separate, optional step in either. Until it is set, Runtime reads not measured — and shows no numbers rather than zeros.Not possible: there is nothing of yours here to attach it to

Not sure? Take the first. It is the only one where you can see exactly what was sent, in your own scrollback, before anything reaches us.

Not sure yet?

Check a public repository first

No account needed. Paste a public repository and it says, before you install anything, how much of your code each way reads — then opens a demo of its Optimize, Architecture and Findings, scanned for real.

Public repositories only. The check reads GitHub’s language counts and file names; the demo that opens after it scans the public code in our sandbox, and keeps the result for a day.

Setup is done without this

See it runningoptional

Your running app sends us data about its requests through OpenTelemetry (a standard way to report what an app is doing), and each request is placed on the route and the files it ran through. It takes a package, a few environment variables and a deploy — nothing above depends on it: the architecture, the issues and the pull-request checks all work without it.

On a Node.js or Next.js repository, npx mlreps telemetry does all of it except the deploy — it creates the key and writes it into the instrumentation file.

It needs a key that sends telemetry, which this page makes once you have an organisation.

Set up telemetry

The command line never writes to your repository

No commit, no branch, no pull request — `npx mlreps telemetry` holds no credential of ours that could. What it does, running on your own machine, is offer to put those lines into your compose file or your Kubernetes manifest: it prints the diff, asks, and leaves the change in your working tree for you to review and commit like any other. Terraform it names and does not edit, because an ECS task definition carries its environment inside a JSON string and a wrong edit to your infrastructure is worse than none.

What arrives, and what does not

Not collected by MLReps: logs, exception messages, URLs, query text, container and custom metrics. They stay where you already collect them.

The line is drawn when a batch arrives, not inside your process: of what your SDK sent, MLReps reads a fixed list of fields — each one checked to be the kind of thing it claims to be, so a query statement in a field meant to hold SELECT is refused — and never reads the rest. An exporter of ours that would apply that list before a batch leaves your network is not built.