A local-first evidence timeline builder for detectives and defense attorneys who currently build case timelines by hand in PowerPoint.
timeline keeps every event in a single plain-text timeline.json file in your working directory. No accounts, no network, no telemetry — your case data never leaves your machine.
- Detectives consolidating phone records, witness statements, camera hits, and dispatch logs into one chronological view.
- Defense attorneys looking for gaps, overlaps, and contradictions in the prosecution's timeline — including sightings of the same person in two places too close together in time to be physically possible.
cargo install --path .Create a store in the current directory:
timeline initAdd events one at a time:
timeline add \
--at 2026-09-18T14:32:00Z \
--desc "Phone call placed to unknown number" \
--source "phone records" \
--subject "Alex Merren" \
--location "Dockside"
# Plain dates work too (treated as midnight UTC):
timeline add --at 2026-09-18 --desc "Seen near the pier" --source "witness statement #2"Bulk import from CSV (columns: at,desc,source,subject,location):
timeline import evidence.csvShow the unified, chronologically sorted timeline with source citations:
timeline show
timeline show --subject "Alex Merren"Flag suspicious overlaps — impossible travel (same subject at two different locations within a window too short to travel, default 30 minutes) and exact-duplicate descriptions from different sources:
timeline conflicts
timeline conflicts --window-minutes 45
timeline conflicts --mph 55Coordinates are optional. Pass --lat and --lon on timeline add, or extra CSV columns, and the same command estimates drive time. A pair outside the flat window still flags if the drive does not fit. Confidence is high when the gap is less than half the estimate, otherwise medium. Same place name, ignoring case, is not a conflict.
Export the timeline as a markdown document:
timeline export # to stdout
timeline export --out case.md # to a fileEach event has:
| Field | Required | Notes |
|---|---|---|
at |
yes | RFC3339 timestamp or YYYY-MM-DD date |
description |
yes | Free text |
source |
yes | Citation label, e.g. phone records |
subject |
no | Person-of-interest tag |
location |
no | Place tag |
lat / lon |
no | Decimal degrees. Optional drive-time estimate only |
- Richer conflict heuristics (travel-time estimates, confidence scoring).
- Tauri GUI (
timeline-desktop, same local store, no network) - Windows and Mac release builds (workflow is in, run it when the suite is finished)
Apache-2.0 — see LICENSE.
Part of Blackshield Company.
