⚡ macOS · Linux · Docker · Free · Open Source

Your PRs, reviewed automatically.
Posted to GitHub.

Heimdallm runs silently in your menu bar, watches your GitHub review requests, and submits AI-generated code reviews — powered by Claude, Gemini or Codex.

⬇️ Download View on GitHub
🔔PR arrives

Someone requests your review on GitHub

🤖AI reviews

Heimdallm fetches the diff and runs your AI agent

📝Posted to GitHub

Review submitted as your account with severity rating

🔔You're notified

Native macOS notification with a link to the review

Everything you need. Nothing you don't.

Heimdallm is a small, focused tool that does one thing well.

🔍

Automatic detection

Polls GitHub for review-requested:@me. No setup needed — uses your gh CLI token.

📬

Posts to GitHub

Reviews are submitted as proper GitHub PR reviews — not stored locally. REQUEST_CHANGES on high severity, APPROVE otherwise.

🧠

Your AI, your rules

Works with Claude, Gemini and Codex. Configure which agent reviews which repo. Pass custom CLI flags.

✍️

Custom prompts

Define review profiles: security audit, performance, architecture. Use {diff} {author} {link} placeholders.

📊

Review statistics

Track reviews over time: severity distribution, top repos, reviews per day, average issues per review.

💬

Feedback modes

Single: one consolidated review comment. Multi: one comment per issue + summary. Configurable globally or per repo.

🐳

Docker deployment

Run headless on any server. Pre-built image with Claude, Gemini, Codex and OpenCode bundled. Configure via environment variables.

🖥️

macOS & Linux

Menu bar on macOS. Native desktop on Linux (.deb, .rpm, AppImage). No Electron, no browser — just a Go daemon and a Flutter UI.

What a review looks like on GitHub

Posted as a proper GitHub review under your account, with file-level issues and an overall severity badge.

🤖
Heimdallm AI Review reviewed just now via heimdallm · Reviewed by claude
HIGH

"Migration from kubernetes-labeled runner to generic self-hosted runner with kubectl port-forward for registry access. The approach is functional but has reliability and security concerns around the port-forward lifecycle and kubeconfig handling."

🔴 .github/workflows/docker-publish.yml:138 — Port-forward process (PF_PID) is only killed on the happy path. If docker push fails, the port-forward process leaks.
🔴 .github/workflows/docker-publish.yml:121 — KUBE_CONFIG secret is base64-decoded and written to ~/.kube/config. If the job crashes before cleanup, credentials persist on the runner.
🟡 .github/workflows/docker-publish.yml:128 — LOCAL_PORT is defined as a string env var but used in numeric contexts. Two concurrent builds will race on port 5050.

Built-in review profiles

Choose a preset or write your own with {diff} {title} {author} {link} placeholders.

🔍

General Review

Correctness, maintainability, error handling, code style

🔒

Security Audit

OWASP Top 10, injection, hardcoded secrets, auth flaws

Performance

N+1 queries, allocations, blocking I/O, O(n²) algorithms

🏛️

Architecture

SOLID violations, coupling, separation of concerns

📝

Docs & Style

Docstrings, naming, magic numbers, conventions

Custom

Write your own with placeholders and optional full template

Up and running in minutes

1

Download

Grab the latest DMG from GitHub Releases.

⬇️ Download .dmg
2

Drag to Applications

Open the DMG and drag Heimdallm to the Applications folder.

3

Remove quarantine

Run once in Terminal — macOS security requirement for unsigned apps:

xattr -cr /Applications/Heimdallm.app

Requires macOS 13+ · gh CLI authenticated · Claude/Gemini/Codex CLI installed