What this course is
Get oriented before you designate your first target.
AstraOSINT is a professional-grade, web-based GEOINT console — a single tactical interface for satellite imagery analysis, target tracking, and route planning, fully client-side with no backend and no accounts. This course doesn't re-explain every button — the README already does that. It teaches the workflow a professional researcher follows so a mission console actually turns into a usable intel log.
./run.sh once and seen the console load, and now wants a repeatable process for a real research pass instead of clicking around.Launching the console
One script, one local server, zero accounts.
git clone https://github.com/hackops-academy/AstraOSINT.git cd AstraOSINT chmod +x run.sh ./run.sh # choose 1) Start Local Server
The launcher starts a Python HTTP server on port 8080 and opens http://localhost:8080 automatically. Because everything runs client-side and only talks to public OSM/OSRM APIs, there's no account setup and no data leaves your machine except standard map/geocoding requests.
http://localhost:8080 once, then get in the habit of relaunching run.sh at the start of every research session rather than leaving a stale tab open across days — a fresh load means a fresh HUD state.The tactical HUD
Know what the status bar is telling you at a glance.
The top status bar runs live the whole session: UTC clock, cursor lat/lng, zoom level, and connection status. The Mission Console below it is tabbed — Search, Layers, Intel, Route — instead of one long scrolling menu.
Ctrl/Cmd + KEscFeedback comes through toast notifications, not blocking alert() popups — so you can keep working while a save or export confirms in the corner. The ambient scanline/vignette/radar-sweep overlay respects prefers-reduced-motion if that matters for your setup.
Map layers
Pick the layer that answers the question you're actually asking.
| Layer | Best for |
|---|---|
| Street | Orienting to addresses and named landmarks |
| Satellite | Visual confirmation of structures, vehicles, terrain features |
| Terrain | Elevation, natural cover, approach routes |
| Tactical (dark) | Long working sessions, low-glare console feel |
Designating targets
Every intel entry starts with one click.
Click anywhere on the map to designate a target — AstraOSINT reverse-geocodes it instantly into a real-world address in the Intel tab. From there:
- Name the target.
- Pick a tag (see Module 05).
- Hit Save Target — it's logged to both the map and the sidebar list.
The bottom-left coordinate readout is persistent and has one-click copy-to-clipboard — use it when you need to hand a raw lat/lng to another tool without leaving the console.
Tagging & notes
A log of pins isn't intel — a tagged, annotated log is.
WIFI CCTV ENTRY VEHICLE PERSON CUSTOM
Each tag gets its own icon on the map and in the list, so a dense area is scannable at a glance instead of a wall of identical pins. Every target also takes a free-text note, and can be deleted with one click if it turns out to be wrong.
Search
Get to the right place fast, without losing context.
Global place/address search returns a real result list — not just a jump to the first match — so you can confirm you've picked the right location among several similarly-named ones before committing.
Ctrl/Cmd + K jumps into search from anywhere in the console, so you never have to hunt for the tab mid-session — build the muscle memory early.Tactical routing
Understand how two targets actually connect.
Plot a road route between any two logged targets with live distance/time estimates. When road data isn't available for a segment, AstraOSINT automatically falls back to a dashed line-of-sight indicator instead of failing silently.
Export & import
Your intel log outlives the browser tab.
Export the full intel log as JSON for backup or to hand off to another machine or teammate; import it back the same way to resume exactly where you left off.
Clustering & dense target sets
Keep a crowded map readable.
The marker clustering toggle groups nearby targets into a single expandable cluster marker once a set gets dense — turn it on for a wide-area survey with dozens of pins, and off again when you need to work precisely at street level.
Tech stack & limits
Know what you're actually depending on.
| Component | Technology |
|---|---|
| Mapping engine | Leaflet.js |
| Clustering | Leaflet.markercluster |
| Routing | Leaflet Routing Machine + OSRM |
| Geocoding / search | OpenStreetMap Nominatim |
No frameworks, no build step, no tracking — but also no offline mode: routing and search depend on the public OSM/OSRM APIs being reachable, and are subject to those services' own rate limits and Terms of Service.
The full methodology
How the modules above chain into one research session.
./run.sh, confirm LINK ESTABLISHEDPractice & next steps
Rehearse the workflow somewhere low-stakes.
- Pick any public, well-known landmark area and designate five targets around it using all five default tags at least once each.
- Route between two of them and deliberately pick a pair likely to hit a line-of-sight fallback (e.g. across water or restricted land) to see that behavior firsthand.
- Export the log, clear your browser data, then import it back and confirm everything restored correctly.