Getting started
One command to the first result. Node 22.18 or newer; nothing to sign up for.
Scan a URL
npx geopilot scan https://www.example.comGEO fetches /robots.txt first and respects it for its own user agent, reads the sitemap, and crawls same-origin pages through server HTML (25 pages, depth 3 by default). Private and local addresses are only fetched when you name them yourself.
Scan a repository
cd my-next-app
npx geopilot scan .On a Next.js App Router or static HTML repository, findings carry a source location and a provenance level. Without a URL, rules whose HTTP sub-checks cannot run are not_evaluated, so the display is usually insufficient evidence. That is by design: a repository-only scan finds and traces problems; it does not claim readiness.
Both: the strongest evidence
pnpm next dev --port 3000 &
npx geopilot scan . --url http://127.0.0.1:3000Configure the facts GEO will never guess
npx geopilot init --origin https://www.example.com --language eninit previews geo.config.json and writes it only after you approve. GEO never infers your origin, language, crawler policy or app identifiers; canonical checks and origin-dependent fixes stay unavailable until you declare them.
Fix
npx geopilot fix # dry run: diffs, preconditions, required verification
npx geopilot fix --apply # safe fixes
npx geopilot fix --apply --approve G1-b75653d6 --serveGuarded fixes need their own id; --yes never approves one. Fixes that require runtime verification (V4) are reported as applied_unverified (exit 6) unless GEO starts your dev server itself after the write — see Fixes & verification. Every apply can be undone with geopilot fix --rollback <runId>.
Use it from your agent
/plugin install geopilot --marketplace moelzanaty3/geopilotThen run /geopilot:scan in Claude Code. It reads your code on any framework, with no package install or running site, and gives you a code score and the fixes to do first. For GitHub Copilot CLI, OpenCode, OpenAI Codex and team installs, see Agent plugins.
In CI
npx geopilot@0 scan https://preview.example.com --format markdown --output geo.md --fail-on highGates are opt-in: nothing fails unless you pass a threshold. An unreachable target exits 0 with an incomplete assessment unless you add --fail-on-incomplete (exit 4).