Untangle reads a repository’s commits, reviews, issues, docs and handover calls, then answers with the evidence behind each decision.

The examples on this page are real Untangle output for knadh/listmonk, an open-source newsletter manager.

Scroll to pull the thread

Every codebase is a knot.

The reason a value is 10 lives in a commit from 2020, a review thread, an incident ticket, and a call where someone explained it once. The person who knew may have left.

In listmonk alone, 2,270 commits, 896 pull requests and 2,284 issues hold 2,546 recorded decisions.

Pull one thread.

Ask in plain words. Untangle matches the question to an exact config key, then walks its decision through every piece of evidence, in order.

  1. Entity: app.concurrency, a config key in schema.sql, matched exactly.
  2. Decision: app.concurrency is 10, active since 8 Jul 2020.
  3. Commit 942eb7c: Add settings UI and “hot reload” support to the app.
  4. Recorded handover call, 20 Oct 2026: we were hitting the SES rate limit.
  5. Person to ask: Kailash Nadh, who authored 114 of 133 commits on app.concurrency.
  6. Date: 8 Jul 2020, when the current value took effect.

Answer

app.concurrency in schema.sql is 10. It was set in commit 942eb7c on 8 Jul 2020, and a recorded handover call gives the reason: the SES rate limit was being hit.

0.69 Medium confidence

    Nothing is deleted.

    A new value supersedes the old one, and both stay on the record. Keep scrolling to move through time and see what was true on any date.

    app.concurrency was

    Handovers, kept.

    Record the call before someone leaves. Untangle transcribes it, renders it in English, and links what was said to the files and keys it names.

    6 min 52 s of call, 15 decisions extracted. The transcript is synthetic demo data with fictional people; the repository, paths and keys are real.

      Question why does listmonk use MongoDB?

      When it doesn’t know, it says so.

      No recorded decision answers this, so Untangle refuses instead of guessing. It shows the closest entities it found and the person most likely to know.

      Closest related
      Person to ask
      Kailash Nadh

      See where knowledge is thin.

      Pulse ranks contradictions, drift, missing rationale and ownership gaps across the graph. Each warning opens the same evidence path as a question.

      18 active decisions 3 risks 83% with recorded rationale

        Run it on your own repository.

        Open source under the MIT license. The default answer path is deterministic and works without a model key. A model can improve the wording, but it can’t add uncited claims.

        1. Ingest a repository

          Git history, GitHub discussions, docs, symbols, config changes and dependencies go into a Neo4j graph.

        2. Ask a question

          The router resolves the entity you named and retrieves its decision chain and evidence.

        3. Review the path

          Read the answer with its citations, the supersession timeline, a confidence score and the person to ask.

        Quick start

        Ask why the code is like this, and follow the evidence back through time.