Skip to main content

Ed — AI Bible Translation Reasoning

Ed (עֵד, witness) is an AI-assisted Bible translation reasoning platform. It uses the Textus Receptus (TSR) Greek text, the Masoretic Hebrew tradition, and the family stack (Mahalath, Tirzah, Milcah, Hoglah) to translate under configurable principles — reconstructing the principles behind the King James Version, not copying KJV wording.

The Bible is a self-defining, self-referencing whole: any term is interpreted in light of every other canonical occurrence.

See docs/vision.md and docs/translation-principle-semantic-layers.md.

ed --help
ed policies
ed policies --format json --out policies.json
ed target-languages
ed target-languages --format json --out target-languages.json
ed manifest --out ed-manifest.json
ed build-bundle fixtures/john-1-1.json --policy evidence-based --out bundle.json
ed build-bundle fixtures/john-1-1.json --policy evidence-based --format markdown --out bundle.md
ed build-debate-prompt bundle.json --target-language en --out prompt.txt
ed build-bundle fixtures/genesis-1-1-cantillation.json --policy masoretic-traditional --out hebrew-bundle.json
ed decide bundle.json --target-language en --mock --out decision.json
ed decide bundle.json --target-language en --mock --prior-decision decision.json --out revised-decision.json
ed decide hebrew-bundle.json --target-language en --mock --out hebrew-decision.json
ed decide bundle.json --target-language es --mock --out decision-es.json
ed explain decision.json
ed explain decision.json --out decision.md
ed evaluate-decision decision.json fixtures/evaluations/john-1-1-en.json
ed evaluate-decision hebrew-decision.json fixtures/evaluations/genesis-1-1-en-cantillation.json
ed run-evaluation-suite fixtures/evaluation-suite.json --mock --out suite-report.json
ed explain-suite suite-report.json --out suite-report.md
ed run-evaluation-suite fixtures/evaluation-suite.json --mock --format markdown --out suite-report.md
ed run-evaluation-suite fixtures/evaluation-suite.json --mock --case-id genesis-1-1-en-cantillation --work-dir suite-artifacts
# optional trace output (overwrites by default; --trace-append to accumulate):
ed decide bundle.json --target-language en --mock --trace-out trace.jsonl
ed explain-trace trace.jsonl --out trace.md
# optional local Ollama adapter:
ollama create ed-dictalm-q8-final -f ops/ollama/ed-dictalm-q8-final.Modelfile
ed decide bundle.json --target-language en --ollama-model ed-dictalm-q8-final --prompt-out prompt.txt --out decision.json
# optional Milcah specialist pressure-test adapter:
ed build-milcah-request bundle.json --target-language en --out milcah-request.json
# ...or seed the request from an existing decision instead of a fresh mock:
ed build-milcah-request bundle.json --base-decision decision.json --out milcah-request.json
ed decide bundle.json --target-language en --milcah --out decision-milcah.json
# optional thinking review packet:
ed decide bundle.json --target-language en --ollama-model hf.co/dicta-il/DictaLM-3.0-24B-Thinking-GGUF:Q8_0 --ollama-think --capture-thinking --out decision.json
ed review-thinking decision.json --out thinking-review.md

Use --capture-thinking with an Ollama thinking model only when the raw reasoning trace should be stored in the decision metadata for later documentation/review. By default Ed records that thinking was present without persisting the trace. Local Ollama decisions request JSON-mode output by default; use --no-ollama-json-mode only for models that fail under constrained formatting. If a thinking model returns private reasoning but no final rendering, Ed fails the debate and records diagnostic stop/length metadata in the trace without storing raw thinking text.

Live Ollama output is only credited with the witnesses the model actually cites (validated against the bundle); if it cites none, Ed records a review note rather than implying grounding. If it cites an id that is not in the bundle, Ed names the invented ids in a review note rather than dropping them quietly — a fabricated citation is evidence the rendering needs more scrutiny, not less. Repeated citations of one witness are counted once. Structured debate JSON can be long, so --ollama-num-predict defaults to 1024; a generation that stops at the length limit is flagged with a review note (raise --ollama-num-predict and re-run).

Rule templates & web UI

The built-in policies are the seeded set; you can also author your own translation-rule templates — a policy plus optional tone, custom_guidance, and a term_glossary (fixed renderings for salient lexemes) — and translate under them. Templates are stored as JSON under ~/.ed/templates and are usable anywhere a policy id is, including --policy.

ed templates save my-rule.json          # validate + store a rule template
ed templates list
ed build-bundle fixtures/john-1-1.json --policy my-rule --out bundle.json
ed build-bundle fixtures/john-1-1.json --policy ./my-rule.json --out bundle.json  # or a file

An interactive UI is available with the web extra:

pip install 'ed[web]'
ed serve                                 # http://127.0.0.1:8799

Author/edit a rule template (fork a built-in or start blank), paste or upload an evidence fixture (source unit + witnesses), pick a target language, and translate — the decision (rendering, reasoning, unresolved questions, cited witnesses) renders live. Save the template to reuse it from the CLI.

Family stack

Sibling Role in Ed
Mahalath ontology, semantic precision
Tirzah memory, retrieval, concordance
Milcah multi-LLM debate, argument evaluation
Hoglah LLM execution queue
Galeed process trace
Keturah capability manifest

Sense layer (design)

Design work for a Hebrew/Greek sense layer — so that what a source word means comes from codified, debated, corpus-derived evidence rather than a model's memory — is recorded in ADR-006 – ADR-014 of docs/architecture-decisions.md. Headlines: Mahalath owns the source-language sense inventory and Ed owns rendering; one sense per lexeme by default, with splits as justified exceptions; no English lexicon — English is purely a rendering under policy; reference lexica are witnesses Ed may visibly disagree with; and terms with no English equivalent get a consistent multi-word rendering or a debated composite coinage plus a reader-facing dictionary entry.

The working paper behind those decisions — options not taken, the licensing research, and the build order — is docs/lexicon-options.md. Nothing here is built yet.

Review

A point-in-time functional + code review of 0.2.0 is in docs/review-2026-08-11.md. All eight findings were actioned in 0.2.1 — see the remediation section at the end of that document.

Develop

pip install -e ".[dev]"
pytest

Install .[keturah] or the sibling Keturah checkout when validating the full capability-manifest integration. Ed can run its standalone fixture workflow without Keturah installed.

Install .[milcah] or the sibling Milcah checkout to run ed decide --milcah; the default development/test install keeps that integration optional.

License

Apache License 2.0.

Metadata

Release files for ed-witness 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ed-witness 0.2.2
File Size Uploaded
ed_witness-0.2.2.tar.gz 88.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ed-witness 0.2.2
File Interpreter ABI Platform
ed_witness-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 163.8 kB

Release files / ed_witness-0.2.2.tar.gz

Download URL ed_witness-0.2.2.tar.gz
Size 88.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6a70b70f99c71d5ba7469323863de5c6f4f8551e745863dfd7c5934f17cffcc4
BLAKE2b-256 checksum
How to use checksums
ad9c6ba53d7e9a56ab1b20f5c2411a88d1a02a9faf63c2f0e12346df4c2bac7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / ed_witness-0.2.2-py3-none-any.whl

Download URL ed_witness-0.2.2-py3-none-any.whl
Size 75.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a2398966f7fff9c7810cee460bbad2e390d82c90004677f91a97168072455f1
BLAKE2b-256 checksum
How to use checksums
ac5ac2a989f93192e0d3d0bd61236d8bc31bc498e6c2f2be3a4332e0af52ce3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page