Your repositories
and your notes,
on your machine.
OSS-CLI indexes the projects you follow and the notes you already keep, then reviews pull requests against what it finds. A GitHub token is the only thing it requires — everything else is a layer you add when you want it.
$ brew install ramanathan1504/oss-cli/oss-cli
Linux and Windows run the same jar — see the install guide.
$ oss-cli review 4234 Add ZstdCompressAction to support configurable compression levels by katstack · open · into 2.x · head 29cccdf 5 file(s), +349 −4 ── Project conventions ── • 1 new source file added, and this project gates its public API (bnd-baseline-maven-plugin). New public types may require baseline or export updates. • Target toolchain is java 17 (minimum [17,18)). • Build rules inherited from org.apache:apache:34. ── Your prior work on this area (5) ── log4j.md (passage 15) 73% match paste-may-30-2026---520pm.md 71% match ── Verdict (qwen2.5-coder:7b, confidence 90%) ── Adds ZStandard (.zst) support to the Rolling File Appender with a configurable compression level. Concerns: • The mapping of compressionLevel=-1 as the Zstd default is provisional and may change if future releases support negative levels. ── What this review used ── ✔ Facts from GitHub ✔ Convention checks against this project's rules ✔ Your own prior work ✔ Local verdict from Ollama ○ Escalation for large diffs — no cloud key configured
How it works
Nothing is mandatory. Every layer is yours to add.
Most tools fail closed — install this, configure that, then maybe you get an answer. OSS-CLI is built as a ladder. It runs on whatever you have connected and tells you, every single time, exactly which sources went into the answer you are reading.
Why it exists
Stop reassembling the same context by hand.
The work of understanding a change is mostly retrieval: what the project's rules are, what was decided last time, which upstream file this actually inherits from. OSS-CLI does that part once and keeps it.
Finds what isn't in the repo
Many projects publish their packaging and API rules in a parent build file, not in the repository you are reading. OSS-CLI follows that chain and tells you where each rule came from.
Re-reviewing is free
Evidence is cached against the head commit, not the pull request number. Nothing changed since last time? Instant. Someone pushed? It re-fetches on its own, with no staleness setting to get wrong.
Your data stays put
Issues, vectors and notes live in SQLite on your disk. Retrieval and embedding run locally. Nothing leaves your machine unless you explicitly escalate a prompt to a cloud model.
Install
Java 17 and a GitHub token. That's the whole requirement.
OSS-CLI ships as a single self-contained jar, so the Linux and Windows steps are the same file Homebrew installs for you on macOS.
brew install ramanathan1504/oss-cli/oss-cli
Homebrew pulls in OpenJDK 17 for you and puts oss-cli on your PATH.
# any token with the `repo` scope — the gh CLI already has one
security add-generic-password -a "$USER" -s github_token \
-w "$(gh auth token)" -U
oss-cli doctor
# Debian / Ubuntu sudo apt install openjdk-17-jre # Fedora / RHEL sudo dnf install java-17-openjdk
mkdir -p ~/.local/share ~/.local/bin
# resolves whatever the newest release is, so this stays correct
JAR_URL=$(curl -fsSL https://api.github.com/repos/ramanathan1504/oss-cli/releases/latest \
| grep -o '"browser_download_url": *"[^"]*\.jar"' | cut -d'"' -f4)
curl -fL -o ~/.local/share/oss-cli.jar "$JAR_URL"
printf '#!/bin/sh\nexec java -jar %s "$@"\n' \ "$HOME/.local/share/oss-cli.jar" > ~/.local/bin/oss-cli chmod +x ~/.local/bin/oss-cli
# add to ~/.bashrc or ~/.zshrc to persist it
export GITHUB_TOKEN="ghp_your_token_here"
oss-cli doctor
winget install EclipseAdoptium.Temurin.17.JRE
# PowerShell $dir = "$env:LOCALAPPDATA\oss-cli" New-Item -ItemType Directory -Force -Path $dir | Out-Null # resolves whatever the newest release is, so this stays correct $rel = Invoke-RestMethod https://api.github.com/repos/ramanathan1504/oss-cli/releases/latest $url = ($rel.assets | Where-Object { $_.name -like "*.jar" })[0].browser_download_url Invoke-WebRequest -Uri $url -OutFile "$dir\oss-cli.jar"
# create oss-cli.cmd somewhere on your PATH
"@echo off`r`njava -jar `"$dir\oss-cli.jar`" %*" |
Out-File -Encoding ascii "$dir\oss-cli.cmd"
$env:Path += ";$dir"
setx GITHUB_TOKEN "ghp_your_token_here"
# open a new terminal, then
oss-cli doctor
First run
# any repository you want to follow oss-cli sync --add apache/kafka # pulls issues and PRs, then builds the search index oss-cli sync --all # review a pull request with everything you have connected oss-cli review 4234 -r apache/kafka
Optional, any time: install Ollama for local
answers and semantic search, then run oss-cli setup to point OSS-CLI at your
own note folders. Skip both and every command above still works.
Reference
The commands you will actually use
Run oss-cli --help for the full list, or oss-cli doctor when
something is not behaving — it checks every prerequisite and names what to fix.
| Command | Needs | What it does |
|---|---|---|
sync --add <repo> | token | Registers a repository and builds its convention profile |
sync --all | token | Pulls issues and pull requests, then updates the search index |
sync --me | token | Indexes your own pull request history and your note folders |
profile | token | Shows a project's language, build, toolchain and enforced conventions |
review <pr> | token | Reviews a pull request using every source you have connected |
prompt <issue> | token | Answers locally, or assembles a complete expert prompt when it cannot |
search <query> | Ollama | Semantic search across everything you have indexed |
triage <issue> | Ollama | Full triage audit for a single issue |
doctor | — | Checks every prerequisite and says exactly what to fix |