Two ways to start, depending on whether you want to sign up.

CLI Web app
Sign-up needed No Yes
Finds issues Yes Yes
Suggests fixes No Yes
Keeps a history No Yes
Best for Trying it out on local code Ongoing work on a repository

Option 1: CLI, no account

The fastest way to see what the tool finds. Nothing to install and nothing to sign up for:

npx code-evolution-lab analyze

That scans the current directory and prints a summary. It also writes a JSON report, a Markdown report, and a score file to .codeevolution/.

Narrow it down when a whole project is noisy:

# Only high severity and above
npx code-evolution-lab analyze --severity high

# Only one category
npx code-evolution-lab analyze --category loop

# Print JSON instead of writing files
npx code-evolution-lab analyze --json --no-files

The CLI detects issues and reports them. It does not generate fixes — that happens server-side and needs an account. See CLI Commands for the full command set and Rule Reference for the 35 rules it runs.

Track improvement over time

Save a baseline, make changes, then compare:

npx code-evolution-lab scan      # save a snapshot
# ... make your changes ...
npx code-evolution-lab compare   # exits non-zero if the score dropped

Because compare fails on a regression, it works as a CI gate without any account or API key.

Option 2: Web app, with an account

Registering gets you the parts the CLI cannot do: generated fixes, and a saved history.

  1. Register at codeevolutionlab.com.
  2. Point it at a repository.
  3. Watch the scan run — progress streams live as each file is analysed.
  4. Review the issues found, each with ranked candidate fixes.

Every analysis is saved: the run itself, the issues found, and the solutions generated for them. You can come back to a previous analysis rather than re-running it.

What you get on the free tier

Free Pro
Analyses per day 1 100
Analyses per month 30 100
Connected repositories 1 Unlimited
Solutions per issue 3 5
Private repositories No Yes

All 11 detectors run on both tiers — there is no detector-level gating. See Pricing Tiers for the full comparison.

What a finding looks like

Given this:

async function getOrdersWithUsers() {
  const orders = await Order.findAll();
  for (const order of orders) {
    const user = await User.findByPk(order.userId);
    order.user = user;
  }
  return orders;
}

Both the CLI and the web app flag an N+1 query — one query to fetch the orders, then one more per order. The CLI reports it with a severity and a location. The web app additionally offers candidate rewrites, such as batching the user lookup into a single query before the loop.

Next steps