Skip to main content

Every AI-assisted commit has a backstory. Never lose it again.

Project description

Backstory

PyPI version Python 3.11+ License Knowledge Format Local-first

Git shows what changed. Backstory shows why.

Ever opened an AI-generated commit and wondered:

  • Why was this approach chosen?
  • What did the agent try before this?
  • What assumptions are hidden in this code?

What is Backstory?

Backstory is a local-first AI memory layer for Git repositories. It captures session context from AI coding tools, extracts the durable reasoning (decisions, risks, alternatives), stores it as Google's OKF markdown, and links it to Git commits so you can retrieve the why later.

Why not just write good commit messages? Commit messages describe what changed. They rarely capture the rejected alternatives, the risks you accepted, or the reasoning trail across a multi-step AI session. Backstory fills that gap.

Backstory terminal walkthrough

Quick Install

pip install backstory-cli

Then initialize in your repo:

backstory init
backstory status

See a full worked example with before/after code and stored session.

Features

  • Commit-level reasoning -- backstory why HEAD shows why a commit was made, not just what changed
  • Code-aware retrieval -- Query by file (backstory file <path>), line (backstory line <path>:<line>), or range (backstory range <path>:start-end)
  • Contradiction detection -- Warns when new changes reverse earlier recorded decisions
  • Local-first -- Everything stays in your repo. No cloud, no telemetry.
  • Human-readable storage -- Google's OKF markdown that agents, tools, and humans can read
  • Privacy by default -- Extracts decisions and risks, not raw chat logs. Built-in redaction for API keys and secrets.

How It Works

Backstory flow diagram

Backstory terminal walkthrough

  1. Capture -- A tool-native hook or exporter hands the AI session to Backstory.
  2. Ingest -- Backstory extracts the durable decisions, risks, and changed files. The raw conversation is discarded.
  3. Link -- The session is attached to the relevant Git commit via backstory attach HEAD.
  4. Retrieve -- Query reasoning by commit, file, line, range, or diff.

Git stays the linkage layer. Backstory stores the reasoning.

Commands

Command Status What it does
backstory init ✅ Stable Set up Backstory in the current repo
backstory dump ✅ Stable Ingest an AI session into OKF markdown
backstory attach HEAD ✅ Stable Link a session to a commit
backstory why HEAD ✅ Stable Explain why a commit happened
backstory status ✅ Stable Show Backstory state in this repo
backstory search <query> ✅ Stable Search past sessions and decisions
backstory show <session> 🧪 Experimental View a stored session
backstory file <path> 🧪 Experimental Show AI context relevant to a file
backstory line <path>:<line> 🧪 Experimental Show the decision behind a specific line
backstory range <path>:start-end 🧪 Experimental Show context for a range of lines
backstory code <path>:start-end 🧪 Experimental Show why a code block exists
backstory diff 🧪 Experimental Explain the reasoning behind the current diff
backstory redact ✅ Stable Re-scan and redact sensitive data
backstory hooks ✅ Stable Manage Git hook installation

Integration

Works with Claude Code today. Cursor and Codex support planned.

Backstory is designed for tool-native capture. The preferred path is a tool-specific hook, callback, or transcript exporter that hands the session to Backstory automatically.

See the integration guide for step-by-step setup.

Contradiction Detection

Backstory watches for new changes that appear to reverse earlier recorded decisions.

⚠ This change may contradict a decision from commit 8f21c9a:
  "payment.failed should mark subscription as pending, not cancelled"

That turns the tool from an archive into a guardrail.

Storage

.backstory/
  config.json
  knowledge/
    index.md
    sessions/
      index.md
      latest.md
      sha256-<session>.md
  redactions/
    tombstones.log

Session memory is stored as Google's OKF-style markdown -- human-readable, Git-friendly, and agent-friendly.

Privacy

Backstory is local-first by design. No cloud service or telemetry is required. Raw transcripts are never persisted -- only extracted decisions, risks, follow-ups, and Git context are kept. Built-in redaction scans for and removes API keys and secrets during ingestion.

Documentation


If you find this useful, starring the repo helps others discover it.

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

backstory_cli-0.4.0.tar.gz (52.5 kB view details)

Uploaded Source

Built Distribution

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

backstory_cli-0.4.0-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file backstory_cli-0.4.0.tar.gz.

File metadata

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

File hashes

Hashes for backstory_cli-0.4.0.tar.gz
Algorithm Hash digest
SHA256 19fccda09abf894e7af3b7f2949a5acbadd6bacf180f824d419984c2ed850747
MD5 460dbb565ded6ad1ec46bfc1d6dd9c8d
BLAKE2b-256 f12ad6d7cebe09270864f0a112aded9293658f4fca6714df746ae816f72caa96

See more details on using hashes here.

Provenance

The following attestation bundles were made for backstory_cli-0.4.0.tar.gz:

Publisher: publish.yml on arpitkath/backstory

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

File details

Details for the file backstory_cli-0.4.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for backstory_cli-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 16a8569c64990a9d8bea2714482b6f58dce46913cc9c2d8c47784c595153f1a1
MD5 eca54eb47f06a2262a98cfbf1be3c4ba
BLAKE2b-256 119414575c39b4315dfa2b70d7af7670680efcf17503141cb0acabe5c9cde21e

See more details on using hashes here.

Provenance

The following attestation bundles were made for backstory_cli-0.4.0-py3-none-any.whl:

Publisher: publish.yml on arpitkath/backstory

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