Architecture

Overview

┌─────────────────────────────────────────────────────┐
│ CLI (@flpstudio/lgtm)                               │
│                                                      │
│  git diff → AI grouping (GPT) → deep analysis       │
│       ↓         ↓                    ↓               │
│  raw diff    review groups     bug flags + notes     │
│                    ↓                                  │
│            Express server (:3456)                    │
│                    ↓                                  │
│            React review UI (Vite)                    │
│                    ↓                                  │
│            Chat (Claude) + code edits               │
└─────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────┐
│ Workspace (Tauri desktop app)                        │
│                                                      │
│  Rust backend: repo management, process spawning    │
│  React frontend: repo list, branch selection, UI    │
│  Spawns CLI review servers per-repo                 │
└─────────────────────────────────────────────────────┘

Project structure

/                        Root package (@flpstudio/lgtm)
├── src/                 CLI source (TypeScript)
│   ├── server/          Express review server
│   └── ...              Diff, grouping, analysis logic
├── workspace/           Tauri desktop app
│   ├── src/             React frontend
│   │   ├── App.tsx      Main app shell
│   │   ├── features/    Feature-specific components
│   │   └── components/  Shared UI components
│   └── src-tauri/       Rust backend
├── docs/                This documentation site
└── scripts/             Build and release scripts

AI pipeline

  1. Diff extractiongit diff base...HEAD produces the raw diff
  2. Grouping — GPT organizes files into logical review groups based on semantic relationships
  3. Deep analysis — parallel agents (quality, architecture, custom) analyze each group
  4. Serving — results are served via a local Express server with a React frontend
  5. Chat — Claude handles interactive Q&A with full diff context

Technologies

ComponentTechnology
CLITypeScript, Express, Vite
AI (grouping/analysis)OpenAI GPT
AI (chat)Anthropic Claude
Desktop appTauri v2 (Rust + React)
Diff renderingCustom diff viewer with syntax highlighting
PersistencelocalStorage (chat), filesystem (reviews)

Release process

Releases are managed by release-please:

  1. Use Conventional Commits for all commit messages
  2. On push to main, release-please opens/updates a release PR
  3. Merging the release PR creates a git tag
  4. The tag triggers the build + publish workflow

Version is tracked in package.json (source of truth) and synced to workspace/package.json and workspace/src-tauri/tauri.conf.json.