GENEALOGIX Specification
The official specification for GENEALOGIX (GLX) — a portable, extensible archive format for genealogical research and beyond. Built on Git, designed for collaboration, and customizable through archive-owned vocabularies. Your data, your way, forever.
Installation
Download the latest pre-compiled binary for your operating system from the GitHub Releases page.
Developers can install from source:
# Pin the release tag for a reproducible install; bump it when a new release ships
go install github.com/genealogix/glx/glx@v0.0.0-beta.12Quick Start
# Create a new genealogix repository in a new directory
glx init my-family-archive
# Or create a single-file archive
glx init my-family-archive --single-file
# Validate .glx files (checks cross-references and vocabularies)
cd my-family-archive
glx validateWhy GENEALOGIX?
Traditional formats like GEDCOM solve file exchange but stop short of modern collaborative research. GENEALOGIX is a Git-native, evidence-first archive format that aims to be a permanent foundation, not just an export target.
For a side-by-side look at the GEDCOM-vs-GLX wire formats and the assertion model that backs every claim with evidence, see Core Concepts.
Features
- 📚 Evidence-First Model — every claim backed by documented sources
- 🔍 Quality Assessment — structured evaluation of evidence reliability (0–3 scale)
- 🌳 Git-Native Architecture — full version control and collaboration support
- 📋 Human-Readable Format — clear YAML files instead of binary formats
- ✅ Schema Validation — JSON Schema-based validation and error checking
- 🔗 Complete Provenance — audit trail from repository to conclusion
- 🎯 Repository-Owned Vocabularies — define custom types within each archive
CLI Commands
The glx CLI groups its commands into archive management, import/export, exploration, data entry, analysis, and shell completion. See the full CLI reference for flags, examples, and per-command details.
Archive Management
glx init— initialize a new archiveglx validate— validate files and cross-referencesglx split— convert a single-file archive to multi-fileglx join— convert a multi-file archive to single-fileglx merge— combine two archives with duplicate detectionglx migrate— migrate an archive to the current formatglx rename— rename an entity by ID
Import & Export
glx import— import a GEDCOM fileglx export— export to GEDCOM or Schema.org-aligned JSON-LD
Exploration
glx search— full-text search across entitiesglx query— filter and list entitiesglx vitals— show birth, death, burial for a personglx timeline— chronological events for a personglx summary— full person profile with narrativeglx ancestors— ancestor treeglx descendants— descendant treeglx cite— formatted citation textglx path— shortest relationship path between two people
Data Entry
glx census— census tooling (see subcommands)glx census add— generate entities from a census templateglx link— create a FamilySearch citation from an ARK
Analysis
glx stats— entity-count and confidence dashboardglx places— place data quality issuesglx cluster— FAN-club analysisglx analyze— gap, conflict, and suggestion analysisglx duplicates— detect duplicate entitiesglx coverage— research coverage reportglx diff— diff two archives
Shell completion
glx completion— generate shell completion scripts (bash, zsh, fish, powershell)
File Format
All GENEALOGIX files use the same structure:
# Any .glx file
persons:
person-a1b2c3d4:
properties:
name:
value: "John Smith"
fields:
given: "John"
surname: "Smith"
sex: "male"
sources:
source-12345678:
title: "Birth Certificate"Key Points:
- Entity IDs are map keys:
person-john-smithorperson-a1b2c3d4 - IDs can be descriptive or random (1–64 alphanumeric/hyphens)
- Files can contain any combination of entity types
- Parser collates all entities across all .glx files in repository, except under dot-prefixed directories (
.git,.glx, editor scratch dirs), which are not archive content - Controlled vocabularies define valid types in
vocabularies/directory
Documentation
- 🚀 Quickstart — 5-minute getting started
- 💡 Examples — runnable sample archives
- 🛠 CLI Reference — every command and flag
- 📐 Best Practices — recommended workflows
- 🔁 Migration from GEDCOM — manual conversion guidance
- 🔀 GLX-aware Git merge driver — genealogy-aware conflict resolution for .glx files
- 📖 Specification — full spec
- 📋 JSON Schemas — machine-readable schemas
- 📚 Glossary — key terms and concepts
- 🧱 Dev Container — preconfigured dev environment
Specification Status
This specification follows Semantic Versioning. Current release: v0.0.0-beta.12 (Beta).
- Draft — under active development, may change significantly
- Release Candidate — stable, final review before release
- Released — production-ready, changes discussed via GitHub issues and discussions
Community
| Topic | Where |
|---|---|
| Issues & bug reports | github.com/genealogix/glx/issues |
| Discussions & Q&A | github.com/genealogix/glx/discussions |
| Chat | Discord |
| Mailing list | groups.google.com/g/genealogix |
| Contributing | CONTRIBUTING.md |
| Code of Conduct | CODE_OF_CONDUCT.md |
| Security | SECURITY.md · SECURITY-POSTURE.md (OSPS Baseline, EU CRA readiness) |
| Releases | GitHub Releases |
License
Copyright 2025 Oracynth, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Attribution for the third-party components bundled in GLX is listed in the NOTICE file.