A temporal tree-graph database written in Go — every value keeps its full history, queried as a decentralized peer-to-peer mesh and driven by the MBL language.
AmorphDB is a temporal tree-graph database written in Go where every value has a history — an assignment records a change rather than overwriting what came before. Data is organized as a hierarchy of attributes, each holding a chain of timestamped instances, so the full evolution of any piece of data is queryable at any point in time. It runs as a decentralized mesh of equal peers, with no central coordinator, and is accessed through MBL, a notation built around scope resolution and path traversal.
Core ideas
- Temporal by default.
my.x = 5thenmy.x = 10produces two preserved instances — queries can retrieve any historical value, including time-range queries. - Reactive programming. Watchers fire automatically when data changes: multi-path watchers, append watchers with predicates, and heartbeat atomicity with staged writes.
- Hierarchical data model. Three storage structures — attributes (the tree), instances (temporal chains), and values (content-addressed and deduplicated).
- Mesh distribution. Nodes form a peer-to-peer mesh with heartbeat, gossip, and bridge connections between separate meshes.
- Capability-based security. Five permission types
(
@read,@write,@expand,@grant,@purge) with cascade inheritance, provenance stamps, and client-side filters.
A taste (MBL)
# Temporal history — both values are preserved
my.account.balance = 100
my.account.balance = 250
my.account.balance[@2026-01-01] # query a historical value
# Record literals and projection
my.person = { name: "Matthew", age: 55, job: "Engineer" }
my.person{ name, age }
# Reactive watcher
my.automation.balance_check: watch(my.account.balance, my.account.limit):
if my.account.balance > my.account.limit:
my.account.status = (quietly) "overlimit"
Components
amorphd— service daemon: storage, mesh networking, and MBL execution.amorph— client REPL and script runner.amorphctl— administrative tool: mesh management, status, and compaction.
Installation
Build the three binaries from source with a Go toolchain, then start a standalone node and connect:
go build ./cmd/amorphd
go build ./cmd/amorph
go build ./cmd/amorphctl
amorphd # start a standalone node
amorph # connect with the client REPL
Downloads & installation
Builds are coming soon. Grab the source from GitHub for now.