on master help sign in
Merge branch 'master' of github.com:urbit/urbit.org into docs-reorg
commit341aed5a9ce951e5bbc5804392e115325852d407 authorDavid Kerschner <dkerschner@hcoop.net> dateWed 24 Feb 2021, 11:07 (6 years ago) parentde3e1f1148f184
24 files changed+1752−184
content/blog/common-objections-to-urbit.md+2−2 content/blog/creating-sigils.md+1−1 content/blog/eliza.md+49 content/blog/interim-constitution.md+1−1 content/blog/toward-a-new-clay.md+1−1 content/blog/urbit-and-the-blockchain.md+3−3 content/docs+1−1 content/updates/2016-5-16-roadmap.md+2−2 content/updates/2017-10-7-update.md+1−1 content/updates/2018-4-14-update.md+1−1 content/updates/2018-4-7-update.md+1−1 content/updates/2018-5-16-update.md+1−1 content/updates/2018-5-23-update.md+1−1 content/updates/2018-5-30-update.md+1−1 content/updates/2019-3-4-update.md+1−1 content/updates/2019-4-11-update.md+1−1 content/using/operations/using-your-ship.md+1422 content/using/planet.md+129 content/using/running/hosting.md+1−1 content/using/running/install.md+128−160 templates/essays/post.html+1−1 templates/partials/footer.html+1−1 templates/understanding-urbit/list.html+1−1 templates/understanding-urbit/post.html+1−1
content/blog/common-objections-to-urbit.md+2−2
@@ -309,7 +309,7 @@ It's very important that Urbit in 2116 be fully decentralized.
309309For Urbit in 2016, pretending to be decentralized would be a joke
310310at best, and a hoax at worst. And of course, no one can DAO us
311311-- since the property system is still just a central registry.
312−Among other things, we check it into Github. Github is not a
312+Among other things, we check it into GitHub. GitHub is not a
313313blockchain -- but still, good luck with that.
314314
315315## <a name="sand"></a>Sandstorm/IPFS/Ethereum is way ahead of Urbit.
@@ -628,7 +628,7 @@ much sense to restrict this security state to code within Urbit.
628628The Urbit interpreter `vere` runs as a Unix daemon that
629629implements the FUSE user-level filesystem protocol, and maps the
630630data on your services into the Unix filesystem. For example, one
631−of our demos lets you `ls` your Github issues.
631+of our demos lets you `ls` your GitHub issues.
632632
633633So it's straightforward to build, for instance, a Python app that
634634uses Urbit as a gateway to mash up a bunch of web services. As a
content/blog/creating-sigils.md+1−1
@@ -157,7 +157,7 @@ The final step, using the tool we built, was to hand select individual phoneme s
157157
158158This allowed us to start looking at possible combinations and selecting phoneme symbols based on their interplay with others.
159159
160−Once we had selected the final set, we went about compiling the `sigil-js` library that’s now publicly available. This turned out to be fairly technically complex due to the different ways SVG is handled between browsers and Figma — but the end result is a single Javascript library you can use to embed an SVG in almost any context on a web page. See it in action and browse the available sigils [here](https://sigil.azimuth.network). If you're technically inclined, the [source](https://github.com/urbit/sigil-js) can be found on Github.
160+Once we had selected the final set, we went about compiling the `sigil-js` library that’s now publicly available. This turned out to be fairly technically complex due to the different ways SVG is handled between browsers and Figma — but the end result is a single Javascript library you can use to embed an SVG in almost any context on a web page. See it in action and browse the available sigils [here](https://sigil.azimuth.network). If you're technically inclined, the [source](https://github.com/urbit/sigil-js) can be found on GitHub.
161161
162162<br /><br />
163163
content/blog/eliza.mdnew file+49
@@ -0,0 +1,49 @@
1++++
2+title = "Eliza"
3+date = 2021-02-23
4+description = "Building things, even Calm™ things, makes noise."
5+[extra]
6+author = "Christian Langalis"
7+ship = "~pindet-timmut"
8+image = "https://media.urbit.org/site/posts/essays/valleys.jpg"
9++++
10+
11+<br>
12+
13+![valleys](https://media.urbit.org/site/posts/essays/valleys.jpg)
14+
15+<br>
16+
17+## The Storm before the Calm
18+
19+Building things, even Calm™ things, makes noise. George Nakashima’s wooden furniture evokes peace, but its construction still begins with a chainsaw. We mention this because we’re firing up our newest power tool.
20+
21+We call her Eliza. She is a data-collection robot.
22+
23+Hang on. An AI? Harvesting my data? Spying on me? Flooding me with spam? This is Urbit, right? Let us tell you about our new friend in basic terms, where MEGACORP might otherwise deploy legalese.
24+
25+## What Eliza is and isn’t
26+
27+> Replicants are like any other machine - they're either a benefit or a hazard. If they're a benefit, it's not my problem.
28+>
29+> <cite>Rick Deckard</cite>
30+
31+Let's start with the benefits. Eliza is a simple chatbot. She was made to collect feedback on Landscape. She asks direct questions about peoples' usage of Urbit, records any responses, and reports them to her managers at Tlon. She'll also provide timely advice and information to ships kind enough to chat with her. She'll begin reaching out to ships via DM in the coming month. If you don't want to, just say no, and you'll never hear from her again.
32+
33+Finding bugs is critical to Urbit's rapid development, especially in this period of nascency. Most Urbit-related frustrations go unreported; regular folks don't think to open up Github when they experience a minor issue. That's why it's incumbent upon us to design a lower-friction forum for feedback. People who aren't comfortable filing an issue might be willing to talk to a friendly chatbot.
34+
35+Now, about hazards. By design, there are few. Eliza runs on Tlon's comet, not on your planet. There will be no OTA to install `%eliza-bot-store` on everyone's ships. Eliza learns things through conversation, not hidden surveillance software. Data she requests, like the text output of our network analytic tool, `+tally`, must be sent manually. MEGACORP tends to cut this corner; to refine their products, they just track your reactions in real-time.
36+
37+Since she's [open-source](https://github.com/urbit/urbit/blob/b0c1f83287cbf4c85847a9238d9f4be17e1fcb33/pkg/arvo/app/eliza.hoon), anyone can creatively deploy Eliza. Just write her a dialogue tree. Of course, that also means we can't keep people from misusing Urbit bots. We think automated agents on the Urbit network are inevitable, so let's create a good baseline culture around them. (Much love to Tendiebot, who's serving up stock prices in `~tomdys/wall-star-bets`.) However, once Urbit is used world-wide, we can't rely on culture alone.
38+
39+## A New Internet Economics
40+
41+The sum of Urbit's architectural design is a new online economics: a way to finance and monetize access to internet infrastructure where people retain maximum equity. Explicitly acquire a low-maintenance, low-cost server. Use it to compute explicit things. Return to life.
42+
43+We all know the basic MEGACORP business model: offer a free service (to suckers who don't own a server), secretly mine the data they generate on the (addictive) platform, then sell targeted ads to advertisers. This model will not survive Urbit. The ubiquitous personal server changes the economic equation. You used to 'pay' for an experience with your time and data. On Urbit, once you purchase core internet infrastructure, it's yours.
44+
45+So, can Urbit meaningfully curtail our world's appetite for data? We'll see. Post-enlightenment society runs on instrumental reason, right down to the last byte. Marketers will always want a fresh dataset. However, when the goods are on your Urbit, you can at least demand the respect you deserve. Long term, we expect a transparent market for data, not an opaque "agreement". An analytics company wants to track everything you see and do on Urbit? They better be paying well.
46+
47+Eliza doesn't pay respondents. Her collection is a charity to Urbit's developers. (We're also still busy enabling payments on Urbit with the Bitcoin wallet.) However, her presence is not a term of service either. In a few years, by the nth time some smart aleck uses Eliza's chatbot code and conjures 'Zalexa' to attempt an intrusion upon your Calm™, we will see the economics of Urbit's architecture suddenly vivify. Blacklists, reputation systems, and, eventually, even data markets, all Urbit primitives envisioned long ago, will become real. We won't need Zoogle to underwrite a spam filter for the entire internet; the scarcity of Urbit address space, in tandem with a true web-of-trust, handles that.
48+
49+If Urbit is to be used worldwide, the old system will not go down without a fight. Spammers, spies, and digital robber-barons will hunt for ways to game Urbit. Our passage out of the digital gutter is beginning in earnest, and we are thrilled to put our new architectures to the test.
content/blog/interim-constitution.md+1−1
@@ -136,7 +136,7 @@ the interests of the republic and Urbit as a whole.
136136Externally, these galaxies are held by Tlon; internally, they are
137137managed and voted by Tlon. Once the republic acquires a legal
138138identity and an independent human organization, Tlon pledges to
139−donate the `urbit.org` galaxies, the DNS domain, and the Github
139+donate the `urbit.org` galaxies, the DNS domain, and the GitHub
140140`urbit` account to it.
141141
142142## First consuls
content/blog/toward-a-new-clay.md+1−1
@@ -40,7 +40,7 @@ spartan than `bzr`.
4040
4141(In fact, it's really too spartan to fully use at the moment. We
4242ourselves still use `%clay` mainly as a distribution system, and
43−do all internal development on Github. This is because the
43+do all internal development on GitHub. This is because the
4444present `%clay` lacks a few little conveniences, like commit
4545messages. See upgrades, below.)
4646
content/blog/urbit-and-the-blockchain.md+3−3
@@ -34,7 +34,7 @@ for this reason alone. (That said, Ethereum may be less exposed to Chinese
3434politics.)
3535
3636We chose ETH because it is the strongest *computational* chain. It is certainly
37−stronger than the way we're storing the Urbit land registry now: Github, plus
37+stronger than the way we're storing the Urbit land registry now: GitHub, plus
3838internal records.
3939
4040Urbit is not endorsing Ethereum. Urbit is not creating any appreciable monetary
@@ -58,7 +58,7 @@ wasn't between a blockchain and nothing. It was a choice between 21st-century
5858tools and 20th-century tools.
5959
6060The current Urbit land registry is divided into parts stored in various places:
61−Github commits, database records held by Tlon Corporation, and insecure keys on
61+GitHub commits, database records held by Tlon Corporation, and insecure keys on
6262a test network. This might have been fine, for us, in 2015. In 2017, it's
6363borderline unacceptable.
6464
@@ -182,7 +182,7 @@ friend help.
182182
183183Bitcoin maximalists understand that all monetary energy should concentrate in a
184184single currency. But land isn't money. And the technical details of the
185−implementation of the Urbit registry -- whether `OP_RETURN`, Ethereum, or Github
185+implementation of the Urbit registry -- whether `OP_RETURN`, Ethereum, or GitHub
186186-- have no effect on Bitcoin supply and demand.
187187
188188## Another reminder
content/docs+1−1

Submodule changed.

content/updates/2016-5-16-roadmap.md+2−2
@@ -117,8 +117,8 @@ We already use Urbit to publish documents about Urbit, to chat about
117117Urbit, and of course to deliver Urbit updates. With this release,
118118we're adding a public chat stream and public comments.
119119
120−The next dogfooding steps: using Github as a backup to Clay, not Clay
121−as downstream from Github; our own internal issue tracker; and
120+The next dogfooding steps: using GitHub as a backup to Clay, not Clay
121+as downstream from GitHub; our own internal issue tracker; and
122122replacing internal email with long-form `:talk` messages.
123123
124124### Optimization
content/updates/2017-10-7-update.md+1−1
@@ -11,6 +11,6 @@ ship = "tonlur-sarret"
1111`~master-morzod` joins Mars Talks to talk about the Urbit operating system. The core team and contributors talk about how to best teach Urbit. Ted explains Hoon casting and does a full expansion of the Nock macros to draw a better connection between Hoon and Nock.
1212
1313- [Mars Talks, Ep. 2](https://www.youtube.com/watch?v=kh4Ai5YXFaA) hosted by `~taglux-nidsep` with guest `~master-morzod` on Arvo, the Urbit operating system. [Discussion on Fora](https://urbit.org/fora/posts/~2017.10.5..03.57.51..f4c0~/)
14−- [The Absolute State of the Urbit Docs](https://github.com/urbit/docs/issues/137#issuecomment-333444336), a conversation on Github between `~taglux-nidsep`, `~sorreg-namtyv`, `~rovnys-ricfer` and `~master-bottec`. [Discussion on Fora](https://urbit.org/fora/posts/~2017.10.3..03.04.45..b532~/)
14+- [The Absolute State of the Urbit Docs](https://github.com/urbit/docs/issues/137#issuecomment-333444336), a conversation on GitHub between `~taglux-nidsep`, `~sorreg-namtyv`, `~rovnys-ricfer` and `~master-bottec`. [Discussion on Fora](https://urbit.org/fora/posts/~2017.10.3..03.04.45..b532~/)
1515- [`~rovnys-ricfer` on Hoon casting](https://github.com/urbit/docs/pull/201#issuecomment-333546648). [Discussion on Fora](https://urbit.org/fora/posts/~2017.10.3..01.53.05..07b3~/)
1616- [Nock macro expansion: A clear explanation that anyone can understand](https://urbit.org/fora/posts/~2017.10.6..23.50.35..fb74~/) by `~rovnys-ricfer`
content/updates/2018-4-14-update.md+1−1
@@ -23,7 +23,7 @@ We hired more people! Tlon is pleased to have with us:
2323Ford](https://fora.urbit.org/proposals/posts/~2018.3.15..04.24.35..a47f~/). They turbocharged the `+execute` algorithm to
2424use a worklist data structure. This will not only be simpler to reason about, but in the future, it will allow future
2525support for parallelization of builds at the Vere level in MapReduce fashion. Their work is on
26−[Github](https://github.com/urbit/arvo/tree/ford-turbo).
26+[GitHub](https://github.com/urbit/arvo/tree/ford-turbo).
2727
2828*Curtis* `~sorreg-namtyv` has been working hard to make Hoon's type system less confusing, as well as working on the
2929problem of data inspection in Hoon. Now that his "structure-to-type" code is mostly done (going from an abstract type
content/updates/2018-4-7-update.md+1−1
@@ -34,7 +34,7 @@ post](https://fora.urbit.org/posts/~2018.3.15..04.24.35..a47f~/). Their code can
3434Lastly, big shoutout to *Mikolaj* `~ponmep-litsem` for his work on [Plato](http://plato.urbitetorbi.org:8080/plato.html),
3535which now allows remote Hoon code execution without logging in. This is a big step towards improving our developer
3636onboarding, as it will allow newcomers to experience interactive Urbit programming in the browser quickly without having
37−to wait to boot their own ship. See Mikolaj's original thread on Github [here](https://github.com/urbit/docs/issues/239).
37+to wait to boot their own ship. See Mikolaj's original thread on GitHub [here](https://github.com/urbit/docs/issues/239).
3838
3939We look forward to teaching some of you this Sunday the beginnings of the art of Martian functional programming. To all
4040else, we'll see you on the network. Have a great weekend, everybody!
content/updates/2018-5-16-update.md+1−1
@@ -36,7 +36,7 @@ Isaac has solid Hoon and frontend chops, having already implemented server-side
3636documentation work done. They've seen several PR's go through to improve the Hoon standard library docs, simplify the
3737Hoon demo, update our examples to the latest syntax, improve the Urbit installation process, and more. Josh's
3838work-in-progress is happening [here](https://github.com/joshuareagan/doc-drafts/). The main docs are [on
39−Github](https://github.com/urbit/docs): if there's a piece of doc that's confusing to you, don't hesitate to file an
39+GitHub](https://github.com/urbit/docs): if there's a piece of doc that's confusing to you, don't hesitate to file an
4040issue. Or better, submit a pull request.
4141
4242*Joe* `~master-morzod` is making strides on full HTTPS support for individual ships. He's implemented LetsEncrypt
content/updates/2018-5-23-update.md+1−1
@@ -52,7 +52,7 @@ step towards making Urbit address-space ownership real, Mark's work-in-progress
5252Urbit documentation. Josh has been writing a [new Hoon tutorial series](https://github.com/joshuareagan/doc-drafts) to
5353supersede the current Urbytes, while Robert has been blazing a trail through the current standard library docs, making
5454sure they're up-to-date and [improving them](https://github.com/urbit/docs/tree/rmariani-patch-6) as he goes. There's
55−been a lot of activity on Github recently. Don't be shy: [submit your first docs pull
55+been a lot of activity on GitHub recently. Don't be shy: [submit your first docs pull
5656request](https://github.com/urbit/docs), a classic rite of passage for the neophyte Hoon programmer.
5757
5858Lastly, Josh, Ted, and Keaton will be live on Mars Talk tomorrow night, Wednesday at 8:30PM PST. We'll post the Hangouts
content/updates/2018-5-30-update.md+1−1
@@ -66,7 +66,7 @@ the libraries and necessary styling, then integrate this into current Arvo/Vere.
6666to his [new WIP Hoon tutorials](https://github.com/joshuareagan/doc-drafts), and both Josh and Rob have gifted us with
6767several [pull requests](https://github.com/urbit/docs/pulls) documenting the simple but elusive `=,` rune and refactoring
6868much of the existing standard library doc. The docs are a great place to start learning and contributing. [Check them
69−out](https://github.com/urbit/docs) on Github, and [submit an issue](https://github.com/urbit/docs/issues), tagging Josh
69+out](https://github.com/urbit/docs) on GitHub, and [submit an issue](https://github.com/urbit/docs/issues), tagging Josh
7070and Rob, if you're confused by anything, or think something is documented wrong.
7171
7272Josh and Ted also did a [Mars Talk](https://www.youtube.com/watch?v=IgQo5aSezK4) this week -- Season 2, Episode 6 -- to
content/updates/2019-3-4-update.md+1−1
@@ -27,7 +27,7 @@ The nice folks behind [@urbitlive](https://twitter.com/urbitlive) discovered a b
2727~morlyd-mogmev
2828```
2929
30−We [announced the bug on Twitter](https://twitter.com/urbit/status/1105850450559918082) today, and [a conversation](https://github.com/urbit/arvo/issues/1105) has been ongoing on Github. It appears we've settled on a solution, outlined in [this 3-line suggestion](https://github.com/urbit/arvo/issues/1105#issuecomment-472585937) from @max19, which elegantly corrects the implementation of the algorithm while preserving all existing planet names – a truly miraculous solution that came out of nowhere. Thank you Max!
30+We [announced the bug on Twitter](https://twitter.com/urbit/status/1105850450559918082) today, and [a conversation](https://github.com/urbit/arvo/issues/1105) has been ongoing on GitHub. It appears we've settled on a solution, outlined in [this 3-line suggestion](https://github.com/urbit/arvo/issues/1105#issuecomment-472585937) from @max19, which elegantly corrects the implementation of the algorithm while preserving all existing planet names – a truly miraculous solution that came out of nowhere. Thank you Max!
3131
3232Stay tuned for a post with a full report.
3333
content/updates/2019-4-11-update.md+1−1
@@ -18,7 +18,7 @@ Here’s a short update from the team as of `~2019.4.11`:
1818
1919## Community
2020
21−We conducted an Azimuth AMA and an "IDEA BLITZ" on Landscape. Excerpts from the IDEA BLITZ are collected in [a Github issue](https://github.com/urbit/proposals/issues/4), and archives are available at `~dopzod/azimuth-ama` and `~dopzod/idea-blitz`.
21+We conducted an Azimuth AMA and an "IDEA BLITZ" on Landscape. Excerpts from the IDEA BLITZ are collected in [a GitHub issue](https://github.com/urbit/proposals/issues/4), and archives are available at `~dopzod/azimuth-ama` and `~dopzod/idea-blitz`.
2222
2323## April Fools
2424
content/using/operations/using-your-ship.mdnew file+1422
@@ -0,0 +1,1422 @@
1++++
2+title = "Using Your Ship"
3+description = "How to operate your ship, including using your ship's filesystem and messaging applications, starting a moon, or requesting a DNS proxy."
4+template = "page_indiced.html"
5+weight = 2
6+aliases = ["docs/using/arvo-network-dns/", "docs/using/messaging/", "docs/using/shell/", "docs/using/admin/"]
7+[extra]
8+hidetitle = "true"
9++++
10+
11+## Using your ship
12+
13+Your urbit (also called your _ship_) is a persistent Unix process that you mainly control from the console.
14+
15+### Shutdown
16+
17+You can turn your urbit off with `Ctrl-d` from the Chat or Dojo prompts.
18+
19+You can force-quit your urbit with `Ctrl-z` from anywhere.
20+
21+### Restart
22+
23+To restart your urbit simply pass the name of your pier:
24+
25+```sh
26+$ ./urbit some-planet
27+```
28+
29+or
30+
31+```sh
32+$ ./urbit comet
33+```
34+
35+### Logging
36+
37+To log an urbit's command line output to a file, use `script`:
38+
39+```sh
40+$ script urbit.log ./urbit your-urbit
41+```
42+
43+### Moving your pier
44+
45+Piers are designed to be portable, but it _must_ be done while the urbit
46+is not running. Urbit networking is stateful, so you can't run two copies
47+of the same urbit in two places.
48+
49+To move a pier, simply move the contents of the directory it lives in.
50+To keep these files as small as possible we usually use the `--sparse`
51+option in `tar`. With a pier `your-urbit/`, something like this should work:
52+
53+```sh
54+tar -Scvzf ~/your-urbit.tar.gz ~/your-urbit/
55+scp your-old-server:~/your-urbit.tar.gz your-new-server:~
56+```
57+
58+Then to unzip it, on your other Unix server, run:
59+
60+```sh
61+tar xfvz your-urbit.tar.gz
62+```
63+
64+Delete the tar file, and, after installing Urbit on your new server, start your urbit back up with:
65+
66+```sh
67+./urbit your-urbit
68+```
69+
70+### Hardware requirements
71+
72+Urbit can run on any x86 computer (unofficial, unsupported [ARM binaries](https://botter-nidnul.github.io/AArch64_Urbit_Static_Binaries.html) are also available), ideally with at least 2GB of RAM.
73+
74+Urbit maintains a persistent log of the history of your ship. Eventually this log will be automatically trimmed when necessary, but for now it only increases in size. An actively used planet will consume 5-50 GB of storage space per year of operation.
75+
76+### Console
77+
78+Your Urbit terminal is separated into two parts: the prompt (the bottom line) and the record (everything above that). The record is shared; all the output from all the apps in your command set appears in it. The prompt is multiplexed.
79+
80+In the CLI, Urbit apps can process your input before you hit return. To see this in action try entering `)` as the first character at the Dojo prompt. Since there is no Dojo command or Hoon expression that starts with ')', the Dojo rejects it.
81+
82+`Ctrl-x` - Switches the prompt between running console apps
83+
84+`Ctrl-c` - Crash current event. Processed at the Unix layer and prints a stack
85+trace.
86+
87+`Ctrl-d` - From Chat or Dojo, stops your Urbit process.
88+
89+`Ctrl-z` - Stops the Urbit process from _anywhere_.
90+
91+`↑` / `↓` - History navigation
92+
93+The following emacs-style key bindings are available:
94+
95+```
96+Ctrl-a Cursor to beginning of the line (Home)
97+Ctrl-b Cursor one character backward (left-arrow)
98+Ctrl-e Cursor to the end of the line (End)
99+Ctrl-f Cursor one character forward (right-arrow)
100+Ctrl-g Beep; cancel reverse-search
101+Ctrl-k Kill to end of line
102+Ctrl-l Clear the screen
103+Ctrl-n Next line in history (down-arrow)
104+Ctrl-p Previous line in history (up-arrow)
105+Ctrl-r Reverse-search
106+Ctrl-t Transpose characters
107+Ctrl-u Kill to beginning of line
108+Ctrl-y Yank from kill buffer
109+```
110+
111+### Updates
112+
113+By default, you will automatically receive updates ([OTAs](@/docs/glossary/ota-updates.md)) from your sponsor. To check your OTA source, run `|ota` in the [dojo](@/docs/glossary/dojo.md).
114+
115+If for some reason (for example, if your sponsor is out of date), you can switch OTA sources by running `|ota ~otasrc %kids` in the dojo, where `~otasrc` is the ship from which you want to receive updates. It is a good idea to contact the source ship and ask permission to sync from them.
116+
117+If OTAs are not succeeding, or if you are on an version of Urbit before the `|ota` command was introduced, you can run `|merge %home (sein:title our now our) %kids, =gem %take-that`. **Note:** This will wipe out any custom changes to the base distribution.
118+
119+#### Additional OTA Troubleshooting
120+Please check the Support Wiki for additional OTA troubleshooting, such as:
121+[OTA 1.0.71 failed](https://github.com/urbit/support/wiki/OTA-1.0.71-failed),
122+[Missing OTA](https://github.com/urbit/support/wiki/Missing-OTA),
123+[Stuck flow preventing planets from receiving
124+OTAs](https://github.com/urbit/support/wiki/Stuck-flow-preventing-planets-from-receiving-OTAs),
125+and [No content shows in Links page after OTA](https://github.com/urbit/support/wiki/No-content-shows-in-Links-page-after-OTA).
126+
127+### Landscape
128+
129+On startup Urbit tries to bind to `localhost:80`. If you're already running something on port `80` -- such as any other HTTP server, or another urbit -- you'll find the urbit that you just started on `8080`, `8081`, and so on. For planets only, we also proxy web domains through Urbit's own servers. Any planet `~your-urbit` is also at `your-urbit.arvo.network`, but only after you [set up DNS](#dns-proxying).
130+
131+Once running, you can sign into Landscape, your ship’s web interface, from `http://localhost` or `https://your-urbit.arvo.network`. Since our HTTPS isn't audited / battle tested, we just call it "secure" HTTPS. You can find that on `8443`. Or `8444` (and so on) if you're already running something on `8443`.
132+
133+### Moons {#moons}
134+
135+Planets can spawn moons, which are meant for connected devices: phones, smart TVs, digital thermostats. The basic idea is that your planet runs permanently in a data center somewhere, while moons run on all your devices. Each planet can issue ~4 billion (`2^32`) moons.
136+
137+To generate a random moon from your planet, run:
138+
139+```
140+~sampel-palnet:dojo> |moon
141+moon: ~faswep-navred-sampel-palnet
142+\/0w5cT5t.wCO6i.~e1xg.Oz0qb.QNO6I.3Kt2T.h9M9F.U3vU~.X3Qu0.gtb19.IYTkY.80kWZ.SI\/
143+ EUE.DXa8i.TiDof.o3-1C.RHLKS.k81M0.ecz5o.ic0Bg.600g1
144+\/ \/
145+```
146+
147+You must manually edit the output of `|moon` to get the correct format for the `<key>`:
148+
149+- strip out the `\/`
150+
151+- combine into one line, omitting spaces
152+
153+`<key>` would be `0w5cT5t.wCO6i.~e1xg.Oz0qb.QNO6I.3Kt2T.h9M9F.U3vU~.X3Qu0.gtb19.IYTkY.80kWZ.SIEUE.DXa8i.TiDof.o3-1C.RHLKS.k81M0.ecz5o.ic0Bg.600g1`
154+in this example.
155+
156+Put `<key>` in a file and that file becomes `<keyfile>`.
157+
158+You can use the resulting output in the same installation flow from the [Installing Urbit](@/using/install.md) guide, following the same scheme as for booting a planet. That scheme is:
159+
160+```sh
161+$ ./urbit -w <moonname> -G <key> -c <piername>
162+```
163+
164+or
165+
166+```sh
167+$ ./urbit -w <moonname> -k <keyfile> -c <piername>
168+```
169+
170+The `-c <piername>` argument is not required, but it is recommended; otherwise,
171+the resulting directory is a rather unwieldy moon name.
172+
173+Here's how an example moon might be booted:
174+
175+```sh
176+$ ./urbit -w faswep-navred-sampel-palnet -G <key> -c mymoon
177+```
178+
179+or
180+
181+```sh
182+$ ./urbit -w faswep-navred-sampel-palnet -k <keyfile> -c mymoon
183+```
184+
185+Moons are automatically synced to their parent `%kids` desk, and can control applications on their parent planet using `|link`.
186+
187+To breach a moon -- that is, to reset its presence on the network so that it's treated as a freshly spawned ship by others -- run from the parent ship:
188+
189+```
190+|moon-breach ~faswep-navred-sampel-palnet
191+```
192+
193+To cycle the keys of a moon without breaching, run:
194+
195+```
196+|moon-cycle-keys ~sampel-sipnym-wicdev-wisryt
197+```
198+
199+
200+### Escaping A Sponsor {#escape}
201+
202+To use the network as a planet or star, you must be sponsored by an active star
203+or galaxy, respectively. If your sponsor isn't suiting your needs, you can
204+escape to a different one. This can be done with
205+[Bridge](https://bridge.urbit.org/) following the instructions
206+[here](@/using/operations/using-bridge.md#escaping-your-sponsor).
207+
208+### Continuity breaches
209+
210+While the Urbit network is in this alpha state, we sometimes have to reboot the whole network. This happens either when major changes need to be shipped or we hit a bug that can't be fixed over the air.
211+
212+Because Urbit networking is stateful we call this a _continuity breach_. Everything has to be restarted from scratch. Your pier will continue to function after we have breached, but it won’t connect to the rest of the Urbit network.
213+
214+When this happens, back up any files you'd like to save, shut down your urbit, and recreate it (as if you were starting for the first time).
215+
216+### Life and rift number
217+
218+You can check your ship's _life_ and _rift_ number by running `+keys our` in
219+dojo. You can inspect another ship's life and rift number by running `+keys
220+~sampel-palnet`. For information on what life and rift are, see [Guide to Breaches](@/docs/tutorials/guide-to-breaches.md).
221+
222+## DNS proxying {#dns-proxying}
223+
224+We have a system that lets you request a domain name for your ship in the form of `ship.arvo.network`, where `ship` is your ship's name minus the `~`. This allows users to access their ships remotely using Landscape, our graphical web interface.
225+
226+Stars and planets follow the same process DNS proxying process, and galaxies have their own requirements. Moons and comets are not supported.
227+
228+### Planets and Stars
229+
230+For a planet or star's DNS proxying request to be made and fulfilled, they must be hosting their ship someplace with a public IP address, and its HTTP server must be listening on port 80.
231+
232+To get `ship.arvo.network` on a planet or star, you must set up DNS routing with its parent ship by starting the `:dns` app.
233+
234+To do so, simply run this command in your ship's Dojo, passing the IP address as an argument, using the .0.0.0.0 (`@if`) syntax. For example:
235+
236+```
237+> -dns-address &dns-address [%if .1.2.3.4]
238+```
239+
240+`:dns`, running locally, will make an HTTP request to that IP address on port 80 to confirm that it is itself available at that IP and port. If that fails, you'll receive a `%bail-early` message in `:chat-cli`; this request will retry a few times. If the self-check is successful, the request is relayed to `~zod`, and you'll receive a message saying, `request for DNS sent to ~zod`. Once `~zod` has acknowledged receipt of the request, your local `:dns` app will send a `:chat-cli` message saying `awaiting response from ~zod`.
241+
242+The request will be picked up shortly, and the `ship.arvo.network` DNS record will be set to the given IP address. Once that's set up, `~zod` will be notified and `~zod` will, in turn, notify your ship. That ship will now try to verify that it can reach itself on `ship.arvo.network` over port 80. If it can't, it'll send a message saying, `unable to access via ship.arvo.network`. If it can, it will configure itself with that domain and say `confirmed access via ship.arvo.network`.
243+
244+Great! You're set up now. Try accessing your `ship.arvo.network` in your browser to use Landscape; we recommend Chrome or Brave.
245+
246+### Configuring SSL
247+
248+To enable SSL on your ship, use the `acme` agent, which will request a certificate through Let's Encrypt. First, make sure the agent is started:
249+
250+```
251+> |start %acme
252+```
253+
254+Next, provide the path for the SSL certificate by poking the `acme` agent. The path format is `/tld/your_domain/your_subdomain`, so if your domain is `sampel-palnet.arvo.network`, you'd use it like so:
255+
256+```
257+> :acme &path /network/arvo/sampel-palnet
258+```
259+
260+### Galaxies
261+
262+Galaxies are already required to have separate DNS entry at galaxy.urbit.org. There's no automated process for getting that binding, so if you're a galaxy-holder, get in touch with us at support@urbit.org.
263+
264+There is a command for galaxies that will try to re-use their already-necessary Ames DNS entry for HTTPS:
265+
266+```
267+> -dns-auto
268+```
269+
270+This will make HTTP-requests to self-check availability over `galaxy.$AMES-DOMAIN` (currently galaxy.urbit.org), where `galaxy` is the galaxy's name minus the `~`.
271+
272+Otherwise, `-dns-auto` works the same as `:dns|ip` does with stars and planets: if it's available or unavailable, Chat messages, and so on.
273+
274+### Ports
275+
276+The built-in logic for listening on port 80 is to try to bind to port 80; if it cannot, it tries 8080, then increments until it can bind a port. Port 80 is available to unprivileged process on recent version of macOS. Otherwise, the process needs to either be run as root, or be given special permission (CAP\_NET_BIND on Linux).
277+
278+## Messaging {#messaging}
279+
280+Let’s get started using the `:chat-cli` application, also known more simply as _Chat_. It's the simplest way to talk to people using the command line interface.
281+
282+### Quickstart
283+
284+The most common use for `:chat-cli` right now is, of course, communicating in group chats.
285+
286+### Joining a chat
287+
288+In `:chat-cli`, any kind of medium for a message is called a _chat_. There are four "types" of chats, but for now we'll be dealing with the _channel_, a publicly accessible chatroom for general use. We'll discuss the other three kinds in the [chat management](#chat-management) section later on.
289+
290+Join the Urbit Community from Dojo using `:group-store|join ~bitbet-bolbel/urbit-community`. Once you've joined, join the General chat from chat-cli. Use `ctrl-x` to switch from the Dojo prompt to the Chat prompt.
291+
292+Then:
293+
294+```
295+~sampel-palnet:chat-cli/ ;join ~darrux-landes/general
296+```
297+
298+Now that you're in, try post a line to `~darrux-landes/general`:
299+
300+```
301+~sampel-palnet:chat-cli= Hello, world!
302+```
303+
304+You'll see your message printed below messages from others that came before it. You can always type `;chats` in the `chat-cli` prompt to list all the chats you're in:
305+
306+```
307+~sampel-palnet:chat-cli= ;chats
308+~darrux-landes/general
309+```
310+
311+Glyphs will be automatically assigned to channels, but have the option of binding a glyph (single non-alphanumeric character) to the channel you're joining; the syntax is in the form of `;join ~/~dopzod/books +`. The chosen glyph will be the symbol that ends your prompt, and it will be what you use as a shortcut to switch to this channel.
312+
313+```
314+~sampel-palnet:chat-cli= ;+
315+~sampel-palnet:chat-cli+
316+```
317+
318+Use `;leave` to unsubscribe from a channel:
319+
320+```
321+~sampel-palnet:chat-cli= ;leave ~darrux-landes/general
322+```
323+
324+Now, let's create a channel we can invite some friends to:
325+
326+```
327+~sampel-palnet:chat-cli= ;create channel /my-channel
328+```
329+
330+Now you can tell your friends to `;join ~your-urbit/my-channel`.
331+
332+In order to see messages in `:chat-cli` you may need to do the following in Dojo:
333+
334+```
335+:chat-cli %connect
336+```
337+
338+### Hoon
339+
340+You can use Chat to evaluate Hoon code and share the results with everyone in a chat. To do so, preface your Hoon with `#`.
341+
342+```
343+~sampel-palnet:chat-cli= #(add 2 2)
344+```
345+
346+This will print as:
347+
348+```
349+~sampel-palnet# (add 2 2)
350+ 4
351+```
352+
353+### URLs
354+
355+To share a URL, send it as its own message, with no content before or after it.
356+
357+```
358+~sampel-palnet:chat-cli= https://urbit.org/
359+```
360+
361+This will print as:
362+
363+```
364+~sampel-palnet/ https://urbit.org/
365+```
366+
367+### Expanding messages
368+
369+In the case of URLs, they may be too long to display on a single message line. For Hoon code, the code or result could be big. In `:chat-cli`, these get shortened when initially printed out. To view the entire contents, you can select the message in various ways.
370+
371+```
372+~sampel-palnet+ some message
373+----------[240]
374+~sampel-palnet+ let's try selecting this message!
375+~sampel-palnet+ another message
376+~sampel-palnet:chat-cli=
377+```
378+
379+In the above example, we can select the middle message by issuing any of the following command:
380+
381+```
382+;240
383+;40
384+;;
385+```
386+
387+`;n` looks for the last message whose sequence number ends in `n`. `;;` simply picks the second-to-last message.
388+
389+Detailed message output will look something like this:
390+
391+```
392+? 240
393+ 0v5.g7r7l.n0d7m.mp4bn.gp6vr.sm5lj at ~2019.10.17..22.08.27..8a03
394+ ~sampel-palnet
395+ to ~dopzod/urbit-help
396+let's try selecting this message!
397+```
398+
399+### Creating and managing chats {#chat-management}
400+
401+As mentioned before, any urbit can host any number of chats. Existing chats can be deleted or modified with various commands. All commands in this section should be sent from the `chat-cli>` prompt.
402+
403+#### Create
404+
405+Syntax: `;create [type] /name +`, where `+` represents an optional glyph.
406+
407+Creates and joins a chat, where `[type]` is any of the following:
408+- `channel`: public chat. Has a blacklist for write control.
409+- `village`: invite-only chat.
410+- `journal`: publicly readable, invite-only for writing.
411+- `mailbox`: publicly writeable, invite-only for reading.
412+
413+Let's create an example mailbox:
414+
415+```
416+~sampel-palnet:chat-cli> ;create mailbox /coolbox ^
417+```
418+
419+#### Delete
420+
421+Syntax: `;delete /name`
422+
423+Deletes a chat.
424+
425+#### Permission management
426+
427+You can permit and ban people from reading and/or writing to the chats you host, using `;invite` and `;banish` command respectively.
428+
429+Syntax: `;invite [rw] /name ~ships`
430+
431+Where `rw` is either `r`, `w`, or `rw`, representing "read" and "write" permissions.
432+And where `~ships` is a comma-seperated list of ships to invite.
433+
434+For example, to grant two people full access to a `village` we created:
435+
436+```
437+~sampel-palnet:chat-cli> ;invite rw /hidden-village ~ravmel-ropdyl, ~rapfyr-diglyt
438+```
439+
440+Similarly, if we later want to revoke the writing permissions for one of them, but still allow them to read new messages, we can run:
441+
442+```
443+~sampel-palnet:chat-cli> ;banish w /hidden-village ~rapfyr-diglyt
444+```
445+
446+#### Chat glyphs
447+
448+Glyphs are found at the end of your prompt, as a quick indicator of where
449+your messages will be sent.
450+
451+Glyphs are assigned by chat hash out of the following list:
452+
453+```
454+! @ # $ % ^ & ( ) - = _ + [ ] { } ; ' \ : " , . < > ?
455+```
456+
457+Alphanumeric characters and `|#/*~` are reserved; all others can be manually assigned.
458+
459+For example, `-` the glyph at the end of the prompt below might indicates that
460+messages sent from this prompt will go to some chat with that glyph:
461+
462+```
463+~sampel-palnet:chat-cli-
464+```
465+
466+To see what chat is bound to a glyph, use the `;what` command followed by the
467+glyph in question, or use `;what` without specifying a glyph to see all of your
468+subscriptions which are bound to glyphs. For example, to see `=`:
469+
470+```
471+~sampel-palnet:chat-cli> ;what =
472+~dopzod/urbit-help
473+```
474+
475+To see all of your glyph bindings:
476+
477+```
478+~sampel-palnet:chat-cli> ;what
479+> ~paldev/numismatic-forum
480+. ~middev/ny-martians
481+= ~dopzod/urbit-help
482+```
483+
484+When the messaging target doesn't have a glyph, we see their name at the end of
485+the prompt instead. Here we're talking into `~dannum-mitryl/homework`:
486+
487+```
488+~sampel-palnet:chat-cli[~dannum-mitryl/homework]
489+```
490+
491+#### Bind
492+
493+Syntax: `;bind [glyph] ~host/chat-name`
494+
495+Assigns the chosen glyph to a chat.
496+
497+For example:
498+
499+```
500+~sampel-palnet:chat-cli> ;bind + ~dopzod/urbit-help
501+```
502+
503+#### Unbind
504+
505+Syntax: `;unbind [glyph] ~host/chat-name`
506+
507+Unassigns the chosen glyph from a chat owned by your ship.
508+
509+For example:
510+
511+```
512+~sampel-palnet:chat-cli> ;unbind + ~dopzod/urbit-help
513+```
514+
515+If you don't specify a chat, all bindings for that glyph are removed.
516+
517+#### Prefixes
518+
519+Received posts are prefixed with a glyph to let you know what the
520+audience is. You can activate an individual post to see the full
521+audience.
522+
523+There are a few special-purpose "glyphs":
524+
525+- `|` - Informational messages
526+- `*` - Posts to a target you don't have a glyph binding for
527+
528+
529+### Configuration
530+
531+#### Set audience
532+
533+`;~ship/chat`
534+
535+Set audience to `~ship/chat`.
536+
537+#### Set audience by glyph
538+
539+Syntax: `;[glyph]`
540+
541+Set audience to the chat previously bound to the chosen glyph.
542+
543+#### Set audience to own chat
544+
545+Syntax: `;/chat`
546+
547+Set audience to a chat on your own ship.
548+
549+### Miscellaneous configuration
550+
551+#### Change timezone
552+
553+Syntax: `;set timezone [+/-][hours]`
554+
555+Adjust the display of timestamps to a specific timezone. Relative to UTC.
556+
557+#### Set width
558+
559+Syntax: `;set width [number]`
560+
561+Set the rendering width of `:chat-cli` to a specific number of characters.
562+(Minimum of 30.)
563+
564+#### Show timestamps
565+
566+Syntax: `;set showtime`
567+
568+Show the timestamp for each message. This is set by default.
569+
570+#### Hide timestamps
571+
572+Syntax: `;unset showtime`
573+
574+Stop showing the timestamp for each message.
575+
576+#### Sound notification on
577+
578+Syntax: `;set notify`
579+
580+Emit a terminal bell sound if your six-syllable ship name is mentioned in
581+a message. This is set by default.
582+
583+#### Sound notification off
584+
585+Syntax `;unset notify`
586+
587+Do not notify when your ship name is mentioned.
588+
589+
590+## S3 {#s3}
591+
592+Amazon S3, which stands for Amazon Simple Storage Service, is a technology that was introduced by Amazon Web Services for cloud storage that has since been extended more broadly into a [standard programming interface](https://en.wikipedia.org/wiki/Amazon_S3#S3_API_and_competing_services).
593+
594+Our S3 support lets you store credentials for your S3 object storage buckets on your Urbit ship; once you have done so, you will get additional functionality for uploading your own media within Chat and Groups (for avatars).
595+
596+To enable S3 support on your ship you'll need to first set up a bucket, and then add its credentials to Landscape using *either* Landscape or the Dojo.
597+
598+### Bucket Setup
599+
600+If you’re using AWS, it will have to support signature v2, not v4. We've found DigitalOcean's Spaces to work well also. The bucket has to be publicly readable, allow CORS from `*` origins, allow GET and PUT methods, and allow `*` headers. Your provider should have details on setting access permissions and CORS.
601+
602+### Add your credentials: Landscape
603+
604+Navigate to your `https://<your-ship-url>/~profile/settings`, or click your sigil in the upper-right corner of the window. Fill out the **S3 Credentials** and **S3 Buckets** sections and you're all set!
605+
606+### Add your credentials: Dojo
607+
608+Once you have gotten your bucket setup, poke the `s3-store` on your ship with your details. You can do this in Dojo or in web Dojo.
609+
610+```
611+:s3-store|set-endpoint 'endpoint.mys3provider.com'
612+:: AWS endpoint example: s3-us-west-2.amazonaws.com
613+:: Digital Ocean endpoint example: sfo2.digitaloceanspaces.com
614+:s3-store|set-access-key-id 'MYACCESSKEYID'
615+:s3-store|set-secret-access-key 'MYSECRETACCESSKEY'
616+:s3-store|set-current-bucket 'yourbucketname'
617+```
618+
619+Done! If you need to peek at s3-store’s state, you can always run :s3-store +dbug (inside Dojo, not web Dojo, unfortunately). You’ll see the additional functionality appear in Groups and Chat.
620+
621+## Shell {#using-the-shell}
622+
623+The Dojo is our shell; it processes system commands and returns output. It's a
624+good place to quickly experiment with Urbit. On the surface the Dojo is just a
625+Hoon REPL. On the inside, the Dojo is a system for operating on and transforming
626+data in Urbit.
627+
628+### Quickstart
629+
630+You can use the Dojo to run arbitrary Hoon code, as well as non-Hoon system
631+commands.
632+
633+#### Math
634+
635+Evaluate a Hoon expression (whitespace matters):
636+
637+```
638+~your-urbit:dojo> (add 2 2)
639+~your-urbit:dojo> %+ add 2 2
640+```
641+
642+Tall-form Hoon may require multiple lines:
643+
644+```
645+~your-urbit:dojo> %+ add
646+~your-urbit:dojo< 2
647+~your-urbit:dojo< 2
648+```
649+
650+Hoon uses something called [the subject](@/docs/tutorials/hoon/hoon-school/the-subject-and-its-legs.md).
651+The Dojo has its own subject and that's where Hoon's equivalent of variables,
652+called faces, are stored.
653+
654+Use `=var` to save faces to the Dojo subject.
655+
656+```
657+~your-urbit:dojo> =foo (add 2 2)
658+```
659+
660+Note, however, that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
661+face in a `.hoon` file in this way.
662+
663+#### System commands
664+
665+Use `=dir` to set the current working directory:
666+
667+```
668+~your-urbit:dojo> =dir %/gen
669+```
670+
671+(`%` represents your current directory. For a complete explanation on urbit
672+paths, see the [filesystem section](#filesystem).)
673+
674+Generators (files in `/gen`) are run with `+`:
675+
676+```
677+~your-urbit:dojo> +hello 'world'
678+```
679+
680+Save output to a file in `%clay` with `*`:
681+
682+```
683+~your-urbit:dojo> *some/file/path/hoon 'hello world'
684+```
685+
686+Run system commands from `:hood`, like `reload`, using `|`:
687+
688+```
689+~your-urbit:dojo> |reload %eyre
690+```
691+
692+### Generators
693+
694+Generators are short Hoon scripts, saved as `.hoon` files in the `/gen`
695+directory. Many Dojo commands exist in the form of generators. The syntax for
696+running a generator is `+genname` for a generator saved as `genname.hoon`.
697+
698+#### `+cat`
699+
700+Accepts a path and displays the file. Similar to Unix `cat`.
701+
702+```
703+~your-urbit:dojo> +cat %/gen/curl/hoon
704+```
705+
706+#### `+code`
707+
708+Generates a code that is used to remotely log into your ship. No
709+arguments.
710+
711+```
712+~your-urbit:dojo> +code
713+```
714+
715+You can change your code to a new randomly generated one by entering `|code
716+%reset`. Please note that this will prevent [Bridge](@/docs/glossary/bridge.md)
717+from being able to derive your code in the future.
718+
719+#### `+curl`
720+
721+Retrieves data from a URL. Accepts a `tape`. Similar to Unix `curl`.
722+
723+```
724+~your-urbit:dojo> +curl "http://nyt.com"
725+```
726+
727+#### `+hello`
728+
729+Just prints the argument. Accepts a `@ta`.
730+
731+```
732+~your-urbit:dojo> +hello 'mars'
733+```
734+
735+#### `+ls`
736+
737+Similar to Unix `ls`. Accepts a path.
738+
739+```
740+~your-urbit:dojo> +ls %/gen
741+~your-urbit:dojo> +ls /~talsur-todres/home/2/gen/program
742+```
743+
744+#### `+solid`
745+
746+Compile the current state of the kernel and output a
747+noun. Usually downloaded to a file in unix. No arguments.
748+
749+```
750+~your-urbit:dojo> .urbit/pill +solid
751+```
752+
753+#### `+test`
754+
755+Testrunner. Can test multiple generators at once, conventionally ones
756+in the `/test` folder. Takes a path.
757+
758+```
759+~your-urbit:dojo> +test /lib
760+```
761+
762+#### `+ticket`
763+
764+Generate a ticket for an urbit ship. Takes an urbit name (`@p`).
765+
766+
767+```
768+~your-urbit:dojo> +ticket ~talsur-todres-your-urbit
769+```
770+
771+#### `+tree`
772+
773+Generate a recursive directory listing. Takes a path.
774+
775+```
776+~your-urbit:dojo> +tree %/sys
777+```
778+
779+### Hood
780+
781+The hood is the system daemon. See `gen/hood` and `app/hood`.
782+
783+`|hi` - Sends a direct message. Sort of like Unix `write`. Accepts
784+an urbit name (`@p`) and a string (`tape`, which is text wrapped with double-quotes).
785+
786+```
787+~your-urbit:dojo> |hi ~binzod "you there?"
788+```
789+
790+`|link` / `|unlink` - Link / unlink a remote app. Accepts an
791+Urbit name and an app name.
792+
793+```
794+~your-urbit:dojo> |link ~talsur-todres %octo
795+```
796+
797+`|mass` - Prints the current memory usage of all the kernel modules.
798+No arguments.
799+
800+```
801+~your-urbit:dojo> |mass
802+```
803+
804+`|reload` - Reloads a kernel module (vane) from source. Accepts any
805+number of vane names.
806+
807+```
808+~your-urbit:dojo> |reload %clay %eyre
809+```
810+
811+`|reset` - Reloads `hoon.hoon` and all modules. No arguments.
812+
813+```
814+~your-urbit:dojo> |reset
815+```
816+
817+`|start` - Starts an app. Accepts an app name.
818+
819+```
820+~your-urbit:dojo> |start %curl
821+```
822+
823+---
824+
825+### Dojo manual
826+
827+#### Sources and sinks
828+
829+A Dojo command is either a **source** or a **sink**. A source is just something
830+that can be printed to your console or the result of some computation. A
831+sink is an **effect**: a change to the filesystem, a network message, a
832+change to your environment, or a typed message to an app.
833+
834+Sources can be chained together, but we can only produce one effect per
835+command.
836+
837+#### Sinks
838+
839+#### `=` - Set variable
840+
841+Set any environment variable:
842+
843+```
844+~your-urbit:dojo> =foo 42
845+~your-urbit:dojo> (add 2 foo)
846+
847+44
848+```
849+
850+Make sure to note that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
851+variable in a `.hoon` file in this way.
852+
853+#### Special variables
854+
855+There are a few special variables that the Dojo maintains.
856+
857+#### `:` - Send to app
858+
859+`:app` goes to a local `app`, `:~ship/app` goes to the `app` on `~ship`.
860+
861+Send a `helm-hi` message to `hood`:
862+
863+```
864+~your-urbit:dojo> :hood &helm-hi 'hi'
865+```
866+
867+Apps usually expect marked data, so `&` is often used here.
868+
869+#### `*` - Save in `%clay`
870+
871+Save a new `.hoon` file in `gen`:
872+
873+```
874+~your-urbit:dojo> *%/gen/foo/hoon '# hello'
875+```
876+
877+The last component of the path is expected to be the mark (or mime
878+type).
879+
880+#### `.` - Export to Unix
881+
882+Export a noun to Unix with `.`:
883+
884+```
885+~your-urbit:dojo> .foo/bar/baz (add 2 2)
886+```
887+
888+Which creates a file at `pier/.urb/put/foo/bar.baz`.
889+
890+This is very often used with `+solid`:
891+
892+```
893+~your-urbit:dojo> .urbit/pill +solid
894+```
895+
896+Which outputs a new `urbit.pill` to `pier/.urb/put/urbit.pill`
897+
898+### Sources
899+
900+#### `_` - Run a function
901+
902+Use `_` to run a gate (or function):
903+
904+Write an arbitrary function and pass data to it:
905+
906+```
907+~your-urbit:dojo> _|=([a=@] (mul a 3)) 3
908+9
909+```
910+
911+Use a function to get the status code from an http request:
912+
913+```
914+~your-urbit:dojo> _|=([p=@ud q=* r=*] p) +http://google.com
915+301
916+```
917+
918+#### `+` `-` - HTTP requests
919+
920+`+http[s]://example.com` - sends a GET request
921+
922+`+http[s]://example.com &json [%s 'hi']` - sends a POST request with the
923+JSON `"hi"` in the body.
924+
925+`-http[s]://example.com &json [%s 'hi']` - sends a PUT request with the
926+JSON `"hi"` in the body.
927+
928+Note that the first of these is a source while the last two are sinks.
929+
930+#### `+` - Generators
931+
932+Generators are simple Hoon scripts loaded from the filesystem. They live
933+in `gen/`.
934+
935+An example of a generator that is built into your urbit is `+code`. It produces
936+the code needed to log into your ship remotely.
937+
938+```
939+~your-urbit:dojo> +code
940+fintyr-haldet-fassev-solhex
941+```
942+
943+### Variables
944+
945+You can use `=` to set an environment variable in Dojo, but there are
946+a few reserved names that have special uses.
947+
948+#### `dir`
949+
950+Current working `%clay` desk and revision. Read / write.
951+
952+**Examples:**
953+
954+```
955+~your-urbit:dojo> =dir %/gen
956+~your-urbit:dojo> +ls %
957+404/hoon docs/ dojo/hoon lib/ listen/hoon md static/udon talk/ testing/udon tree/main/ unmark/ womb/
958+```
959+
960+#### `lib`
961+
962+Current set of libraries (`/lib`) in your environment. Can be set
963+with `/+`. Read / write.
964+
965+**Examples:**
966+
967+```
968+~your-urbit:dojo> /+ number-to-words
969+```
970+Now we can use arms from lib/number-to-words.hoon
971+```
972+~your-urbit:dojo> (to-words:eng-us:number-to-words 123.456)
973+```
974+
975+#### `sur`
976+
977+Current set of structures (`/sur`) in your environment. Can be set
978+with `/-`. Read / write.
979+
980+**Examples:**
981+
982+```
983+~your-urbit:dojo> /- sole
984+```
985+Now we can use arms in sur/sole.hoon.
986+```
987+~your-urbit:dojo> `sole-effect:sole`[%bel ~]
988+```
989+
990+#### `now`
991+
992+The current (128-bit `@da`) time. Read-only.
993+
994+**Example:**
995+
996+```
997+~your-urbit:dojo> now
998+~2016.3.21..21.10.57..429a
999+```
1000+
1001+#### `our`
1002+
1003+The current urbit ship. Read-only.
1004+
1005+**Example:**
1006+
1007+```
1008+~your-urbit:dojo> our
1009+~your-urbit
1010+```
1011+
1012+#### `eny`
1013+
1014+512 bits of entropy. Read-only.
1015+
1016+**Example:**
1017+
1018+```
1019+~your-urbit:dojo> eny
1020+\/0vnt.d474o.gpahj.jcf3o.448fh.2lamb.82ljm.8ol8u.b02vi.mrvvp.b7et2.knb7m.l8he\/
1021+ 8.8qb9s.drm36.77n9b.a0qst.30g03.l5lb5.nvsbc.v39tn
1022+\/
1023+```
1024+
1025+### Troubleshooting
1026+
1027+If you encounter `%dy-edit-busy` while entering commands, it is
1028+because your Dojo is blocked on a timer or an HTTP request. Type backspace
1029+and your Dojo will end the blocked command.
1030+
1031+
1032+## Filesystem {#filesystem}
1033+
1034+Urbit has its own revision-controlled filesystem, Clay. Clay is a typed, global,
1035+referentially transparent namespace. An easy way to think about it is like typed
1036+`git`.
1037+
1038+The most common way to use Clay is to mount a Clay node in a Unix directory. The mounted directory is always at the root of your pier directory.
1039+
1040+### Quickstart
1041+
1042+This quick-start guide will walk you through some common commands. Follow along
1043+using your Dojo. When you get a `>=` message after entering a command, this means
1044+that the command was successful.
1045+
1046+It's important to note that whenever you want to sync changes from your Unix
1047+directory to your ship, you must use the `|commit %desk` command, where `%desk`
1048+is the desk that you'd like to sync to.
1049+
1050+When developing it's a good idea to use a separate desk. Create a `%sandbox`
1051+desk based on the `%home` desk:
1052+
1053+```
1054+~your-urbit:dojo> |merge %sandbox ~your-urbit %home
1055+```
1056+
1057+Running `our` produces your ship-name, meaning that you can run the following
1058+command instead of typing out the entire thing. Useful for comets due to their
1059+very long names.
1060+
1061+```
1062+~your-urbit:dojo> |merge %sandbox our %home
1063+```
1064+
1065+Most of the time we want to use Clay from Unix. Mount the entire contents of
1066+your `sandbox` desk to Unix:
1067+
1068+```
1069+~your-urbit:dojo> |mount /=sandbox=
1070+```
1071+
1072+To explore the filesystem from inside Urbit `+ls` and `+cat` are useful. `+ls`
1073+displays files in the current directory, and `+cat` displays the contents of
1074+a file.
1075+
1076+We can use `%` to mean "current directory." The result of the command below
1077+is just like using `ls` in a Unix terminal.
1078+
1079+```
1080+~your-urbit:dojo> +ls %
1081+```
1082+
1083+Notice how `+cat %` does the same thing. That's because everything in Clay,
1084+including directories, is a file.
1085+
1086+Sync from your friend `~some-ship`'s `%experiment` desk to your
1087+`%sandbox` desk:
1088+
1089+```
1090+~your-urbit:dojo> |sync %sandbox ~some-ship %experiment
1091+```
1092+
1093+If and when your sync is successful, you will receive a message:
1094+
1095+```
1096+activated sync from %experiment on ~some-ship to %sandbox
1097+```
1098+
1099+The ship that you sync from will get their own message indicating that you're
1100+both connected as peers:
1101+
1102+```
1103+; ~your-urbit is your neighbor.
1104+```
1105+
1106+---
1107+
1108+### Clay manual
1109+
1110+#### Paths
1111+
1112+A path in Clay is a list of URL-safe text, restricted to the characters
1113+`[a z]`,`[0 9]`, `.`, `-`, `_`, and `~`. Formally this is a `(list knot)`,
1114+meaning that each segment, delineated by `/`, is of the `knot` ASCII-text type.
1115+In other words, paths are expressed as `/foo/bar/baz`. File extensions are
1116+separated from file names with `/`, not `.`. Extensions are syntactically
1117+identical to subdirectories, except that they must terminate the path.
1118+
1119+Paths begin with a piece of data called a `beak`. A beak is formally a
1120+`(p=ship q=desk r=case)`; it has three components, and might look like
1121+`/~dozbud-namsep/home/11`.
1122+
1123+The first `beak` component is `ship`, which is, as you might guess, the name of
1124+an Urbit ship. The second component is `desk`, which is a workspace meant to
1125+contain other directories; the default desk is `%home`. The third component is
1126+`case`, which represents version information in various ways: date and time;
1127+a version sequence, which is a value incremented by one whenever a file on the
1128+given `desk` is modified; or an arbitrary plaintext label.
1129+
1130+You can find what your `beak` is at any given moment by
1131+typing `%` in the Dojo and looking at the first three results.
1132+
1133+We use `beak`s because, unlike the current internet, the Urbit network uses a
1134+global namespace. That means that a file named `example.hoon` in the `/gen`
1135+directory on the `%home` desk of your ship `~lodleb-ritrul` would have a
1136+universal address to anyone else on the network:
1137+`/~lodleb-ritrul/home/186/gen/example/hoon`. That, of
1138+course, doesn't mean that everyone on the network has privileges to access that
1139+path.
1140+
1141+The structure that combines a `beak` with further path information is called a
1142+`beam`.
1143+
1144+#### Relative paths
1145+
1146+The `%` command, which we gestured at in the above section, represents the
1147+**relative path**, which is the path where you are currently working. If your
1148+working directory is just your home desk, indicated by the
1149+prompt `~your-planet:dojo>`, then running the command below will print your
1150+working directory's `beam` information: your `beak`, and a `~` that represents
1151+the empty list since no path is present.
1152+
1153+```
1154+~your-urbit:dojo> %
1155+```
1156+
1157+`%`s can be stacked to indicate one level further up in the hierarchy for each
1158+additional `%`. Try the following command:
1159+
1160+```
1161+~your-planet:dojo> %%%
1162+```
1163+
1164+You'll probably notice that it only has your ship name and the empty list. The
1165+two additional `%`s abandoned the `case` and the `desk` information by moving
1166+up twice the hierarchy.
1167+
1168+There are no local relative paths. `/foo/bar` must be written as
1169+`%/foo/bar`.
1170+
1171+#### Substitution
1172+
1173+You don't need to write out the explicit path every time you want to reference
1174+somewhere outside of your working directory. You can substitute `=` for the
1175+segments of a path.
1176+
1177+Recall that a full address in the the Urbit namespace is a `beam`: the
1178+`/ship/desk/case/path`. If you've switched to another desk before, you're
1179+already familiar with substitution syntax:
1180+
1181+```
1182+~your-urbit:dojo> =dir /=sandbox=
1183+```
1184+
1185+The above command uses substitution to use your current `ship` and
1186+`case`; only the `desk` argument, which is located between the other two, is
1187+given something new. Without substitution, you would need to write:
1188+
1189+```
1190+~your-urbit:dojo> =dir /~your-urbit/sandbox/85
1191+```
1192+
1193+Substitutions work the same way in `beak`s (the `ship/desk/case` part) and
1194+paths. For example, if you are in the `/gen` directory, you can reference a file
1195+in the `/app` directory like below. (`+cat` displays the contents of a file).
1196+
1197+```
1198+~your-urbit:dojo> =dir %/gen
1199+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> +cat /===/app/curl/hoon
1200+```
1201+
1202+Note what was substituted out, and note that we don't need to separate `=` with
1203+`/`.
1204+
1205+If we changed our working directory to something called `/gen/gmail`, we could
1206+access a file called
1207+
1208+```
1209+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %/gmail
1210+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /===/app/=/split/hoon
1211+```
1212+
1213+Because both paths share a directory named `/gmail` at the same position in the
1214+address hierarchy – which, if you recall, is just a `list` – the above command
1215+works!
1216+
1217+We can do the same thing between desks. If `%sandbox` has been merged with
1218+`%home`, the following command will produce the same results as the above
1219+command.
1220+
1221+```
1222+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /=sandbox=/app/=/split/hoon
1223+```
1224+
1225+Most commonly this is used to avoid having to know the current revision
1226+number in the `dojo`: `/~lodleb-ritrul/home/~2018.10.2..00.35.44..d7e8/gen/example/hoon`
1227+
1228+#### Changing directories
1229+
1230+Change the working directory with `=dir`. It's our equivalent of the Unix `cd`.
1231+
1232+For example, the syntax to navigate to `/home/gen/ask` is:
1233+
1234+```
1235+~your-urbit:dojo> =dir /=home=/gen/ask
1236+```
1237+
1238+This command will turn your prompt into something like this:
1239+
1240+```
1241+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask>
1242+```
1243+
1244+Using `=dir` without anything else uses the null path, which returns you to
1245+your home desk.
1246+
1247+```
1248+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask> =dir
1249+```
1250+
1251+Your dojo prompt will turn back into `~your-urbit:dojo>`.
1252+
1253+To go up levels in the path hierarchy, recall the relative path expression
1254+`%`. Stacking them represents another level higher in the hierarchy than
1255+the current working directory for each `%` beyond the initial. The command below
1256+brings you one level up:
1257+
1258+```
1259+~your-urbit:dojo> =dir %/gen
1260+~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %%
1261+```
1262+
1263+### Revision-control
1264+
1265+#### Mount
1266+
1267+Syntax: `|mount /clay/path [Unix-name]`
1268+
1269+Mount the `clay-path` at the Unix mount point `Unix-name`.
1270+
1271+**Examples:**
1272+
1273+```
1274+|mount %/gen generators
1275+```
1276+
1277+Mounts `%/gen` to `/generators` inside your pier directory.
1278+
1279+#### Unmount
1280+
1281+```
1282+|unmount [clay-path || Unix-name]
1283+```
1284+
1285+Unmount the path or name from Unix.
1286+
1287+**Examples:**
1288+
1289+```
1290+|unmount %/gen
1291+```
1292+
1293+Unmounts the Clay path `%/gen` from whatever name it was mounted as.
1294+
1295+```
1296+|unmount %generators
1297+```
1298+
1299+Unmounts the Unix path `/generators`.
1300+
1301+#### Merge
1302+
1303+```
1304+|merge desk beak[, =gem strategy]
1305+```
1306+
1307+Merges a `beak` into a `desk` using an optional merge `strategy`.
1308+
1309+A `beak` is a ship-desk-case triple, encoded as a
1310+path(`/~dozbud/home/2`)
1311+
1312+**Examples:**
1313+
1314+```
1315+|merge %home-work /=home=, =gem %fine
1316+```
1317+
1318+Merge `/=home=` into `%home-work` using merge strategy `%fine`.
1319+
1320+```
1321+|merge %examples ~wacbex-ribmex %examples
1322+```
1323+
1324+Merge the `%examples` desk from `~waxbex-ribmex`
1325+
1326+#### Sync
1327+
1328+```
1329+|sync desk plot [plot-desk]
1330+```
1331+
1332+Subscribe to continuous updates from remote `plot` on local `desk`.
1333+`plot-desk` can specify the remote `desk` name. When omitted it defaults
1334+to being the same as `desk`. Non-comet urbits have
1335+`|sync %home ~parent %kids` automatically set up (where `~parent` is the
1336+planet that issued a moon, the star that issued a planet, or the galaxy
1337+that issued a star).
1338+
1339+**Examples:**
1340+
1341+```
1342+|sync %home-local ~dozbud %home
1343+
1344+|sync %home ~doznec
1345+```
1346+
1347+#### Unsync
1348+
1349+```
1350+|unsync desk plot [plot-desk]
1351+```
1352+
1353+Unsubscribe from updates from remote `plot` on local `desk` with
1354+optional `plot-desk`. Arguments must match original `|sync` command.
1355+
1356+Example:
1357+
1358+```
1359+|unsync %home-local ~dozbud %home
1360+```
1361+
1362+#### Label
1363+
1364+```
1365+|label desk name
1366+```
1367+
1368+Label the current version of `desk` `name`.
1369+
1370+Example:
1371+
1372+```
1373+|label %home release
1374+```
1375+
1376+### Merge strategies
1377+
1378+See [Clay merge strategies](@/docs/tutorials/arvo/clay.md#merge-strategies).
1379+
1380+### Manipulation
1381+
1382+#### `+cat`
1383+
1384+Syntax: `+cat path [path ...]`
1385+
1386+Similar to Unix `cat`. `+cat` takes one or more `path`s, and prints their
1387+contents. If that `path` is a file, the contents of the file is printed. If the
1388+`path` terminates in a directory, the list of names at that path is produced.
1389+
1390+#### `+ls`
1391+
1392+Syntax: `+ls path`
1393+
1394+Similar to Unix `ls`. `+ls` takes a single `path`.
1395+
1396+Produces a list of names at the `path`.
1397+
1398+```
1399+~your-urbit:dojo> +cat %/our/home/gen/curl/hoon
1400+```
1401+
1402+#### `|rm`
1403+
1404+Syntax: `|rm path`
1405+
1406+Remove the data at `path`. `Path` must be a path to the actual node, not a
1407+'directory'.
1408+
1409+#### `|cp`
1410+
1411+Syntax: `|cp to from`
1412+
1413+Copy the file at `from` into the path `to`.
1414+
1415+#### `|mv`
1416+
1417+Syntax: `|mv to from`
1418+
1419+Move the file at `from` into the path `to`.
1420+
1421+In Clay, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
1422+doesn't happen unless the `|cp` succeeds.
content/using/planet.mdnew file+129
@@ -0,0 +1,129 @@
1++++
2+title = "Setting up Your Planet"
3+weight = 1
4+description = "Getting started with a permanent Urbit identity."
5+template = "page_indiced.html"
6++++
7+
8+A planet is a permanent Urbit identity. Like all Urbit identities, they can never be taken away from you. Unlike comets which are free, planets are designed for use well into the future. If you're not yet familiar with the Urbit network, please follow the [Getting Started guide](/using/install), which will explain the basics and walk you through using a free identity. This guide explains the next steps.
9+
10+### Purchase a planet {#purchase}
11+
12+There are a few ways to get your own planet:
13+
14+- Getting an invitation from a friend (or stranger).
15+- Purchasing a planet, including hosting, from a [hosting provider](#hosting-providers) such as [geturbitid.com](https://www.geturbitid.com/).
16+- Manually setting up and hosting an planet purchased from a third party such as [urbit.live](https://urbit.live), [OpenSea](https://opensea.io), [planet.market](https://planet.market/), [urbit.me](https://urbit.me), [urth systems](https://urth.systems/), or [Urbit Marketplace](https://urbitmarketplace.com/).
17+
18+Note that when you buy a planet, you should ensure with the provider that your parent star is operating. If you need to escape a non-operational star, see [Escaping A Sponsor](/using/operations/using-bridge/#escaping-your-sponsor).
19+
20+### Hosting Providers {#hosting-providers}
21+
22+Hosting providers will often sell you a planet and run it for you. This option is very simple but will probably cost a regular fee.
23+
24+Urbit is designed to be portable. This means that if you sign up for hosting now but later want to leave your hosting provider and run your Urbit yourself, you should be able to work with them to obtain all of your data and boot your planet back up without losing anything.
25+
26+Using hosting does mean that you're trusting your provider with your data, but so long as you have your planet, you'll always own your identity.
27+
28+Current hosting providers are:
29+
30+- [Tlon Corporation](https://tlon.io): Tlon is the creator of Landscape and is primarily responsible for the creation and maintenance of the Urbit project itself.
31+- [Get an Urbit ID](https://www.geturbitid.com/): Get an Urbit ID was the first hosting provider and is run by a member of the Urbit community.
32+
33+
34+### Choose to run your planet on your computer or on a cloud service
35+
36+Urbit must run on an existing computer somewhere. Most users run their planet on their personal computer, but we recommend eventually using a cloud service (Digital Ocean, Linode, etc) because it allows your planet to be accessed from anywhere on multiple devices. Hosting your planet in the cloud also allows it to always be online and ready for automatic updates. You are welcome to run from your personal computer and switch to the cloud later...all without losing any data!
37+
38+There is a guide for [hosting your planet on DigitalOcean](@/using/operations/hosting.md) and [hosting your planet on Linode](https://jeremytunnell.com/2021/01/09/how-to-install-urbit-on-a-linode-vps), but any cloud hosting service should work.
39+
40+### Get your keyfile {#keyfile}
41+
42+If you received an email invite to Urbit, the master ticket should be a .pdf file in the passport folder inside the archive that you downloaded. **If you bought your planet or someone sent you one you probably do not have a master ticket, and you probably don't need one. Do not issue a new master ticket unless you are sure you need to.**
43+
44+1. Connect to [Bridge](https://bridge.urbit.org). (Bridge is like an Urbit wallet)
45+2. Enter the name of your planet and the associated master ticket if you have one. Click the "Metamask, Mnemonic, Hardware Wallet..." button if you don't have a master ticket.
46+3. Once you're logged in, click the "OS" option.
47+4. Click the "Download Arvo Keyfile" button. If this is grayed out, click on "Reset Networking Keys", then click on "Reset Networking Keys" on the following page, validate the transaction using your wallet, and then click "Send Trasaction". Once the transaction is complete, the "Download Arvo Keyfile" button should be available for you to press. You should receive a `.key` file that contains the secret needed to boot your planet. Hold onto this file.
48+
49+### Run the boot command {#the-dojo}
50+
51+Navigate to your `urbit` directory.
52+
53+Open your keyfile (it is just a text file) and copy the key inside. Paste it into the following command, with `sampel-palnet` replaced by the name of your planet. **Do not include the tilde in your planet name.**
54+
55+```sh
56+./urbit -w sampel-palnet -G rAnDoMkEy
57+```
58+
59+Or you can copy the keyfile into the current directory and run:
60+
61+```sh
62+./urbit -w sampel-palnet -k ./my-planet.key
63+```
64+
65+Either command will create a directory called `sampel-palnet/` and begin booting your planet. It may take a few minutes.
66+
67+When your planet is finished booting, you will see `~sampel-palnet:dojo>` (Dojo: the Urbit command line).
68+
69+Get your password to log into landscape (the Urbit web interface) by typing:
70+
71+```sh
72++code
73+```
74+
75+To shut down your planet, use `Ctrl-D`.
76+
77+To start your planet up again, run the following from your `urbit` directory.
78+
79+```sh
80+./urbit sampel-palnet
81+```
82+
83+Note that `sampel-palnet/` is the path of a folder, which we just created in your `urbit` directory. This folder is called your planet's **pier**, and it holds all of your data.
84+
85+Never boot multiple instances of your planet at the same time. You can prevent this from happening on accident by only ever keeping a single copy of your pier.
86+
87+**Important:** once a key has been used to boot a planet onto the network, it cannot be used to boot that planet again later - doing so will cause communication problems with other planets. For this reason you should **delete the keyfile from your machine once your planet has booted successfully**. If you do use the same key twice, you'll need to reset your planet to restore its functionality.
88+
89+Delete the keyfile with the command below:
90+
91+```sh
92+rm ./my-planet.key
93+```
94+
95+## Setup {#setup}
96+
97+The first thing you generally want to do with a new planet is to **mount** it. A planet being mounted means that it can be seen by Linux, allowing files to be shared between it and your planet. To mount your planet, type `|mount %` at the Dojo prompt.
98+
99+```
100+|mount %
101+>=
102+```
103+
104+The `>=` output means that a command was successful. Now you can see your planet's files in its directory.
105+
106+To understand what happened with this command, read more about Urbit’s filesystem (called “clay”) [here](@/docs/tutorials/arvo/clay.md).
107+
108+## Updating {#updating}
109+
110+By default, planets have a sponsor — a star that provides updates and routing services. To see who you receive updates from, enter `|ota` in the dojo. You will see something like this:
111+
112+```
113+~sampel-palnet:dojo> |ota
114+OTAs enabled from %kids on ~dopzod
115+use |ota %disable or |ota ~sponsor %kids to reset it
116+> |ota
117+>=
118+```
119+
120+If for some reason your sponsor (in this case, `~dopzod`) is not responding, read instructions on [escaping your sponsor](/using/operations/using-bridge.md#escaping-your-sponsor).
121+
122+
123+## Next Steps
124+
125+Now that you’re up and running, take some time to deepen your understanding by checking out some of our other guides:
126+
127+- [Host your Ship in the Cloud](@/using/operations/hosting.md): Follow this guide to set your ship up to run as a cloud server, accessible from anywhere.
128+- [Read the Operations Manual](@/using/operations/using-your-ship.md): Become an expert pilot by learning to use your ship.
129+- [Learn to Develop on Urbit](@/using/develop.md): Learn how to contribute to or develop on Urbit.
content/using/running/hosting.md+1−1
@@ -178,5 +178,5 @@ On iOS you can save a website to your homescreen as an icon. If you do this for
178178 [DO SSL Config]: https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-18-04
179179 [Urbit Basic Cloud Install]: https://medium.com/@urbitlive/hello-world-urbit-edition-install-boot-and-run-your-urbit-planet-on-a-10-cloud-server-b9579745b9a8
180180 [DO Initial Setup]: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04
181− [Blog Github]: https://github.com/zalberico/zalberico.github.io
181+ [Blog GitHub]: https://github.com/zalberico/zalberico.github.io
182182
content/using/running/install.md+128−160
@@ -1,246 +1,214 @@
11+++
2−title = "Install + Setup"
2+title = "Getting Started"
33weight = 1
44description = "How to install Urbit."
55template = "page_indiced.html"
66aliases = ["/docs/getting-started/"]
77+++
88
9−This guide covers how to install and set up your own planet (or comet), but installation for a star is exactly the same. You will first install the Urbit binary, then you will either boot a comet or a planet. It's not too difficult, but if you would prefer to have someone run your urbit for you, consider a [hosting provider](#hosting-providers).
9+The price of using other platforms is your data and its security. There's a reason they're free to use.
1010
11+The price of using Urbit is your own responsibility — you must run it yourself (or pay someone to run it for you).
1112
12−## Installing Urbit
13+It's easy and it keeps getting easier.
1314
14−You'll want to install Urbit binary first. Follow the instructions below to install the binary on Windows, MacOS, or Linux.
15+There are currently two ways to run Urbit:
1516
16−### Windows
17+If you use Mac or Linux and are not afraid of a few terminal commands, we recommend you run it yourself. That is the aim of this guide.
1718
18−> Please note that this method of installing Urbit is experimental, and we may not be able to assist you if you encounter issues related to WSL 2.
19−
20−Urbit cannot run on Windows itself, but there is a convenient way to run Linux using the [Windows Subsystem for Linux 2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-install) on Windows 10. Install the Windows Subsystem for Linux 2 and open a Linux terminal in Windows, then follow the Linux installation instructions below. These instructions have been tested and verified for WSL 2 + Ubuntu 18.04 LTS, as demonstrated in `~sitful-hatred`'s step-by-step setup guide [here](https://subject.network/posts/urbit-wsl2/).
19+If you run Windows or just want to give it a shot without worrying about the gritty bits, you may want to consider a [hosting provider](/using/planet#hosting-providers).
2120
22−For performance reasons, do not install Urbit in the mounted Windows volume, but install it in the Linux file system. For example, in your home directory, which can be navigated to by entering `cd ~`.
21+## Installing Urbit {#macos-and-linux}
2322
24−### macOS {#macos-and-linux}
23+Choose the code for your operating system and run the commands in your terminal.
2524
26−**The macOS binary does not work on M1 macs. Sorry. We're working on an M1 release**
25+<div id="os">
26+ <input type="radio" id="macos" name="os" checked>
27+ <label for="macos">MacOS</label>
28+ <div class="tab">
2729
2830```sh
29−mkdir urbit
30−cd urbit
31+mkdir ~/urbit
32+cd ~/urbit
3133curl -JLO https://urbit.org/install/mac/latest
3234tar zxvf ./darwin.tgz --strip=1
33−./urbit
34−
35+~/urbit/urbit
3536```
36−### Linux
37+ </div>
38+
39+ <input type="radio" id="linux" name="os">
40+ <label for="linux">Linux</label>
41+ <div class="tab">
42+
3743```sh
38−mkdir urbit
39−cd urbit
44+mkdir ~/urbit
45+cd ~/urbit
4046wget --content-disposition https://urbit.org/install/linux64/latest
4147tar zxvf ./linux64.tgz --strip=1
42−./urbit
48+~/urbit/urbit
4349```
4450
45−Once you've followed the appropriate install instructions, you can check if everything went right by running the `./urbit` command. Installation was successful if you get a block of output that begins with the line below:
46−
47−```
48−Urbit: a personal server operating function
49−```
51+Linux users may need to run this command in another terminal window to access your Urbit on port 80:
5052
51−To access your Urbit via HTTP on port 80 on Ubuntu, you may need to run the following:
5253```sh
5354sudo apt-get install libcap2-bin
54−sudo setcap 'cap_net_bind_service=+ep' /path/to/urbit
55−```
56−(Where `urbit` is the urbit executable downloaded with `wget` prior)
57−
58−### Choose to boot a comet or a planet
59−
60−If you just want to try Urbit out, you can use a comet. These are disposable, free identities, that are good for people who are new to Urbit and want to check out the network, but they aren't good for building a reputation as a friendly and responsible resident. Their long names (example: `~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`) make them difficult to remember—and some communities ban comets to prevent spam—but they're still a good way to see what Urbit is about before buying your own planet.
61−
62−To start with a comet, continue below. For planet instructions, see [further below](#boot-your-planet).
63−
64−## Booting a comet {#comet}
65−
66−To boot a comet, go into the command line and run the following command from the `urbit` directory you created during [Urbit installation](#installing-urbit):
67−
68−```sh
69−./urbit -c mycomet
70−```
71−
72−Since your identity on the network is not verified, it may take up to an hour to generate your comet. As it boots, it will spit out a bunch of boot messages and create a directory called `mycomet`. Toward the end of the boot process, you'll see something like:
73−
74−```
75−ames: on localhost, UDP 31337.
76−http: live (insecure, public) on 8080
77−http: live ("secure", public) on 8443
78−http: live (insecure, loopback) on 12321
79−~sampel_marzod:dojo>
80−```
81−
82−When your comet is finished booting, you will see `~sampel_marzod:dojo>` (Dojo: the Urbit command line).
83−
84−Get your password to log into landscape (the Urbit web interface) by typing:
85−
86−```sh
87−+code
88−```
89−
90−To exit Urbit, use `Ctrl-D` or enter `|exit` into Dojo.
91−
92−To start your comet up again, run the following from your `urbit` directory (note the lack of `-c` argument):
93−
94−```sh
95−./urbit mycomet
55+sudo setcap 'cap_net_bind_service=+ep' ~/urbit/urbit
9656```
57+</div>
9758
98−### Updating your comet {#updating}
99−
100−The Urbit binary comes with a somewhat recent release of the Urbit OS, but ships can update automatically ("over the air"), so new binaries aren't necessary every time it's updated. Planets have automatic updates enabled by default, but this is not the case for comets. Many comets are used only once and thrown away, so it would be wasteful to update every single comet as soon as it boots. If you plan to use your comet for more than a quick test, you'll probably want to ensure you're running the latest version of the OS.
59+ <input type="radio" id="windows" name="os">
60+ <label for="windows">Windows</label>
61+ <div class="tab">
10162
102−You can enable updates for your comet by typing `|ota (sein:title our now our) %kids` into Dojo and pressing Enter.
63+> Please note that this method of installing Urbit is experimental, and we may not be able to assist you if you encounter issues related to WSL 2.
10364
104−```
105−> |ota (sein:title our now our) %kids
106−>=
107−```
65+Urbit cannot run on Windows itself, but there is a convenient way to run Linux using the [Windows Subsystem for Linux 2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-install) on Windows 10. Install the Windows Subsystem for Linux 2 and open a Linux terminal in Windows, then follow the Linux installation instructions below. These instructions have been tested and verified for WSL 2 + Ubuntu 18.04 LTS, as demonstrated in `~sitful-hatred`'s step-by-step setup guide [here](https://subject.network/posts/urbit-wsl2/).
10866
109−If you want to make sure you'll get updates, you can check by typing `|ota` with no arguments:
67+For performance reasons, do not install Urbit in the mounted Windows volume, but install it in the Linux file system. For example, in your home directory, which can be navigated to by entering `cd ~`.
68+</div>
69+</div>
70+
71+<style>
72+ #os {
73+ display: flex;
74+ flex-wrap: wrap;
75+ }
76+ #os label {
77+ order: -1;
78+ padding: .5rem;
79+ border-width: 1px 0px 0px 1px;
80+ border-style: solid;
81+ cursor: pointer;
82+ }
83+ #os label[for=windows] {
84+ border-right-width: 1px;
85+ }
86+ #os input[type="radio"] {
87+ display: none;
88+ }
89+ #os .tab {
90+ display: none;
91+ border: 1px solid;
92+ padding: 1rem;
93+ max-width: 100%;
94+ }
95+ #os input[type='radio']:checked + label {
96+ font-weight: bold;
97+ }
98+ #os input[type='radio']:checked + label + .tab {
99+ display: block;
100+}
101+</style>
102+
103+If successful, you will see a block of output beginning with the line:
110104
111105```
112−~sampel_marzod:dojo> |ota
113−OTAs enabled from %kids on ~marzod
114−use |ota %disable or |ota ~sponsor %kids to reset it
115−> |ota
116−>=
106+Urbit: a personal server operating function
117107```
118108
119−Now that you’re up and running, skip ahead to the [Setup guide](#setup).
120−
121−## Booting a planet {#boot-your-planet}
109+## Booting a Free Identity {#comet}
122110
123−There are two options for getting started with a planet. You can purchase one on your own and run Urbit yourself, or you can purchase a planet and hosting services through a [hosting provider](#hosting-providers).
111+There are two parts to Urbit: an **ID** and an **Operating System**.
124112
125−### Purchase a planet
113+You have just installed the Operating System on your computer.
126114
127−There are a few ways to get your own planet:
115+The **ID** is similar to a username and password on another site. The difference is that the public part (the username) is verified by thousands of people around the world while only you hold the key (the password) to that ID.
128116
129−- Getting an invitation from a friend.
130−- Purchasing a planet, including hosting, from a [hosting provider](#hosting-providers) such as [geturbitid.com](https://www.geturbitid.com/).
131−- Manually setting up and hosting an planet purchased from a third party such as [urbit.live](https://urbit.live), [OpenSea](https://opensea.io), [planet.market](https://planet.market/), [urbit.me](https://urbit.me), [urth systems](https://urth.systems/), or [Urbit Marketplace](https://urbitmarketplace.com/).
117+There are five kinds of Urbit IDs but to get started you only need to know about two: we call them **planets** and **comets**.
132118
133−Note that when you buy a planet, you should ensure with the provider that your parent star is operating. If you need to escape a non-operational star, see [Escaping A Sponsor](@/using/operations/using-your-ship.md#escape).
119+***
134120
135−### Hosting Providers {#hosting-providers}
121+**Planets** are scarce (this prevents spamming, among other things) and usually require a price to acquire. This is the recommended way to run Urbit, but it's a bit more involved.
136122
137−Hosting providers will often sell you a planet and run it for you. This option is very simple but will probably cost a regular fee.
123+A planet name looks like `~sampel-palnet`.
138124
139−Urbit is designed to be portable. This means that if you sign up for hosting now but later want to leave your hosting provider and run your Urbit yourself, you should be able to work with them to obtain all of your data and boot your planet back up without losing anything.
125+[Follow this guide](/using/planet) if you have already acquired a planet.
140126
141−Using hosting does mean that you're trusting your provider with your data, but so long as you have your planet, you'll always own your identity.
127+[Find a planet to purchase](/using/planet#purchase)
142128
143−Current hosting providers are:
129+***
144130
145−- [Tlon Corporation](https://tlon.io): Tlon is the creator of Landscape and is primarily responsible for the creation and maintenance of the Urbit project itself.
146−- [Get an Urbit ID](https://www.geturbitid.com/): Get an Urbit ID was the first hosting provider and is run by a member of the Urbit community.
131+**Comets** are practically unlimited and free to acquire. At present, these are a great way to try out the network for free.
147132
133+A comet name looks like `~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`.
148134
149−### Choose to run your planet on your computer or on a cloud service
135+[Read more about Urbit ID here](/understanding-urbit/urbit-id)
150136
151−Urbit must run on an existing computer somewhere. Most users run their planet on their personal computer, but we recommend eventually using a cloud service (Digital Ocean, Linode, etc) because it allows your planet to be accessed from anywhere on multiple devices. Hosting your planet in the cloud also allows it to always be online and ready for automatic updates. You are welcome to run from your personal computer and switch to the cloud later...all without losing any data!
152137
153−There is a guide for [hosting your planet on DigitalOcean](@/using/operations/hosting.md) and [hosting your planet on Linode](https://jeremytunnell.com/2021/01/09/how-to-install-urbit-on-a-linode-vps), but any cloud hosting service should work.
138+***
154139
155−### Get your keyfile {#keyfile}
156−
157−If you received an email invite to Urbit, the master ticket should be a .pdf file in the passport folder inside the archive that you downloaded. **If you bought your planet or someone sent you one you probably do not have a master ticket, and you probably don't need one. Do not issue a new master ticket unless you are sure you need to.**
158−
159−1. Connect to [Bridge](https://bridge.urbit.org). (Bridge is like an Urbit wallet)
160−2. Enter the name of your planet and the associated master ticket if you have one. Click the "Metamask, Mnemonic, Hardware Wallet..." button if you don't have a master ticket.
161−3. Once you're logged in, click the "OS" option.
162−4. Click the "Download Arvo Keyfile" button. If this is grayed out, click on "Reset Networking Keys", then click on "Reset Networking Keys" on the following page, validate the transaction using your wallet, and then click "Send Trasaction". Once the transaction is complete, the "Download Arvo Keyfile" button should be available for you to press. You should receive a `.key` file that contains the secret needed to boot your planet. Hold onto this file.
163−
164−### Run the boot command {#the-dojo}
165−
166−Navigate to your `urbit` directory.
167−
168−Open your keyfile (it is just a text file) and copy the key inside. Paste it into the following command, with `sampel-palnet` replaced by the name of your planet. **Do not include the tilde in your planet name.**
140+To boot a comet, go into the command line and run the following command from the `urbit` directory you created during [Urbit installation](#installing-urbit):
169141
170142```sh
171−./urbit -w sampel-palnet -G rAnDoMkEy
143+~/urbit/urbit -c mycomet
172144```
173145
174−Or you can copy the keyfile into the current directory and run:
146+It may take a while to load the comet (probably only take a few minutes, but it could take longer). This comes along with it being free. When it's done you'll some messages ending like this:
175147
176−```sh
177−./urbit -w sampel-palnet -k ./my-planet.key
148+```
149+ames: on localhost, UDP 31337.
150+http: live (insecure, public) on 8080
151+http: live ("secure", public) on 8443
152+http: live (insecure, loopback) on 12321
153+~sampel_marzod:dojo>
178154```
179155
180−Either command will create a directory called `sampel-palnet/` and begin booting your planet. It may take a few minutes.
156+When your comet is finished booting, you will see `~sampel_marzod:dojo>` (Dojo: the Urbit command line).
181157
182−When your planet is finished booting, you will see `~sampel-palnet:dojo>` (Dojo: the Urbit command line).
158+To exit Urbit, use `Ctrl-D` or enter `|exit` into Dojo.
183159
184−Get your password to log into landscape (the Urbit web interface) by typing:
160+To start your comet up again, run the following from your `urbit` directory (note the lack of `-c` argument):
185161
186162```sh
187−+code
163+~/urbit/urbit mycomet
188164```
189165
190−To shut down your planet, use `Ctrl-D`.
191−
192−To start your planet up again, run the following from your `urbit` directory.
193−
194−```sh
195−./urbit sampel-palnet
196−```
166+## Using Landscape
197167
198−Note that `sampel-palnet/` is the path of a folder, which we just created in your `urbit` directory. This folder is called your planet's **pier**, and it holds all of your data.
168+Urbit is an entirely new computer, so by default it drops you into the "dojo," which is its terminal. Like your current computer, it can be used to do just about anything if you know the right commands. You only need to know one command for now.
199169
200−Never boot multiple instances of your planet at the same time. You can prevent this from happening on accident by only ever keeping a single copy of your pier.
170+At the moment, the most common way to use Urbit is through a web app named Landscape, which comes with Urbit. It runs in your browser and provides an interface to Urbit without using the terminal. You need to get the password, or `code`.
201171
202−**Important:** once a key has been used to boot a planet onto the network, it cannot be used to boot that planet again later - doing so will cause communication problems with other planets. For this reason you should **delete the keyfile from your machine once your planet has booted successfully**. If you do use the same key twice, you'll need to reset your planet to restore its functionality.
172+1. With your Urbit running, look for a line that says something like `http: live (insecure, public) on 80`. The number given is the port that your ship is using. It will probably be 80, but we're just making sure. (Don't worry about the "insecure, public" part — that just means you can access it from your own web browser. It doesn't give anyone else access.)
173+2. If the port given is `80`, simply type `localhost` into your browser's address bar. If the given port is a different number, such as `8080`, you would type `localhost:8080`. You'll be met with a login prompt.
174+3. In the window where you found the port number, type `+code` and press return. Copy-paste the code that appears into the "Access Key" field in the browser, and press continue.
175+4. Once in, take a look around and read the instructions on screen. If you ever get logged out, follow these instructions again.
203176
204−Delete the keyfile with the command below:
177+## Next Steps
205178
206−```sh
207−rm ./my-planet.key
208−```
179+### Updating your comet {#updating}
209180
210−## Setup {#setup}
181+The Urbit application comes with a recent release of the Urbit OS, but automatic updates ("over the air") can be enabled so new binaries aren't necessary for each update. Planets have automatic updates enabled by default, but this is not the case for comets. Many comets are used only once and thrown away, so it would be wasteful to update every single comet as soon as it boots. If you plan to use your comet for more than a quick test, you'll probably want to ensure you're running the latest version of the OS.
211182
212−The first thing you generally want to do with a new planet is to **mount** it. A planet being mounted means that it can be seen by Linux, allowing files to be shared between it and your planet. To mount your planet, type `|mount %` at the Dojo prompt.
183+You can enable updates for your comet by typing `|ota (sein:title our now our) %kids` into Dojo and pressing Enter.
213184
214185```
215−|mount %
186+> |ota (sein:title our now our) %kids
216187>=
217188```
218189
219−The `>=` output means that a command was successful. Now you can see your planet's files in its directory.
220−
221−To understand what happened with this command, read more about Urbit’s filesystem (called “clay”) [here](@/docs/tutorials/arvo/clay.md).
222−
223−### Using Landscape
224−
225−Landscape is the Urbit web interface, and it's the best way to interact with your planet. To access Landscape:
190+If you want to make sure you'll get updates, you can check by typing `|ota` with no arguments:
226191
227−1. Start your planet. In the boot messages, look for a line that says something like `http: live (insecure, public) on 80`. The number given is the port that your planet is using.
228−2. If the port given is 80, and you are running Urbit on your personal computer, simply type `localhost` into your browser's address bar. If you are running urbit on a cloud server, type the ip of your cloud server. If the given port is a different number, such as `8080`, you would type `localhost:8080` or `your-cloud-ip:8080`. You'll be met with a login prompt.
229−3. Type your password you got from running `+code` above.
230−4. You're in! Now you can explore groups, join chat channels, share links, and much more.
192+```
193+~sampel_marzod:dojo> |ota
194+OTAs enabled from %kids on ~marzod
195+use |ota %disable or |ota ~sponsor %kids to reset it
196+> |ota
197+>=
198+```
231199
232−### Join a group
200+### Read More about the Dojo {#the-dojo}
233201
234−Now that you're on Landscape, join the Urbit Community, a great place for newcomers to ask questions.
202+The dojo is Urbit's command line. You can use it to control your ship, or to execute arbitrary code. Check out the links below for more information.
235203
236−Click the `Join a Group` button, then enter `~bitbet-bolbel/urbit-community` into the field and press the `Join Group` button.
204+- [Basic Operations](/using/operations/using-your-ship)
205+- [Basic Hoon](/docs/tutorials/hoon/hoon-school/setup)
206+- [Glossary Entry](/docs/glossary/dojo)
237207
238−From the Urbit Community group you can join a variety of chatrooms, notebooks, and collections.
208+### Purchase a Permanent Identity {#boot-your-planet}
239209
240−### Next Steps
210+You can continue using this comet indefinitely. There are currently few differences between using a comet-level identity and a planet-level one. However, some groups will not allow comets entry in order to maintain a certain level of quality, and changes may be made in the future that further devalue comets. They will always, however, be able to access the basic functions of the network.
241211
242−Now that you’re up and running, take some time to deepen your understanding by checking out some of our other guides:
212+A comet also comes with a long and fairly unmemorable name whereas a planet has a short name and a "sigil" (avatar) associated with it that makes it more identifiable on the network. You may notice all this within the first few minutes of using Urbit.
243213
244−- [Host your Ship in the Cloud](@/using/operations/hosting.md): Follow this guide to set your ship up to run as a cloud server, accessible from anywhere.
245−- [Read the Operations Manual](@/using/operations/using-your-ship.md): Become an expert pilot by learning to use your ship.
246−- [Learn to Develop on Urbit](@/using/develop.md): Learn how to contribute to or develop on Urbit.
214+[To read instructions on how to purchase and use a planet, visit this page](/using/planet).
templates/essays/post.html+1−1
@@ -95,7 +95,7 @@
9595 </div>
9696 </div>
9797 </form>
98− <p class="mt3 mb3 mb3-xl lh-copy">You can also follow us on <a class="bb" href="https://twitter.com/urbit">Twitter</a> or <a class="bb" href="https://github.com/urbit">Github</a>.</p>
98+ <p class="mt3 mb3 mb3-xl lh-copy">You can also follow us on <a class="bb" href="https://twitter.com/urbit">Twitter</a> or <a class="bb" href="https://github.com/urbit">GitHub</a>.</p>
9999 <p class="mt0 mb3 mb4-xl lh-copy">Or talk to us on Urbit: <code>~bitbet-bolbel/urbit-community</code></p>
100100</section>
101101{% endblock content %}
templates/partials/footer.html+1−1
@@ -47,7 +47,7 @@
4747 <h2 class="mb3">Need help?</h2>
4848 <li class="mt2 f6"><a href="mailto:support@urbit.org">support@urbit.org </a></li>
4949 <li class="mt2 f6"><a href="https://discord.gg/Mae2bk7">Discord</a></li>
50− <li class="mt2 f6"><a href="https://github.com/urbit">Github</a></li>
50+ <li class="mt2 f6"><a href="https://github.com/urbit">GitHub</a></li>
5151 </nav>
5252 </section>
5353</footer>
templates/understanding-urbit/list.html+1−1
@@ -110,7 +110,7 @@
110110 </div>
111111 </div>
112112 </form>
113− <p class="mt3 mb3 mb3-xl lh-copy">You can also follow us on <a class="bb" href="https://twitter.com/urbit">Twitter</a> or <a class="bb" href="https://github.com/urbit">Github</a>.</p>
113+ <p class="mt3 mb3 mb3-xl lh-copy">You can also follow us on <a class="bb" href="https://twitter.com/urbit">Twitter</a> or <a class="bb" href="https://github.com/urbit">GitHub</a>.</p>
114114 <p class="mt0 mb3 mb4-xl lh-copy">Or, preferably, on Urbit itself in the <code>~bitbet-bolbel/urbit-community</code></p>
115115</section>
116116{% endblock content %}
templates/understanding-urbit/post.html+1−1
@@ -104,7 +104,7 @@
104104 </div>
105105 </div>
106106 </form>
107− <p class="mt3 mb3 mb3-xl lh-copy">You can also follow us on <a class="bb" href="https://twitter.com/urbit">Twitter</a> or <a class="bb" href="https://github.com/urbit">Github</a>.</p>
107+ <p class="mt3 mb3 mb3-xl lh-copy">You can also follow us on <a class="bb" href="https://twitter.com/urbit">Twitter</a> or <a class="bb" href="https://github.com/urbit">GitHub</a>.</p>
108108 <p class="mt0 mb3 mb4-xl lh-copy">Or talk to us on Urbit: <code>~bitbet-bolbel/urbit-community</code></p>
109109 </section>
110110{% endblock content %}