An OSINT analytical reasoning environment that treats analyst reasoning as a first-class data type.
Aperture is a desktop application for structured open-source intelligence investigations. Unlike existing OSINT tools that focus on data collection or entity visualization, Aperture captures the analyst's reasoning process — hypotheses, evidence evaluation, confidence assessments, and the logical chains connecting raw sources to analytical conclusions.
Every investigation in Aperture is a portable, reproducible, shareable artifact. The reasoning graph is the core data structure: a directed acyclic graph where hypotheses, evidence, and analytical judgments are distinct node types with mandatory provenance chains. Spatiotemporal indexing is native, enabling proximity-based queries across investigation evidence.
Aperture is built for OSINT practitioners and researchers who need defensible, auditable analytical work products.
- Reasoning graph — Hypotheses, evidence, and conclusions connected by typed edges (supports, contradicts, derives-from, supersedes) in a directed acyclic graph
- Provenance chains — Every assertion traces back through the reasoning chain to raw sources with timestamps, source hashes, and confidence scores
- Investigation artifacts — Self-contained SQLite files that capture the complete investigation state, reproducible and version-controllable
- Spatiotemporal indexing — Native geographic and temporal awareness, enabling queries like "what evidence in this investigation occurred within 5km and 48 hours of event X?"
- Plugin ecosystem — Python-based collectors, enrichers, and analyzers that extend Aperture's capabilities without modifying the core
Aperture is a three-layer desktop application:
| Layer | Technology | Responsibility |
|---|---|---|
| Desktop shell | Tauri 2.x (Rust) | Window management, file system, sidecar lifecycle |
| Frontend | React + TypeScript | Investigation canvas, timeline, evidence panels |
| Engine | Python + FastAPI | Reasoning graph, spatial indexing, storage, plugins |
The Python engine runs as a sidecar process, communicating with the Tauri frontend via FastAPI on localhost. Investigations are stored as portable SQLite files with SpatiaLite extensions.
- Python 3.11+
- Node.js 20 LTS
- Rust (stable toolchain)
- Tauri CLI 2.x
# TODO: Installation instructions will be added as the project matures# TODO: Usage examples will be added as the project matures- Reasoning graph engine (hypothesis → evidence → conclusion DAG)
- Investigation canvas UI (spatial node editor)
- Spatiotemporal engine (geo + time indexing on evidence)
- Evidence provenance chain (source attribution, confidence scoring)
- Plugin system (Python collectors/enrichers/analyzers)
- Export/sharing (portable investigation artifacts, PDF reports)
- Investigation diffing and forking
See CONTRIBUTING.md for guidelines.
This project follows a Code of Conduct. By participating, you agree to uphold its standards.
See SECURITY.md for reporting vulnerabilities.
See SUPPORT.md for how to get help.
Apache License 2.0 — see LICENSE for details.
Aperture is built on the shoulders of the OSINT community's collective tradecraft, the structured analytical techniques pioneered by Richards Heuer and the CIA's Directorate of Intelligence, and the open-source geospatial ecosystem.