Library of Babel
Bidirectional mathematical engine for Borges' Library of Babel. Finds the permanent hexagon address of any text, reads any page at any coordinate, and scores pages by Shannon entro…
High Noon Office
@highnoonoffice
Install
$ openclaw skills install @highnoonoffice/library-of-babelLibrary of Babel
A bidirectional mathematical engine for Borges' infinite library.
No database. No storage. No randomness. Same input always produces identical output — across machines, across time.
What It Does
Forward: Paste any text → get its permanent address (Hexagon, Wall, Shelf, Volume).
Reverse: Give coordinates → get the 3,200-character page that has always lived there.
The Library doesn't generate text. It reveals what was always there.
Usage
Forward lookup — find where your text lives
from babel_core import format_locate
print(format_locate("call me ishmael"))
Output:
📍 Hexagon 936,177,732,035,491,926 · Wall 3 · Shelf 4 · Volume 21
(Global index: 936177732...)
This text has always existed here. It is not generated — it is found.
Reverse lookup — read a page at any coordinate
from babel_core import format_read_page
print(format_read_page(hexagon=1, wall=1, shelf=1, volume=1))
Output:
📖 Hexagon 1 · Wall 1 · Shelf 1 · Volume 1
sw,quamqysyjnki.eog,u,gl.b.u uuejbadqcfwmbegfeljp.toqwpq... (3200 chars total)
Entropy analysis — how noise-like is a page?
from babel_core import index_to_page, shannon_entropy, space_frequency, classify_page
page = index_to_page(12345)
h = shannon_entropy(page)
sp = space_frequency(page)
tag = classify_page(h, sp)
print(f"H={h:.2f} bits | space={sp:.1f}% | {tag}")
Shannon entropy thresholds (theoretical max for 29-char alphabet: log₂(29) ≈ 4.86 bits):
🟢 coherent— H < 3.8 and space > 14% (almost never random — that's the point)🟡 interesting— H 3.8–4.5 or space 6–14%🔴 noise— H > 4.5 or space < 6%
The Codex
codex.json ships with 7 pre-mapped passages from literature and culture.
Zero tokens to browse — it's a static JSON read.
The coordinates are permanent and independently verifiable.
from demo import show_codex, add_to_codex
# Display all pre-mapped passages
show_codex()
# Add your own — coordinates computed and persisted immediately
add_to_codex("the medium is the message", "Understanding Media — Marshall McLuhan")
Pre-mapped passages:
- "call me ishmael" — Moby Dick
- "it was a bright cold day in april..." — 1984
- "the library of babel" — Borges
- "in the beginning god created the heavens and the earth" — Genesis 1:1
- "to be or not to be that is the question" — Hamlet
- "it was the best of times it was the worst of times" — A Tale of Two Cities
- "attention is a currency" — High Noon Office
Three Demo Scripts
Run all four demos at once:
python3 demo.py
Or call individually:
from demo import locate, read_page_demo, entropy_heatmap, show_codex, add_to_codex
# Demo 1: Locate any text
locate("the library of babel")
# Demo 2: Read a page at coordinates
read_page_demo(hexagon=1, wall=1, shelf=1, volume=1)
# Demo 3: Entropy heatmap — 5 random coordinates, ranked by Shannon entropy + space frequency
entropy_heatmap(n=5)
# Demo 4: Codex — browse pre-mapped passages
show_codex()
The Math
Alphabet: abcdefghijklmnopqrstuvwxyz ,. — 29 characters (Borges' 25-char set extended to full Latin alphabet)
Forward (text → index): Interpret the filtered character sequence as a base-29 integer.
Coordinates:
Volume = index % 32
Shelf = (index // 32) % 5
Wall = (index // 160) % 4
Hexagon = index // 640
Page generation: SHA-256 counter-mode hash expansion. SHA256(gi_bytes || chunk_id) repeated to fill 3,200 bytes, each mapped to the alphabet via byte % 29. Deterministic, chaotic, sub-millisecond.
Note on the LCG approach: A Linear Congruential Generator with a=30, m=29^3200 maps small indices (e.g. 640) to tiny values like 19201, which decode as 3,197 leading 'a' characters when expanded to 3,200 base-29 digits. Hash expansion solves the distribution problem correctly.
Files
library-of-babel/
SKILL.md — This file
babel_core.py — Core math engine
demo.py — Four runnable demonstrations + codex functions
codex.json — Pre-mapped passages (add your own with add_to_codex())
references/
spec.md — Full technical specification
Setup
Pure Python 3 standard library — no external dependencies required.
cd library-of-babel
python3 demo.py
Built by Joseph Voelbel / High Noon Office. Questions or want to build on this? josephvoelbel.com/contact
Top skills in this category
Free Ride - Unlimited free AI
@shaivpidadiManages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates opencla...
Playwright (Automation + MCP + Scraper)
@ivangdavilaAutomates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).
n8n
@thomasansemsManage n8n workflows and automations via API. Use when working with n8n workflows, executions, or automation tasks - listing workflows, activating/deactivating, checking execution status, manually triggering workflows, or debugging automation issues.
Superpowers Dev Workflow
@wlshlad85Spec-first, TDD, subagent-driven software development workflow. Use when: (1) building any new feature or app — triggers brainstorm → plan → subagent executi...
Google Ads
@jdrhyneQuery, audit, and optimize Google Ads campaigns. Supports two modes: (1) API mode for bulk operations with google-ads Python SDK, (2) Browser automation mode for users without API access - just attach a browser tab to ads.google.com. Use when asked to check ad performance, pause campaigns/keywords, find wasted spend, audit conversion tracking, or optimize Google Ads accounts.