Skip to main content

Local-first, privacy-preserving genealogy CLI with modular LLM providers.

Project description

AncestryLLM

AncestryLLM is a local-first platform for genealogy research tools. It combines deterministic RootsMagic and GEDCOM workflows with optional, explicitly selected LLM providers. The CLI and its interactive console are the only supported product surfaces in the 0.2.0 release. The accepted local Electron and private FastAPI desktop architecture remains unshipped and is not a public API.

Install and start

Python 3.12 through 3.14 and a working OS credential store are required. Install the isolated command with pipx:

pipx install ancestryllm
ancestry --version
ancestry --help

Install every optional LLM provider with pipx install 'ancestryllm[all-llm]'. Remote providers are never selected from installed packages or environment keys: every cloud call still requires an explicit profile and consent.

Run ancestry with no arguments for the prompt-toolkit/Rich interactive console. It is the only supported interactive console; the prompt stays responsive while background operations render live, sanitized spinner or completed-unit progress above it. One-shot and JSON output never emit terminal animation. The canonical command reference, examples, offline defaults, and privacy rules are in the CLI guide; see the console guide for interactive use and the file-ingress policy for per-format input limits and stable rejection codes.

Included modules

  • rootsmagic: immutable, bounded SELECT/CTE queries and deterministic GEDCOM export.
  • gedcom: merge, rooted subtree, quality analysis, incremental update, and rebase.
  • prompts: immutable prompt revisions with declared variables and output schemas.
  • people: curated research people, identifiers, facts, links, and provenance.
  • providers: explicit Ollama, OpenAI, Anthropic, Gemini, and OpenRouter profiles.
  • ocr: schema-validated extraction through the same provider boundary.
  • secrets: no-echo OS-keyring management; values never appear in status output.

Development

git clone https://github.com/sodejm/AncestryLLM.git
cd AncestryLLM
make setup
make test
make lint
make typecheck
make security
make sbom

make setup creates .venv and installs the checkout in editable mode with locked development and provider dependencies. The equivalent manual command is .venv/bin/pip install --editable '.[all-llm,dev]'; it is for contributors, not end-user installation.

The dependency graph is locked in uv.lock. Never commit real family trees, GEDCOM exports, databases, logs, reports, secrets, or research-person data.

Read the architecture, desktop ADR, CLI guide, privacy and consent, provider guide, GEDCOM compatibility, encrypted backups, bounded file ingress, and threat model.

Versioning follows Semantic Versioning 2.0.0. The versioning policy defines the CLI contracts covered by a release.

Interoperability status

Automated round-trip and preservation tests run in CI. Ancestry, Geni, and MyHeritage imports must still be manually smoke-tested for each release; this repository does not claim production interoperability until that checklist is completed and recorded.

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

ancestryllm-0.2.0.tar.gz (221.9 kB view details)

Uploaded Source

Built Distribution

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

ancestryllm-0.2.0-py3-none-any.whl (222.4 kB view details)

Uploaded Python 3

File details

Details for the file ancestryllm-0.2.0.tar.gz.

File metadata

  • Download URL: ancestryllm-0.2.0.tar.gz
  • Upload date:
  • Size: 221.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ancestryllm-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7da3ecb69a315c489042b200efcc7250820615ddb1e824e8764efe83cbb314f2
MD5 d2aaee46c545d1d3e6c8b153d8a77fd8
BLAKE2b-256 140192eb846391e585fdf1d755e79b2c33a2bf4e66e721412dca1d71f769d904

See more details on using hashes here.

Provenance

The following attestation bundles were made for ancestryllm-0.2.0.tar.gz:

Publisher: release.yml on sodejm/AncestryLLM

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

File details

Details for the file ancestryllm-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ancestryllm-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 222.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ancestryllm-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6927c5666fc41e47295b9666bb0e2fcf1d2d6661ea35ce3ce07fbbc4c28cce42
MD5 9256928f37d7329ce98ee6f84b3dcdb3
BLAKE2b-256 182883f67225d79302409c862ec87a9f445f90790dc78adb360d707f13932023

See more details on using hashes here.

Provenance

The following attestation bundles were made for ancestryllm-0.2.0-py3-none-any.whl:

Publisher: release.yml on sodejm/AncestryLLM

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