14When you boot an Urbit we transfer the current version of the Arvo operating environment to your Urbit over our network. That is, the source for the system lives on your Urbit. Here we'll take a brief tour through the structure of a base Arvo desk.
19Looking at the top level of [the Arvo repo](http://github.com/urbit/arvo), or any Urbit desk that has been mounted to Unix we see something like:
32Let's step through directory by directory.
36This is where Gall apps live. Gall apps are stateful servers, sort of like unix daemons. One familiar one is `app/talk.hoon` which is the source code for Talk the urbit messaging transport layer. And there's also `app/dojo.hoon` — that's your shell.
40This is where the Arvo vanes live. Vanes are sort of like kernel modules. These are worth listing one by one:
44Ames is our network protocol.
48Behn is a simple timer.
52Clay is our filesystem.
56Dill is our terminal driver.
64Ford is our build system.
68Gall is our application model.
72Hoon is our programming langauge. Since Hoon compiles itself the language is actually specified in this source file.
76Zuse is the Hoon library.
78That's it. That's the whole system.
82`gen/` holds generators. Generators are short Dojo scripts.
86`lib/` holds shared libraries for programs. `lib/sole` is a good example — that's the console library that's shared by both Dojo in the command line, and the Dojo web client.
90This is where marks live. Marks are data type definitions used by Ford. A mark is like a mime-type, but specified in executable code.
94These are web renderers. A renderer handles web requests of a particular type.
96Default web requests in urbit are handled as a `.urb`, which is caught by the `urb.hoon` renderer. This wraps the request in our default `css` and `js` and adds some routing magic for certain paths.
100`sur/` contains shared data structures. Files in `sur` are like header files in C.
104There are the files publicly accessible to the web, as made possible by Eyre.
108This is the homepage for your urbit. You'll see it at `http://localhost:8080/` or `http://fintud-macrep.urbit.org/`.
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list