Project

Detailed information about the project as a whole, in addition to all of the component subprojects. Technical overviews, project status updates, protocol specifications, and user guides will all live here as they become available.

Contents

The Technical Elevator Pitch

From a technical perspective, the Coalescent Computer is a set of interoperable "clean slate" protocols that define machine instructions, data representation, and communication. The protocols are designed to be simple and enable rapid evolution, but are also given hard (but reasonable) constraints to incentivize efficiency gains over time instead of unbounded growth in data and computation.

From a historical perspective, however, the Coalescent Computer is a from-scratch rewrite of the personal computer, all the way down to the (virtualized) hardware. It is a reimagining of the original promises of the "personal computer revolution" in the context of ubiquitous modern networks.

The Coalescent Computer is the next stage of the personal computing revolution.

It can be described as local-first, agent-centric, data-centric, and network-coalescent. It is designed to enable user agency and ownership over data, and to be efficient with disk space and energy consumption. It uses no blockchains or tokens, and is designed to support the natural multiplicity of perspectives instead of artificial concept of consensus.

The Social Elevator Pitch

Just like DNA encodes the structure and behavior of an organism, there exists “social DNA” that dictates the overall shape and behavior of our human societies. The current dominant social DNA is a simple set of rules that elevates individuals and promotes competition to win scarce resources; I call this set of rules “Competitive Individualism”. These rules have played a primary role in shaping human organizations for a few centuries now, and the outcome has been predictable: centralized wealth and decision making, a competitive economic landscape geared toward material growth, and the atomization and commodification of the human being. Even more pressing is that this DNA has metastasized beyond the human superorganisms, and has started to eat the planet alive.

The path forward is to develop and spread a new social DNA. We need to understand that different “beliefs” come from different experiences, that right and wrong are not absolute, that the world is a complex web of relationships, and that we must make sense of things by coming together to share all of these perspectives; we need a new social DNA that I call “Cooperative Coalescence”.

And so we come to the Coalescent Computer.

Software did not create the Competitive Individualist status quo, but it has enabled its rapid ascent to near total global control over the past few decades. Likewise, software will not be the silver bullet that shifts humanity onto a better path… but it can help.

The Coalescent Computer reshapes computing from the lens of a Cooperative Coalescent view of the world, giving people both a playground to practice in, and a toolbox for building a future of liberation and cooperation. It’s designed to empower individual human beings, to enable alternative local cooperative economies, and foster a global open information commons. It is designed to allow for the natural multiplicity of perspectives, as opposed to the authoritarian “fact-based” reality of centralized servers or blockchains.

The Coalescent Computer does not remove the hard, necessary work of building a global, distributed movement of consciousness, but it is a powerful tool to be used in service of that goal.

Project Component Overview

The Coalescent Computer is composed of three parts: the Execution Environment, the Unified Data Model, and the Network and Communication stack.

Execution Environment

Coalescent Instruction Set (COINS)

The execution environment is composed of a single-byte instruction set called coalescent instruction set (COINS), that targets a stack machine architecture called Core. COINS/Core is designed to enable data manipulation of variable width data (8, 16, 32, 64 bits wide) between three 256-byte stacks and a single 8-byte register. It also provides integer and floating point arithmetic, bitwise operations, and flow control, as well as reading and writing to 64KB of instruction RAM, 4GB general purpose RAM, 16 devices, and 4 DMA controllers.

Co

Co is a concatenative programming language that compiles to COINS. It allows COINS assembly instructions in addition to parameterized macros that get resolved at assembly time and routines that are invoked at runtime. Because the language was designed in tandem with the COINS spec, Co source code tokens are actually integrated into the single-byte COINS spec, allowing for a simple and coalescent binary representation.

Cohost

Cohost executes COINS, and hosts the Co language. It is a reference implementation of the Core CPU virtual machine which conforms to the COINS specification. It will also provide helper functionality to dynamically load routines into memory while the CPU is running, though this will eventually be baked into a lightweight operating system that runs on the core itself. Cohost is written in Rust.

Unified Data Model

Coalescent Data (CODA)

Coalescent Data is a self-describing and deterministic binary data protocol that describes how to encode, decode, and reference fully-structured data. All canonical CODA objects are prefixed with the hash of their schema definition, permanently linking the two. It can be thought of as a replacement for JSON, but with mandatory schemas and binary representation as the default.

Coalescent Database (CDB)

CoalesentDB is a multi-modal database that speaks the CODA protocol. It decomposes coalescent data into a storage efficient format, and understands CODA schemas to allow for querying and link-following. Since CDB deals with binary data, it also easily integrates with the Core virtual CPU to act as a replacement for a hardware "disk", using a DMA controller to directly pass CDB queries to the database and write CODA data back into RAM. CDB also implements the Coda Transfer Protocol (CTP) to allow for querying and data transfer over the network.

Network and Communication

Relay Protocol

The relay protocol is a foundational networking protocol that aims to "replace" TCP and UDP by extending the pattern of nested header and data blocks found in the lower level network protocols into arbitrarily higher layers of the protocol stack. (In practice, replacing TCP/UDP is nearly impossible, so Relay ends up integrating those protocols.) It achieves this by defining a protocol for layered protocol stacks, where each layer of the protocol stack can also be negotiated by the two peers making a connection. This allows rapid protocol evolution and backwards compatibility.

CODA Transfer Protocol (CTP)

The CODA Transfer Protocol (CTP) is a data transfer protocol for coalescent data. If you think of Relay as a replacement for transports like TCP, then CTP is the replacement for HTTP. Unlike (modern) HTTP, it is designed to P2P first, allowing any two machines that speak CODA to transmit data between them, in an either one-to-one or many-to-one fashion. CTP defines an efficient wire format for transmitting CODA, which can be bulky in canonical form, in addition to providing rules for chunking files to support “bittorrent-style” on large downloads. CTP also allows many objects to be requested at once via their hash.

Project Status

Last Updated 10/21/23

Active Development

CDB Initial Development

The Coalescent Database is now under early active development. The first goal is to build a baseline database that can store and query simple CODA objects that can be accessed via a REST API for faster iteration.

Cohost Baseline Implementation

The VM now executes programs and also supports extensible device development. As a proof of concept, the cohost CLI includes a 'Console' device that can send and receive data from the CPU.

Co Baseline Implementation

ROM assembly and symbol export is now functional, and the current focus is on making the content addressable code library more intuitive to work with.

All Components

COINS Baseline Implementation
CODA Draft Specification
Relay Protocol Design Phase
CTP Initial Research