SiftSift
Open source · self-hosted · zero subscription

AI code review.No seats, no servers.

Sift runs entirely on your own GitHub Actions with your own model keys — no per-seat fees, no external compute.It catches the bugs your linters miss and your reviewers overlook.

Code analysis

The Analytical Eye

Sift's engine doesn't just look for syntax errors.It understands the structural intent of your changes, sifting through layers of dependencies to ensure logical integrity.

public static currentPanel: FolderStructurePanel | undefined;
	private readonly _gitleaksTest = 'ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
	private readonly _panel: vscode.WebviewPanel;
	private _disposables: vscode.Disposable[] = [];
	private readonly _extensionUri: vscode.Uri;

	private constructor(panel: vscode.WebviewPanel, extensionUri: vscode.Uri) {
		this._panel = panel;
		this._extensionUri = extensionUri;
		this._panel.onDidDispose(() => this.dispose(), null, this._disposables);

		// Set the tab icon
		this._panel.iconPath = {
			light: vscode.Uri.joinPath(this._extensionUri, 'src', 'logos', 'ghost.svg'),
			dark: vscode.Uri.joinPath(this._extensionUri, 'src', 'logos', 'ghost.svg')
		};
	}

Sift Review

6 issue(s) found across 4 file(s)

CAUTION!
5 bugs1 security issue

6 issue(s) across 4 file(s) - full breakdown

eslint.config.mjs

LineSeverityIssue
24BUG 1Disabled strict equality checks

package.json

LineSeverityIssue
13BUG 1Typo in main entry point path

src/extension.ts

LineSeverityIssue
10BUG 1Typo and syntax error in command registration
11BUG 1Inverted logic and potential dereference
25SECURITY 1Hardcoded potential secret (gitleaks test)

src/test/extension.test.ts

LineSeverityIssue
12BUG 1Incorrect test assertion

Feedback loops

GuidedAI Training

Vector embeddings

Custom modelembeddings

Bring your own embedding model. Sift embeds each pull request’s file diff so reviews get richer semantic context around what changed. The more you use it, the more that context stacks up.

Diff embedding flow
PR file diff
LiteLLMembed()
Context stack

Use standard GitHub reactions to refine Sift's underlying models.Every emoji is a signal that tailors the AI specifically to your codebase's unique soul.

Foundations

Built forthe details

Open source

ghcr.io/sahilsaleem2907/sift:slim

BUGSECURITYWARNINGSUGGESTIONINFORMATIONAL

Open source and fully customizable. Ship your own review stack from the official GHCR image. Every finding is tagged by severity, from blocking bugs and security issues down to warnings, suggestions, and FYIs.

Two-model review

Primary
per-file review
AnthropicOpenAIGoogle
Review
critic & holistic
OpenRouterOllamaDeepSeek
CriticHolisticAgentic

A two-model pipeline: a primary model reviews each changed file while a dedicated review model runs the critic and holistic passes. Dial effort from a fast single pass up to a full agentic loop.

20+ linters

PythonTypeScriptGoSemgrepCodeQLEmbeddings

Twenty-plus linters across major languages, plus Semgrep rule packs, CodeQL security queries, and vector embeddings so diffs are read with semantic context, not just syntax.

Zero config

.github/workflows/sift.yml

Drop in one YAML file. Sift runs on every PR automatically via GitHub Actions within your own github organization, no servers, no maintenance.

Branch protection

mainProtected
sift/reviewRequired
Merge blocked until review passes

Optionally gate your default branch on Sift's review. The sift/review check blocks a merge only when Sift finds bugs or security issues while clean pull requests pass straight through.

Get started

Ready to Sift through the noise?

Get Started