An open API service indexing awesome lists of open source software.

https://github.com/cdilga/roger-reviewer


https://github.com/cdilga/roger-reviewer

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# Roger Reviewer

> Local-first pull request review with durable sessions and explicit approval
> gates before any GitHub write.

## Status (As Of April 7, 2026)

Roger Reviewer is in active `0.1.0` implementation.

What is real in this repo right now:

- local-first CLI/domain workflow is under active implementation
- OpenCode is the blessed continuity path for the quickstart flow
- extension support is optional and launch-focused, not the source of truth
- safety model is explicit: no automatic posting and no hidden mutation path

What is not fully shipped yet:

- no GA signed installer distribution channel yet
- no automatic in-place binary mutation path from `rr update` (manual install step remains explicit)
- no in-extension approval or posting controls

## Who This Is For

Primary audience for this slice:

- engineers reviewing GitHub PRs from terminal-first workflows
- teams that want durable local review continuity rather than one-shot prompt output
- users who require explicit approval gates before any remote write action

## Product Shape (Current Slice)

Roger Reviewer is:

- local-first (`SQLite` state is authoritative)
- session-aware (`review`, `resume`, `refresh`, `return`, `sessions`)
- approval-gated (draft + approve + post boundaries are explicit)
- continuity-focused (OpenCode fallback stays real)

Roger Reviewer is not:

- an automatic bug-fix bot by default
- an automatic GitHub posting bot
- a daemon-centered architecture

## Support Snapshot

| Surface | Current reality | Notes |
| --- | --- | --- |
| Published `rr` CLI install | Available | One-line release installer ships on GitHub Releases |
| `rr` CLI from source | Available for local/dev use | Commands are implemented in `packages/cli`; run via `cargo run` |
| OpenCode provider flow | Blessed quickstart path | Primary documented continuity path for this slice |
| Codex provider path | Bounded/non-primary | Exists in command surface but is not the primary supported onboarding lane |
| Browser extension | Optional launch helper | PR-page launch panel; local Roger remains authoritative |
| In-extension posting controls | Not shipped | Approval/posting stays local and explicit |

## Install Reality

Installer/update metadata contracts now exist in-repo:

- `scripts/release/rr-install.sh` and `scripts/release/rr-install.ps1` consume
`release-install-metadata-.json` plus matching core/checksum assets
- `rr update` validates published release metadata and fails closed for
local/unpublished builds without embedded release markers

Public one-line installer entrypoints (CLI base product):

- Stable/latest (Unix):
- `curl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | bash`
- Stable/latest (PowerShell):
- `& ([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.ps1').Content))`
- Pinned release (Unix, example `2026.04.07`):
- `curl -fsSL https://github.com/cdilga/roger-reviewer/releases/download/v2026.04.07/rr-install.sh | bash -s -- --version 2026.04.07`
- Pinned release (PowerShell, example `2026.04.07`):
- `& ([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://github.com/cdilga/roger-reviewer/releases/download/v2026.04.07/rr-install.ps1').Content)) -Version '2026.04.07'`

Optional follow-on workflow (separate from base CLI install):

- bridge and extension packaging assets are optional; base `rr` install does not require them
- use optional lanes only when browser launch/helper integration is needed
- the browser extension is not shipped as a release artifact in this slice; pack/sideload it from source if you need the PR-page launch panel

Safe isolated install example:

```bash
mkdir -p "$HOME/.local/rr-test-bin"
curl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | \
bash -s -- --install-dir "$HOME/.local/rr-test-bin"
alias rr-rel="$HOME/.local/rr-test-bin/rr"
```

Source-run onboarding remains the developer path:

1. install Rust toolchain
2. clone repo and run `rr` through Cargo
3. keep state local (default `.roger/` store)

Optional env overrides:

```bash
export RR_STORE_ROOT="$PWD/.roger"
export RR_OPENCODE_BIN="opencode"
```

## Quickstart (Blessed Local Path)

### 1. Prerequisites

