Urbit OS

[[Pasted image 20220720190030.png]]

HTTP/web apps

airlock npm package

  • Urbit OS defines the API interface/path where messages/pokes are sent to a global log and then dispatched to relevant apps.
  • Responses are streamed from paths in the app (are these wires?), which can be subscribed to.

Hoon

Strictly-typed, functional language. Compiles itself to Nock

Learn me a Hoon

Nock

Data model is simple: every piece of data is a Noun: an atom or cell.

  • atom: any unsigned integer
  • cell: ordered pair of nouns

Vere

Urbit VM and Nock runtime. Written in C.
Makes the Unix system calls. Also delivers encoded external events to Arvo.

Keeps an event log of everything in your urbits. Recovery by entire playback.

Not strictly necessary, Urbit could potentially be used on bare metal.

Zuse, Lull

standard libraries. data store/structures and transformation concerns.

Arvo

The OS. Written in Hoon. event handler. doesn’t do much but route things around and ensure consistency.

Purely deterministic. in: (input event + state) –> out: (output events, new state)

Events are stored in history. a linked list of nouns from first to last. This is in fact the formal state of Arvo state.

Arvo states essentially encapsulate all of the OS state in its data.

An event

formally: an event in the event log. not everything is an event.
an event can consist of any number of “moves” (kernel-level actions).

They are atomic.

Effects of an event are calculated, then persisted to the event log, and only then is the state changed.

we track where an event came from, where it’s going (and sometimes if we have to send something back). on a wire.

duct - chain of events. +$ duct (list wire).

Vanes:

The modules of the Arvo operating system

Ames

Networking, p2p, Identity

Behn

Timer events for vanes

Clay

Filesystem and build system

Marks

TK

Dill

Terminal driver

Eyre

HTTP server

Eyre

Gall

Application sandbox/manager

Userspace vane

gall-guide [[_index-app-school-live]]

Iris

HTTP client

Jael

Key storage (public and private)

Links to this page