About

What this is

Nabu is personal research infrastructure: one scholar’s local library of ancient-text corpora, built to serve that scholar’s reading and research first, and shared because the approach — local, license-honest, citation native, rebuildable — may be useful to others: the readers it pictures wear one of 25 scholarly hats, the research desks from the Classicist to the Assyriologist, each with its own shelves and recipes. It is a young project: versioned releases begin with v1.0.0 (July 2026), there is no packaged gem or versioned API, and command-line flags may still change between releases; the documentation aims to be more honest than polished.

The name is that of the Mesopotamian god of scribes and writing, divine custodian of the library of Ashurbanipal at Nineveh — a fitting patron for a project whose founding dream included holding the tablets themselves (the ORACC shelf now does).

The project family

Nabu is the eldest of four siblings, each with one job; where a sibling produces something the library can use, Nabu consumes it back as an ordinary optional module — the same ingestion door every external source walks through.

Why it exists

Three convictions, stated plainly:

  1. Scholars should be able to hold their sources. The great digital corpora live on institutional servers with uncertain funding horizons. A local, plain-file copy under version control, with derived databases that can always be regenerated, is the difference between using a service and owning a library.
  2. Citations are the unit of scholarship. A search result that cannot be cited to a verse, a folio line, or a tablet surface is a curiosity. Everything in Nabu resolves to a stable URN.
  3. License terms are data. Aggregating more than a hundred sources under a dozen different licenses is workable only if every text’s terms are recorded per document and consulted mechanically — especially once AI tools can quote from the collection.

How it is built

Nabu is a Ruby command-line application (Ruby 3.3+), developed and tested on macOS, with a deliberately small dependency set and no cloud requirements at runtime. Storage is plain files, git, and SQLite — nothing that cannot be restored from a file copy.

The central engineering guarantee is the derivability law: everything permanent lives in three plain-file folders — the canonical texts (the universal asset), the project configuration, and the local instance (the owner’s rulings, annotations, and operational ledger) — and every database is derived from them: nabu rebuild regenerates the entire catalog offline, proven byte-identical by test, and a dedicated drill proves the stronger claim by restoring ONLY those three folders and re-deriving the rest from scratch. Around that guarantee sit the retention mechanisms: files an upstream deletes are preserved and remain searchable, honestly labelled; the run-history ledger rides in the permanent set and survives rebuild and restore alike; backups are exercised by the actual restore drill, not assumed; and a standing verification command re-parses every canonical file against the catalog’s content hashes.

Development proceeds by a documented agent loop — work packets executed by Claude language models under test-driven ground rules, with owner-reviewed phase gates — described in docs/dev-loop.md. The full test suite (network-blocked, fast) and a linter run in continuous integration on every push; the repository README and this site are refreshed at every gate to reflect what actually works.

What is deliberately out of scope, for now

The original concept includes an enrichment layer — projecting lemmas onto the ninety percent of the corpus without gold annotation, embeddings and semantic search, on-demand glossing — that is designed but not built; it waits on local inference hardware and demand. (Ingestion of one’s own PDFs and scans, once on this list, shipped in July 2026 as nabu ingest; what still waits on hardware is text recognition for image-only scans.) A public read-only query endpoint is a distant possibility for which the MCP server is the rehearsal: the tool contract that would face outward runs locally first, against the real corpus, under the same license gates. The register of candidate capabilities, each argued with the case against, is docs/improvements.md.

Licensing

Contributing

The project is early and personal — expect the backlog to be driven by the maintainer’s research needs — but contributions are genuinely welcome: a well-argued source proposal that leads with license evidence, a report of a passage where the library’s text departs from the source, a feature request stated as the scholarly question it would answer, or a small clean adapter patch with real trimmed upstream fixtures. The house rules — TDD, fixture discipline, license honesty, the DCO sign-off — are stated in CONTRIBUTING.md.

Requests go straight to a prepared issue form:

Anything else fits a new issue of any shape.

Cite it: DOI 10.5281/zenodo.21361957 (v1.0.0); see the FAQ for the full citation form.

Contact

Questions, corrections, and conversation are welcome through GitHub issues. The maintainer is Ar Vicco <arvicco@nabu.ac>.