Install
npx skills add Oldcircle/geo-sleuthgeo-sleuth is a standard Agent Skill: give it a photo and the prompt “find where this photo was taken”, and it reads SKILL.md, runs its bundled scripts, and combines OpenStreetMap geometry, elevation skylines, satellite imagery, and street view to finally return the camera position, shooting direction, and a satellite evidence image (with coordinates ± radius, camera heading, and graded confidence).
Who it's for
- Users who want to geolocate a photo, especially for analysis, investigation, or verification tasks.
- Users working with an agent that can run shell commands, on a machine with Python 3.10+ and uv installed; each script declares its own dependencies, and
uv runinstalls them automatically on first use. - Not suitable if: your agent cannot execute shell commands, or you lack Python 3.10+/uv and therefore cannot run it per the official instructions. The official evidence does not state any restrictions on photo content type, language, or region, nor whether network access to OSM, satellite imagery, or street view services is required — these are unknowns before you try it, so go by actual runtime behavior.
Your first attempt in 3 minutes
There is only one recommended main path: install it into your agent with the official skills CLI.
- Prerequisites: Node/npx, Python 3.10+, uv, and one of the officially listed agents (Claude Code, Codex, Cursor, Gemini CLI, OpenCode, or GitHub Copilot) on your machine.
- Install location: run in a terminal
npx skills add Oldcircle/geo-sleuth
and choose your agent when prompted. The official source also provides one-shot commands for installing into all six agents at once and for user-level installation: npx skills add Oldcircle/geo-sleuth -g -a claude-code -a codex -a cursor -a gemini-cli -a opencode -a github-copilot -y (regarding install paths, ~/.agents/skills/ is read by Codex, Cursor, Gemini CLI, OpenCode, and GitHub Copilot, while Claude Code uses ~/.claude/skills/).
- Trigger a low-risk task: hand the agent a photo whose approximate origin you know, for verifying results, and say “find where this photo was taken”. The agent will read SKILL.md and run the scripts; running the scripts may execute commands and access external imagery services, and
uv runwill install dependencies on first use — confirm you accept these side effects before running. - Success signal: the agent returns the camera position with coordinates ± radius, camera heading, a satellite evidence image, and graded confidence. Compare it against the location you already know to judge whether the fix is credible. This is an analysis task; the evidence does not state whether the workflow writes to or modifies your files — that remains unknown.
Use cases
- Verify a photo's claimed location: a friend or the internet says a photo was taken somewhere. Hand it to the agent and say “find where this photo was taken”. The agent runs the full localization workflow and returns the camera position, heading, and a satellite evidence image with graded confidence; compare it against the claimed location, and if confidence is low or the position doesn't match, the photo's claim is suspect.
- Narrow down a set of candidate locations: when you have several photos of the same scene and only know the approximate area, run the same workflow on each photo one by one. Each produces coordinates ± radius and heading output; use the intersection of multiple results as the focus for your next manual check. The evidence only describes what is returned for a single photo — the exact method for cross-referencing multiple photos does not appear in the official documentation, so that step requires your own judgment.
Boundaries of use
- Environment prerequisites: Python 3.10+, uv, and an agent that can run shell commands. Installation is per-agent and platform-specific: Codex/Cursor/Gemini CLI/OpenCode/GitHub Copilot read
~/.agents/skills/, while Claude Code uses~/.claude/skills/— don't assume one installation works for every agent. - Side effects and confirmation points: running the scripts executes shell commands, and
uv runinstalls dependencies on first use; the scripts may access external data sources such as OSM, satellite imagery, and street view — the official description mentions the use of these data sources but does not itemize each script's network behavior, so confirm knowingly before running. - Not stated officially: whether user files are read, written, or modified; any boundaries on photo language/region/content type; rate or quota limits; and what exactly happens when localization fails. All of these are unknowns — do not speculate based on this page.
- Result quality: output includes graded confidence and coordinates ± radius. Localization is inherently probabilistic; treat any result according to the evidence image and confidence level, not as a definitive conclusion.