A ROSINT project

Every connection carries its source.

A graph of an investigation. Entities are the pinned photos, relationships are the red string — and no string exists without the evidence that justifies it.

In development The model ↓

A connection you cannot source is a connection you cannot publish.

Four objects.

The whole model

01

Entity

A typed node. A person, an organisation, a domain, a document.

02

Relationship

Typed, directed, and carrying one or more sources.

03

Observation

A typed fact about an entity, sourced and verified on its own.

04

Source

The citation behind a relationship or a fact, pointing into the corpus.

What it does differently.

Unproven is visible

A relationship with zero sources is an unproven assertion, and is flagged as one rather than drawn as a fact.

The trail, per hop

Trace how two entities connect and see the source behind every step, not just the endpoints.

Sealed subjects

Protected people can be sealed, so derived public exports redact them.

A case is a Git repository

Line-oriented files, so a case branches, reviews, merges and blames like code — on your own server, or none.

Modules are just programs.

No plugin ecosystem

Your tool

alibi https://example.org

An ordinary binary. It reads argv and writes stdout.

The contract

An adapter reads that output

A parser maps the lines onto the four objects.

The graph

Entities, relationships, sources

Reachable as an action on the node it belongs to.

The same binary, both ways

A module is a CLI program plus a parser. Red String runs it and reads what it prints — so the tool you wrote for the graph still works on its own in a pipe, and tools that already exist can be adopted by writing only the parser.

ALIBI is the worked example

A witness archiver you run by hand, and the same command Red String calls from a node to ask what the public record shows about a URL.

Collaboration is Git

Cases are shared, reviewed and audited through ordinary Git — including a newsroom's own private or self-hosted server. No account, no service, no hosted tenancy.

History is evidence too

Who added a connection, when, and against which source is the commit history — the audit trail is the repository, not a log some service keeps for you.

In development. The adapter contract is still settling, so treat the shape above as the direction rather than a stable interface.

Status

In development. A local-first desktop application written in Rust, part of an investigation toolkit. There is no public release, download or hosted version.

  • StageIn development
  • ShapeDesktop, local-first
  • StoragePlain text, in Git
  • ModulesCLI + parser
  • ReleaseNone