Put Narrow Highway's two distinctives in front of any AI you already use. Strip personal context to stable placeholders before the model sees it — this runs on your device, so that data never reaches us. Verify any claim into a permanent, re-checkable receipt — a verdict and the worked reasoning, not "trust me." Verifying sends only the claim, checked transiently and stored nowhere (and redacted before it is sealed) — or run the whole engine locally and nothing leaves at all. Try them right here.
The engine finds and verifies; it never generates. Point an agent at a local engine (python -m concordance mcp) and the text never leaves your machine at all.
<!-- one script, then wrap any LLM/API call --> <script src="https://narrowhighway.org/redact.js"></script> <script> const ask = Rampart.guard(async (clean) => { // `clean` has [EMAIL_1], [CARD_1]… — the originals stay on this device const r = await fetch("https://some-llm.example/v1/chat", { method: "POST", body: JSON.stringify({ prompt: clean }) }); return (await r.json()).text; }); const answer = await ask(userText); // scrub in, reveal out — automatically </script>
curl -s -X POST https://narrowhighway.org/verify \
-H content-type:application/json \
-d '{"claim":"the speed of light is 299792458 m/s"}'
# → { "verdict":"HOLDS",
# "checks":[{"claim":"…","verdict":"CONFIRMED","domain":"physical_constants","detail":"…"}],
# "receipt":"https://narrowhighway.org/s/<hash>", ← proof, not "trust me"
# "generated": false }
from concordance.gateway import scrub, restore, guard clean, mapping = scrub("email me at a@b.com") # ("email me at [EMAIL_1]", {…}) reply = my_llm(clean) # the model never sees the email final = restore(reply, mapping) # reapply locally safe_llm = guard(my_llm) # …or wrap it once