betty.land

The Betty Ecosystem

A federated stack for local-first, semantic, and human-centered computing.

The Betty ecosystem is a family of open-source tools and protocols for building distributed, privacy-preserving, and semantically linked systems. It's designed for a web that belongs to everyone: developers, writers, researchers, and communities.

Rather than competing with today's SaaS giants, BeTTY defines the layer beneath them: a semantic, local-first foundation where humans and AI can operate together on verifiable, user-owned data. At its core, BeTTY combines encrypted storage, semantic data structures, and interoperable APIs into a coherent system that supports both web and offline applications.

Philosophy

BeTTY's more than a protocol, it's a rethinking of the Internet's social contract. BeTTY trades meaning, not attention, federation instead of siloing. By combining semantic standards, local-first storage, and open governance, BeTTY enables applications that are sustainable, comprehensible, and kind.

The BeTTY Stack

BeTTY is a UNIX-like assembly of tools and daemons:

ComponentRoleFunction
BeTTYProtocol/APIFederated, semantic data and messaging with LUMA
bettydNode ServerLocal-first and federated data exchange and management
nbsonStorage EngineThe default plugin for lightweight, encrypted-at-rest flatFiles.
bttyCommand-line interfaceControl plane for bettyd, httbd, and LUMA
httbdGatewayBridges BeTTY and legacy web-based, cross-platform apps
marXDownAuthoring AppMarkdown/BettyDoc translation layer
MemeographApplicationSocial networking and research app built on httbd + marXDown

Base Utilities and Plugins

Betty also includes a few more UNIX-style utilities and plugins for the above software:

ComponentRoleFunction
violetBettyDoc authoringA standalone binary for BettyDoc/BettyMsg conversion and manipulation.
synchronProcess SchedulerA btty plugin for managing servers and scheduled updates.
molloyTransclusion EngineA standalone binary for transclusion and integration of exterior data sources into bettyland.
janekCryptographic operatorA standalone utility for dealing with all things cryptographic in bettyland.
tagheadTag and Index ControlA plugin for bettyd which manages tags (many-to-many collections) and indexing.
lakehouseLUMA-to-backend bridgeA plugin for bettyd which takes LUMA commands and applies them to the storage backends like nbson.
callmeAliasing and routingA plugin for bettyd which allows aliases, links, and reverse proxies.

Component Software

bettyd

The daemon at the heart of BeTTY. bettyd manages encrypted semantic data, orchestrates federation, and ensures local-first persistence.

The nodes take encrypted JSON-LD requests (such a request is an example of a BettyMsg) then replies with the appropriate messages, documents, indexes and/or directory endpoints. Since we're building a semantic gopher to correct everything that went wrong with the web, bettyd uses old standards, but better. So bettyd serves encrypted and/or compressed JSON-LD "betty://" URLs via HTTP/1 on port 70. No awkward TLS/SSL handshakes here.

Bettyland's local-first nodes are not meant to be always-on (i.e., "available" in the CAP model), meaning we rely on sync-on-reconnect to provide "eventual availability." Bettyd server processes scale with active job queues; while awaiting federated messages from across bettyland, your servers need not be active (all the time) if they're periodically polling trusted servers to relay requests and notifications.

nbson

The flatFile backend. Because bettyland is local-first, nodes running bettyd focus on allowing access to the locally defined data storage backends and plugins, which store copies of resources pointed to by searches and transclusions. nbson stores BettyDocs in a compressed, line-structured binary format, combining the readability of ndjson with the structure of JSON-LD and the efficiency of bson. Local-first and encrypted at rest, it keeps your data close and secure.

nbson (a recursive acronym for "NBSON is Betty's Standard Object Notation" or Nota Betty Sunt Objectio Notatio in Latin) uses JSON files compressed and encrypted at rest with public/private key encryption enforcing security. Unlike in Project Xanadu, nodes aren't unique, but they are identified by the public key of the user or group/alias who starts up that node by entering their private key passphrase via btty.

Every document ("BettyDoc") is stored as encrypted JSON, identified by its content hash, and governed by public-key permissions instead of passwords.

btty

The command-line interface and control plane for bettyland. btty offers developers and researchers a unified shell to reate, query, and synchronize BettyDocs. Using the command-line automated integrations and scripts can be used to work with the LUMA API.

btty allows users to manage identities (through bettyd's built-in PKI), tags, indexes, plugins and system settings. Through btty, developers and administrators manage everything from document encryption to plugin integration and network federation. It is the human and programmatic interface to bettyd, orchestrating local data management, remote synchronization, and distributed application coordination.

Think of btty as package manager + systemd + ssh for the the operating system of the semantic Internet.

httbd

The BeTTY-to-web gateway. httbd serves BettyDocs over HTTP/S, bridging the local BeTTY graph to the wider web. It enables reactive, cross-platform apps that speak both semantic and social protocols.

It translates BeTTY API (LUMA) calls into standard HTTP responses, serving static pages built from decrypted JSON-LD data. Every page rendered by httbd is a live view of a BettyDoc, presented in readable, interactive form through familiar web technologies.

Apps built on httbd don't need to bother with OAuth or federated logins, httbd natively handles KEBAC and security contexts. Plugins like marXDown can even handle indexing and formatting, letting users create content without platform lock-in.

marXDown

Up with Markdown for a semantic internet!

marXDown bridges human-readable text and machine-readable documents, converting Markdown into BettyDocs using templates defined in bettyd's JSON-LD overrides. It's how people and systems write together.

marXDown is the next evolution in BeTTY's ecosystem: a plugin that transforms everyday Markdown documents into fully-fledged BettyDocs. It translates Markdown into JSON-LD structures (complete with metadata, templates, and inheritance) via BeTTY's override system. This enables writers, developers, and automated systems alike to participate in the Semantic Internet without ever leaving their Markdown editor.

Memeograph

The flagship application built on the BeTTY stack, using httbd + marXDown.

Memeograph is a cross-platform, privacy-first, censorship- and control-resistant killer app designed for people who produce, consume, and verify information.

Leveraging the full power of the BeTTY stack, it synchronizes social networking, RSS feeds, secure messaging, and research coordination into local BettyDocs for offline exploration. Providing a humane interface to all of BeTTY's functionality in local-first or cloud-hosted environments, from desktops to embedded devices.

See the full Memeograph site, which includes a demonstration inbox view.