In this article, we will talk about Urbit. A virtual person server to achieve digital sovereignty.
Table of Contents
What is Urbit?
In a nutshell, Urbit is a virtual city of cloud servers. These servers are sovereign digital space and computing for individuals.
In a technical term, Urbit is a global filesystem namespace, where every directory is a Urbit server. It’s a combination of a programming language, OS, virtual machine, social network, and digital identity platform.
The Urbit project aims to solve the fragmented internet service architecture problem.
In today’s world, users use multiple internet services (ex- Gmail, Dropbox, Facebook, etc..). Jumping one service to another, users lose control of their data.
Urbit solves this problem by providing a personal server that preserves your data in one place, allows you to interact, build general-purpose services, and integrate them with third-party internet services.
For example — Currently, there are multiple places where people can publish content, such as Medium, Reddit, Facebook, Tumbler, etc. With Urbit, you can publish content through Urbit’s general-purpose publishing tool and then use 3rd party integration to publish those content on different platforms. This way, your original copy stored in your Urbit server, attached with your Urbit identity (Urbit ID).
Urbit has an interesting history. The idea of Urbit first conceived by Curtis Yarvin in 2002. He worked alone full-time on the project for the next 11 years, building a complete working POC 2013. Then, Yarvin co-founded a company named Tlon corporation in 2013 with Galen Wolfe-Pauly and John Burnham. Yarvin left the Urbit project in 2019.
Urbit is a new software stack designed to implement an encrypted P2P network of general-purpose personal servers. These personal servers are Unix-based deterministic machines called ‘Urbit.’ Much like a Docker or Kubernetes containers. Your personal server also called a Ship.
The current Urbit stack includes:
- Arvo: the Urbit OS, a functional operating system written in Hoon.
- Azimuth: the Urbit identity layer to enable the Urbit identity system, built on the Ethereum blockchain.
- Hoon: a strictly typed functional programming language whose standard library includes a Hoon-to-Nock compiler.
- Nock: a low-level combinator language whose formal specification fits readably on a t-shirt.
- Vere: a Nock interpreter and Unix-based virtual machine (Like JVM), which talks to the underlying Unix machine.
As Bitcoin keeps a log history of all the transactions you have done, Urbit keeps a log of every computation you ran on your Urbit OS. In every event, your personal Urbit’s state transitions to a new state. This is the Urbit transition function.
<input event, old state> -> <output actions, new state>
For example, if you type
(mul 3 2); which is multiplying 3 and 2, it will return six and transition your OS to a new state because you ran a computation. This event will be saved into Urbit’s event log history.
If Bitcoin is Money, Urbit is the Land. Urbit created a general-purpose public-key infrastructure to maintain a public registry of Urbit identities(Urbit ID) to determine ‘who owns what’. It uses Ethereum for this identity system, which is called Azimuth.
Urbit OS is a standalone personal server. However, to create any network, we need some sort of identity system. Urbit ID is your personal server id in Urbit global network (Ames). Using these IDs, people can interact with each other, form communities, create social networks, and enable different applications.
Each Urbit ID is just a number. From that number, it generates a pronounceable name and a visually identifiable sigil.
~nortex-ramnyd is 3,395,880,614.
Like any other file system, Urbit is a hierarchical system. At the top of the hierarchy, there are ²⁸ galaxies, where ~zod is the first galaxy with address 0.
Then there will be a total of 2¹⁶ possible stars under these galaxies. Check out the complete table below.
8 bits galaxy router ~syd
16 bits star router ~delsym
32 bits planet human ~mighex-forfem
64 bits moon device ~dabnev-nisseb-nomlec-sormug
128 bits comet bot ~satnet-rinsyr-silsec-navhut--bacnec-todmeb-harwen-fabtev
Urbit is completely is 100% pre-mined.
How to Run Urbit?
Now, let’s run Urbit in our local system. We will create a Comet, which is free identity space to use and access the Urbit network and apps.
I am using a Ubuntu machine. If you are using any other operating system, you can follow the instructions here.
Run the following commands to install and run Urbit.
curl -O https://bootstrap.urbit.org/urbit-v0.10.5-linux64.tgz
tar xzf urbit-v0.10.5-linux64.tgz
$ ./urbit -c mycomet
It will download and install Urbit binaries and create a new Comet named
mycomet. Allow it some time to install and sync the network.
Once completed, open your browser and enter
127.0.0.1:8080 . It will open a login screen.
We need an access key, to get this access key type
+code in your Urbit server terminal. It will generate a key, enter that key in the login page, and press continue.
It will open current apps provided by the Urbit. Here you can chat with other users, publish content, and create a community like Reddit. Every event will be logged and saved in your Urbit server. Developers can build more apps and integrate them third party applications.
Urbit is a pretty interesting project, aiming to provide digital sovereign spaces to individuals. As a developer, Urbit introduces you to multiple new technologies and programming languages. I also recommend you to checkout Urbit’s blog to learn about the philosophy and principles behind the project.