Getting Started

There are many ways to get involved as a developer. This guide serves to give you a "lay of the land" for developing on Urbit. Let's start with what you can contribute to. At a high level, you can:

Below we'll go into more detail about each of these options and do our best to point you towards a number of additional helpful resources that can be found throughout the docs.

Build Clients

Urbit ships with Landscape, which can be thought of as its flagship client. Landscape can be broken into two different technical components: there's the collection of agents that utilize the Urbit for networking and data persistence, and the JavaScript client, which is an interface built with React.

Additionally, you can contribute to Landscape by tackling issues in its issue tracker and/or running the development stream.

You can create your own clients that uses Urbit to store data and interact with other Urbit ships without writing any Hoon code thanks to Urbit's HTTP APIs. This could be a chat client, a writing app, a game, or anything else that can communicate over HTTP.

To get started quickly with the language of your choice, see the list libraries that provide HTTP interfaces to Urbit here.

To learn more about how to work with Urbit's HTTP interface, follow this guide.

Alternatively, command-line interface (CLI) applications can be built using a library called shoe, which you can learn more about here. This does require Hoon knowledge.

Develop Agents

Gall agents can be best thought of as individual services with a statically-typed interface and built-in database. They're written in Hoon and all conform to a specific interface that's defined by the kernel vane called Gall.

Applications built on Urbit utilize a collection of different agents, each of which handle specific functionality. The Landscape architecture is a good reference implementation to see how this pattern works in practice.

If you want to learn how to build gall agents, your best bet is to first learn the Hoon programming language, and then follow that up with the Gall guide.

Contribute to Urbit Core

Working on the core means improving the Urbit project itself, working with the existing community of Urbit developers. The kernel is much more stable, but generally more challenging from an engineering standpoint.

Just arrived and unsure what to work on? An ideal way to get started is by experimenting with the system, talking to other developers, and reading (or contributing to) the documentation.

Prefer learning with an instructor? Our community runs an online course that covers the basics of Urbit development called Hooniversity. If course-based learning works well for you, we recommend you sign up.

The Urbit developer community congregates around the urbit-dev mailing list, the ~bitbet-bolbel/urbit-community group on Landscape, and Urbit’s GitHub repository. It’s a good idea to sign up, see what people are talking about, and introduce yourself.

Once you’re comfortable working with Urbit, check out the project’s issues on GitHub or some of our contribution bounties.

If you’re looking for some guidance, need help, or would prefer direct communication for your ideas, you can also always reach out to us directly at support@urbit.org.

Next Steps

From here, you'll probably want to learn more about: