Public beta · TypeScript

Review the architecture,
not just the lines.

semarch maps your codebase into modules, services and infrastructure, and comments on every pull request with an interactive architecture diff: what changed, what depends on it, and how the change splits into independent parts.

Free for open source · Private repositories free during the beta

semarch.dev/r/immich-app/immich/pull/31931
Live: immich #31931 — 15 files, 4 modules, 8 independent changes. Drag, zoom, double-click a module.
1 commentper pull request, updated on every push
file:lineevidence behind every edge
0 bytesof your source code stored
~1 minfor a typical repository

How it works

  1. 1

    Install the GitHub App

    On one repository or the whole organisation. Read access to code, write access to pull request comments and checks. Nothing to configure.

  2. 2

    Open a pull request

    semarch indexes the base and the head, recovers modules from your directories and dependencies, and computes the diff on the graph, not on lines.

  3. 3

    Review the change in context

    A short comment says which modules changed and what they touch. One click opens the interactive diff: before, after and the delta on a layout that never jumps.

The comment your reviewers will read first

Modules changed, dependencies added and removed, the unchanged code that depends on what changed, and the pull request split into independent changes. Edited in place on every push, never a wall of bot messages.

  • One comment per pull request, kept up to date
  • A check run that never blocks your merge
  • Tests are listed separately from production code
◇semarchbotcommented

🧭 Architecture diff

15 files changed across 4 modules · 25 new and 1 removed dependencies · 26 unchanged places depend on changed code.

Open the interactive diff →

ModuleAddedRemovedChangedImpacted
immich › src+5·~89
@immich/sdk › src+1·~4·
immich-web › src··~2·
immich › controllers··~12
8 independent changes in this pull request
  • immich › src, immich › controllers: PersonRepository, updateForWritableOwners, PersonService, update +1 · impacts 20
  • immich › src: PeopleResponseSchema, PeopleUpdateSchema, PersonUpdateStrategy, PersonUpdateStrategySchema +2 · impacts 4
  • immich › src: PersonUpdateBaseSchema, PersonUpdateSchema · impacts 2
  • @immich/sdk › src: PeopleResponse, PeopleUpdate, PersonUpdateStrategy
  • immich-web › src: person.service.ts
  • …3 more
semarch.dev · Open source · 0074ee7 · 29 s · “Impacted” is a dependency signal, not proof of a regression.

Built for reviewing code you did not write

Most code in a pull request is now written by an agent. The bottleneck is understanding what it did to the system.

Architecture from the code

Deterministic: parsers and a type-aware index, not a model drawing boxes. Every edge links to the line that creates it.

Semantic zoom

Containers, modules, files and symbols. Start at the level that matters and drill down; changed parts are always visible.

Code ↔ infrastructure

docker-compose services and environment variables connect code to the databases, queues and caches it really uses.

Blast radius

Signature changes and removals reach every dependent; body-only changes reach callers. A signal for reviewers, not an alarm.

Independent changes

A pull request that does three things is shown as three threads, so you can review them one at a time.

HTTP contracts

NestJS, Fastify, Express and Next.js routes, matched to the frontend calls that use them.

Pricing

Open source

Free

Public repositories, forever.

  • Every pull request
  • Interactive diff, public link
  • Fair-use limits per day
Install

Questions

Which languages are supported?

TypeScript and JavaScript today (NestJS, Express, Fastify, Next.js, React). More stacks follow, starting with the ones beta users ask for.

Do you store my code?

No. The repository is fetched into a temporary container for the scan and deleted with it. We keep only the architecture model: paths, symbol names, dependencies and the file:line evidence behind them. Reports expire after 90 days. See security.

Who can see a report for a private repository?

Only people whose own GitHub account can read that repository. They sign in with GitHub and we ask GitHub, not a list of our own.

Which permissions does the GitHub App ask for?

Contents: read; pull requests: write (one comment); checks: write; metadata: read. Nothing else.

Does it use an LLM on my code?

No. The graph, the diff and the comment are computed deterministically.

Can it block my merge?

No. The check run is informational; if a scan fails or hits a limit it ends as neutral with the reason.

See your next pull request as architecture.

Install on GitHub