Get my FamilySearch.org data
Find a file
Jim Lancaster b2561da7d1 Archive the 19 phase-plan files into a zip so AI reviewers won't ingest them
- Compress the 15 phase plans plus 4 Phase 2 companion artifacts (19
  files total) that lived directly under docs/plans/ into a single
  docs/plans-archive.zip, then remove the loose .md files from the
  working tree. They remain fully intact and readable by extracting
  the archive, and are also fully recoverable via git history; nothing
  is lost, they are just no longer individually present as plain text
  files that a glob/grep-based AI code reviewer would stumble onto and
  try to ingest.
- Add docs/plans/README.md explaining the archive, where to find it,
  and pointing to docs/ARCHITECTURE.md as the actual day-to-day
  reference.
- docs/plans/addenda/ (the three standalone deep-dive files extracted
  earlier) is deliberately left untouched and readable, since those
  are meant to stay directly accessible.
- Update docs/ARCHITECTURE.md and the three addenda files so every
  in-text reference to one of the 19 archived filenames is now plain
  (non-linked) text with a pointer to docs/plans-archive.zip /
  docs/plans/README.md, instead of a now-broken Markdown link.
- Update README.md's "Design and implementation history" section to
  describe the new archive layout.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-11 07:58:06 -05:00
.github Create initial plan overview and phase 1 detail. 2026-09-06 15:29:28 -05:00
docs Archive the 19 phase-plan files into a zip so AI reviewers won't ingest them 2026-09-11 07:58:06 -05:00
src/getmyfs Add periodic request-latency logging to inform FS_THROTTLE_MAX_CONCURRENCY tuning 2026-09-09 10:48:15 -05:00
tests Add periodic request-latency logging to inform FS_THROTTLE_MAX_CONCURRENCY tuning 2026-09-09 10:48:15 -05:00
.env.example Add gradual rate recovery (AIMD) so throttling reductions don't permanently cap a long run's speed 2026-09-09 10:33:25 -05:00
.gitignore Initialize the repository 2026-09-05 19:08:58 -05:00
.python-version Initialize the repository 2026-09-05 19:08:58 -05:00
pyproject.toml Phase 15: legacy auth alignment and release polish 2026-09-08 14:26:26 -05:00
README.md Archive the 19 phase-plan files into a zip so AI reviewers won't ingest them 2026-09-11 07:58:06 -05:00
uv.lock Implement Phase 13 testing suite 2026-09-08 12:59:36 -05:00

GetMyFS

GetMyFS is a FamilySearch CLI for authenticated tree traversal that fetches a bounded ancestor/descendant graph for a seed person and persists both raw API payloads and query-friendly projections into local SQLite.

Requirements

  • Python 3.12+
  • uv
  • A FamilySearch developer app key (FS_CLIENT_ID)
  • A redirect URI registered for that app key (FS_REDIRECT_URI)

Setup

uv sync
cp .env.example .env

Then edit .env and provide at least:

  • FS_CLIENT_ID
  • FS_REDIRECT_URI

For legacy mode only (--legacy-auth), also set:

  • FS_USERNAME
  • FS_PASSWORD

CLI usage

Authenticate with strict PKCE mode:

uv run getmyfs login

Authenticate with legacy mode:

uv run getmyfs login --legacy-auth

Show auth status:

uv run getmyfs auth status --json

Fetch from a seed person:

uv run getmyfs fetch -i GM4H-3RC -a 1 -d 1 --json

Logout and clear stored token:

uv run getmyfs logout

Run uv run getmyfs --help and uv run getmyfs fetch --help for full argument details.

Data and logs

  • Default database path: data/getmyfs.sqlite
  • Default run logs: data/logs/*.log

Optional overrides:

  • FS_DB (or fetch --db) for database location
  • fetch --logfile for explicit log file path
  • FS_LOGS_KEPT / fetch --logs-kept for log retention

Legacy auth caveat

--legacy-auth is a compatibility fallback and prints a warning banner when used. Prefer strict PKCE mode whenever your app key supports loopback redirect registration.

Architecture

For a reviewer-oriented map of the current system design (layers, auth, throttling, data model, sync engine, CLI, testing, security posture, and known deviations), see docs/ARCHITECTURE.md.

Design and implementation history

The detailed, phase-by-phase design/decision plans that produced this project are archived, unmodified, in docs/plans-archive.zip — kept out of the working tree on purpose so casual browsing and AI code-review tools don't try to ingest all 19 files. See docs/plans/README.md for details, and docs/plans/addenda/ for a few standalone deep-dive topics extracted from them (those remain plain, readable files). docs/ARCHITECTURE.md summarizes all of this for day-to-day use; consult the archive directly only when you need the full historical rationale.