- a Git repository with a GitHub `origin` remote
- OpenCode CLI available on `PATH` (or `RR_OPENCODE_BIN` override)

### 2. Install `rr`

Stable/latest:

```bash
curl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | bash
```

Safe isolated install:

```bash
mkdir -p "$HOME/.local/rr-test-bin"
curl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | \
bash -s -- --install-dir "$HOME/.local/rr-test-bin"
alias rr="$HOME/.local/rr-test-bin/rr"
```

### 3. Check the installed CLI

```bash
rr --help
rr update --dry-run
```

### 4. Start a review session (OpenCode)

```bash
rr review --pr 123 --provider opencode
```

### 5. Inspect local state

```bash
rr status
rr findings
rr sessions
rr search --query "null pointer"
```

### 6. Continue the same review safely

```bash
rr resume --pr 123
rr refresh --pr 123
rr return --pr 123
```

If candidate sessions are ambiguous, Roger fails closed and requires explicit
selection (for example `--session `).

## Developer Path (Run From Source)

Prerequisites:

- Rust toolchain

Run `rr` from source:

```bash
cargo run -p roger-cli --bin rr -- help
```

Optional shell alias:

```bash
alias rr='cargo run -q -p roger-cli --bin rr --'
```

## Optional Browser Launch Surface

The extension is optional and currently launch-oriented.

Current source artifact:

- `apps/extension/manifest.template.json`

Current panel actions on GitHub PR pages:

- `Start`
- `Resume`
- `Findings`
- `Refresh`

Bridge dispatch order:

1. Native Messaging (`com.roger_reviewer.bridge`)
2. `roger://launch/...` fallback

Launch-only honesty in this slice:

- no in-extension authoritative local status mirror
- no in-extension approval/posting controls

## Agent Mail Watch Over ngrok

For a browser-readable, read-only Agent Mail view over ngrok, expose the local
watcher instead of the raw Agent Mail MCP endpoint.

Start the watcher:

```bash
AGENT_MAIL_WATCH_AGENTS=BlueCat scripts/run_agent_mail_watch.sh
```

It prints the local URL, the Basic Auth username (`watch`), the generated
browser password, and the watcher port.

Tunnel the watcher port, not Agent Mail's `8765` MCP port:

```bash
ngrok http 8781
```

The watcher proxies read-only inbox fetches to Agent Mail server-side, so your
phone browser never needs the Agent Mail bearer token and never talks to the
raw SSE/MCP endpoint directly.

## Safety Model (Non-Negotiable)

- No automatic GitHub posting.
- No automatic bug-fixing unless explicitly enabled by the user.
- No raw direct review writes outside Roger's approval/posting flow.
- Mutation-capable flows must be explicit and visibly elevated.

## Known Boundaries

- `rr update` currently validates metadata and emits a manual install command;
fully automatic binary replacement is intentionally deferred
- extension readback/status parity is not shipped yet
- support claims prioritize the OpenCode continuity lane
- degraded continuity states are expected to fail closed where ambiguity exists

## Repo Orientation

| Path | Purpose |
| --- | --- |
| `packages/cli` | `rr` command implementation |
| `packages/app-core` | Domain model, finding lifecycle, approval/posting contracts |
| `packages/session-opencode` | OpenCode session linkage and return model |
| `packages/bridge` | Native Messaging + URL launch bridge |
| `apps/extension` | GitHub PR launch panel |
| `packages/storage` | Canonical local store and retrieval |

## Canonical Docs

- [`AGENTS.md`](AGENTS.md)
- [`docs/PLAN_FOR_ROGER_REVIEWER.md`](docs/PLAN_FOR_ROGER_REVIEWER.md)
- [`docs/HARNESS_SESSION_LINKAGE_CONTRACT.md`](docs/HARNESS_SESSION_LINKAGE_CONTRACT.md)
- [`docs/RELEASE_AND_TEST_MATRIX.md`](docs/RELEASE_AND_TEST_MATRIX.md)