Skip to main content

The OSINT investigator's workbench — local-first media, geolocation proofs and case management.

Project description

Azimut

The OSINT investigator's workbench. One case, one folder, every tool. Local-first: your media and your investigations never leave your machine.

Built for the open-source-investigation community — GeoConfirmed contributors, journalists, researchers.

Close Azimut. Reopen the case six months later. Everything is there: the downloaded media, the annotated proofs, the entities and their links, the notes, the exports — in one plain folder you can zip, git, or share.

The name is the French word azimut — the compass bearing you sight along to fix a point on the map (English azimuth). A fitting namesake for a geolocation workbench: fix a direction, fix a location.

v1 — Proof Studio

Tool What it does
Media Library Import local files or download by URL (X, Telegram, TikTok, YouTube… via yt-dlp) → clean local file + metadata + SHA-256.
Satellite Coordinates → imagery crop with crosshair and recorded provenance (provider, zoom, date, attribution). Esri World Imagery by default, bring-your-own-key providers supported.
Proof Composer Compose panels side by side, annotate with colored shapes (same color = same feature), comments, legend → export proof.png + a re-editable spec.
Post Composer Turn a proof into a publishable post: coordinates in all formats, plus code, attribution, character count. Copy-paste ready — Azimut never posts for you.

Every tool works one-shot (no setup, scratch session) or inside a case — a plain directory holding the whole investigation.

Install & run

pip install azimut
azimut            # starts on http://127.0.0.1:8477 and opens your browser

From source:

git clone https://github.com/OsintMeThat/azimut && cd azimut
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
cd frontend && npm install && npm run build && cd ..
.venv/bin/azimut

Frontend development (hot reload, proxied API):

.venv/bin/azimut --no-browser &     # backend on :8477
cd frontend && npm run dev          # UI on :5173

Building & releasing

The Svelte frontend builds into src/azimut/static/ (git-ignored) and is bundled into the Python wheel via hatchling artifacts. So npm run build must run before building the package, or the shipped UI is stale/missing.

cd frontend && npm run build && cd ..   # refresh the bundled UI
python -m build                          # wheel + sdist (UI included)
pyinstaller packaging/azimut.spec        # optional: standalone binary

Releases are automated: push a semver tag and GitHub Actions (.github/workflows/release.yml) builds the wheel + Windows/Linux/macOS binaries, attaches them to a GitHub release, and publishes to PyPI. Don't publish by hand.

git tag v0.1.0 && git push origin v0.1.0

One-time setup: register the repo as a PyPI Trusted Publisher for the azimut project (no API token to store).

Principles

  1. Local-first, privacy-first — no account, no telemetry, no upload; the server binds to 127.0.0.1 only.
  2. The case is the product — plain JSON + media files, versionable, portable.
  3. One tab = one tool, useful in 30 seconds.
  4. Orchestrator, not replacer — integrate specialized services, don't clone them.
  5. Tools emit facts, the analyst decides — no automated "magic button".
  6. Honest output — every artifact records how it was produced.
  7. Free and open source — no paid keys required, ever. Optional bring-your-own-key providers.

Full spec: docs/SPEC.md.

License

AGPL-3.0-only — free and open source; hosted or modified versions must share their source.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

azimut-0.1.0.tar.gz (466.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

azimut-0.1.0-py3-none-any.whl (346.6 kB view details)

Uploaded Python 3

File details

Details for the file azimut-0.1.0.tar.gz.

File metadata

  • Download URL: azimut-0.1.0.tar.gz
  • Upload date:
  • Size: 466.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for azimut-0.1.0.tar.gz
Algorithm Hash digest
SHA256 160ab2d2993ac389837171afe5204ea96b11b91e759135e7f8e50f5152f0720f
MD5 5509f137336e5c2420c4822f06f91deb
BLAKE2b-256 e2f4e6bb409a959f1fbb615aa5c8313890b59ee1797f55ee20089099f564ab2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for azimut-0.1.0.tar.gz:

Publisher: release.yml on OsintMeThat/azimut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file azimut-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: azimut-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 346.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for azimut-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70221235519b7f965669250a6eee1ef7a8be78450d0ae9067907c78a021fe71f
MD5 eb0a4319a83d92e91c97a291e84641e6
BLAKE2b-256 3385baaad6e01a3a76308c657b6bb7ee1733c3eaa861831850c2496553e04573

See more details on using hashes here.

Provenance

The following attestation bundles were made for azimut-0.1.0-py3-none-any.whl:

Publisher: release.yml on OsintMeThat/azimut

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page