mirror of
https://github.com/ilyakooo0/urbit.git
synced 2025-01-05 13:55:54 +03:00
Merge cgyarvin fixes into test.
This commit is contained in:
commit
9d40d206e3
@ -117,7 +117,7 @@
|
||||
?+ -.kyz ~& [%strange-kiss -.kyz] +>
|
||||
%flow +>
|
||||
%harm +>
|
||||
%hail +>
|
||||
%hail (send %hey ~)
|
||||
%belt (send `dill-belt`p.kyz)
|
||||
%text (from %out (tuba p.kyz))
|
||||
%crud :: (send `dill-belt`[%cru p.kyz q.kyz])
|
||||
|
@ -2399,6 +2399,7 @@
|
||||
[%cru p=@tas q=(list tank)] :: echo error
|
||||
[%ctl p=@] :: control-key
|
||||
[%del ~] :: true delete
|
||||
[%hey ~] :: refresh
|
||||
[%met p=@] :: meta-key
|
||||
[%ret ~] :: return
|
||||
[%rez p=@ud q=@ud] :: resize, cols, rows
|
||||
|
119
lib/drum.hoon
119
lib/drum.hoon
@ -28,7 +28,6 @@
|
||||
$: edg=_80 :: terminal columns
|
||||
off=@ud :: window offset
|
||||
kil=(unit (list ,@c)) :: kill buffer
|
||||
maz=master :: master window
|
||||
inx=@ud :: ring index
|
||||
fug=(map gill (unit target)) :: connections
|
||||
mir=(pair ,@ud (list ,@c)) :: mirrored terminal
|
||||
@ -69,7 +68,8 @@
|
||||
=+ myr=(clan our)
|
||||
?: =(%pawn myr)
|
||||
[[%base %talk] [%base %dojo] ~]
|
||||
?: =(%earl myr) ~
|
||||
?: =(%earl myr)
|
||||
[[%home %dojo] ~]
|
||||
[[%home %talk] [%home %dojo] ~]
|
||||
::
|
||||
++ deft-fish :: default connects
|
||||
@ -77,11 +77,8 @@
|
||||
%- ~(gas in *(set gill))
|
||||
^- (list gill)
|
||||
=+ myr=(clan our)
|
||||
:: ?: =(%pawn myr)
|
||||
:: [[our %dojo] ~]
|
||||
?: =(%earl myr)
|
||||
=+ dad=(sein our)
|
||||
[[dad %talk] [dad %dojo] ~]
|
||||
[[(sein our) %talk] [our %dojo] ~]
|
||||
[[our %talk] [our %dojo] ~]
|
||||
::
|
||||
++ deft-mast :: default master
|
||||
@ -100,7 +97,6 @@
|
||||
:* 80 :: edg
|
||||
0 :: off
|
||||
~ :: kil
|
||||
(deft-mast our) :: maz
|
||||
0 :: inx
|
||||
~ :: fug
|
||||
[0 ~] :: mir
|
||||
@ -148,39 +144,6 @@
|
||||
[%pass wire note] ::
|
||||
== ::
|
||||
++ move (pair bone card) :: user-level move
|
||||
++ sp :: command parser
|
||||
|% ++ sp-ukase
|
||||
%+ knee *ukase |. ~+
|
||||
;~ pose
|
||||
(stag %add ;~(pfix lus sp-gills))
|
||||
(stag %del ;~(pfix hep sp-gills))
|
||||
(stag %new ;~(pfix tar sp-wells))
|
||||
==
|
||||
::
|
||||
++ sp-gills
|
||||
;~ pose
|
||||
(most ;~(plug com ace) sp-gill)
|
||||
%+ cook
|
||||
|= a=ship
|
||||
[[a %talk] [a %dojo] ~]
|
||||
;~(pfix sig fed:ag)
|
||||
==
|
||||
::
|
||||
++ sp-gill
|
||||
;~ pose
|
||||
(stag our sym)
|
||||
;~ plug
|
||||
;~(pfix sig fed:ag)
|
||||
;~(pfix fas sym)
|
||||
==
|
||||
==
|
||||
++ sp-well
|
||||
;~ pose
|
||||
;~(plug sym ;~(pfix fas sym))
|
||||
(stag %home sym)
|
||||
==
|
||||
++ sp-wells (most ;~(plug com ace) sp-well)
|
||||
--
|
||||
--
|
||||
|_ [moz=(list move) biz=(list dill-blit)]
|
||||
++ diff-sole-effect-phat ::
|
||||
@ -335,11 +298,8 @@
|
||||
+>
|
||||
=+ gul=se-agon
|
||||
=+ tur=`(unit (unit target))`?~(gul ~ (~(get by fug) u.gul))
|
||||
?: &(!liv.maz |(=(~ gul) =(~ tur) =([~ ~] tur))) (se-blit %bel ~)
|
||||
=+ ^= taz
|
||||
?: liv.maz
|
||||
~(. ta [& %& `gill`(fall gul [our %none])] `target`tar.maz)
|
||||
~(. ta [& %| (need gul)] `target`(need (need tur)))
|
||||
?: |(=(~ gul) =(~ tur) =([~ ~] tur)) (se-blit %bel ~)
|
||||
=+ taz=~(. ta [& (need gul)] `target`(need (need tur)))
|
||||
=< ta-abet
|
||||
?- -.bet
|
||||
%aro (ta-aro:taz p.bet)
|
||||
@ -347,6 +307,7 @@
|
||||
%cru (ta-cru:taz p.bet q.bet)
|
||||
%ctl (ta-ctl:taz p.bet)
|
||||
%del ta-del:taz
|
||||
%hey taz(mir [0 ~])
|
||||
%met (ta-met:taz p.bet)
|
||||
%ret ta-ret:taz
|
||||
%txt (ta-txt:taz p.bet)
|
||||
@ -372,7 +333,7 @@
|
||||
=. +>.$ (se-text "[unlinked from {<gyl>}]")
|
||||
?: =(gyl [our %dojo]) :: undead dojo
|
||||
(se-link gyl)
|
||||
se-prom(liv.maz ?~(fug & liv.maz))
|
||||
+>.$
|
||||
::
|
||||
++ se-dump :: print tanks
|
||||
|= tac=(list tank)
|
||||
@ -396,12 +357,12 @@
|
||||
^+ +>
|
||||
=. +> (se-text "[linked to {<gyl>}]")
|
||||
?> =(~ (~(got by fug) gyl))
|
||||
(se-alas:se-prom(liv.maz |, fug (~(put by fug) gyl `*target)) gyl)
|
||||
(se-alas(fug (~(put by fug) gyl `*target)) gyl)
|
||||
::
|
||||
++ se-nuke :: teardown
|
||||
|= gyl=gill
|
||||
^+ +>
|
||||
(se-drop:(se-pull(liv.maz |) gyl) & gyl)
|
||||
(se-drop:(se-pull gyl) & gyl)
|
||||
::
|
||||
++ se-like :: act in master
|
||||
|= kus=ukase
|
||||
@ -446,14 +407,6 @@
|
||||
?~ t.yal i.yal
|
||||
:(welp i.yal ", " $(yal t.yal))
|
||||
::
|
||||
++ se-prom :: update drum prompt
|
||||
^+ .
|
||||
=+ mux=se-plot
|
||||
%_ +
|
||||
cad.pom.tar.maz
|
||||
(welp (scow %p our) ?~(mux "# " :(welp ":" mux "# ")))
|
||||
==
|
||||
::
|
||||
++ se-link :: connect to app
|
||||
|= gyl=gill
|
||||
+>(eel (~(put in eel) gyl))
|
||||
@ -477,15 +430,13 @@
|
||||
(se-show (sub p.lin off) (scag edg (slag off q.lin)))
|
||||
::
|
||||
++ se-view :: flush buffer
|
||||
?: liv.maz
|
||||
(se-just ~(ta-vew ta [& & ~zod %$] tar.maz))
|
||||
=+ gul=se-agon
|
||||
?~ gul se-view(liv.maz &)
|
||||
?~ gul +
|
||||
=+ gyr=(~(get by fug) u.gul)
|
||||
?~ gyr se-view(liv.maz &)
|
||||
?~ u.gyr se-view(liv.maz &)
|
||||
?~ gyr +>
|
||||
?~ u.gyr +>
|
||||
%- se-just
|
||||
~(ta-vew ta [& | u.gul] u.u.gyr)
|
||||
~(ta-vew ta [& u.gul] u.u.gyr)
|
||||
::
|
||||
++ se-emit :: emit move
|
||||
|= mov=move
|
||||
@ -517,7 +468,7 @@
|
||||
++ se-tame :: switch connection
|
||||
|= gyl=gill
|
||||
^+ ta
|
||||
~(. ta [& %| gyl] (need (~(got by fug) gyl)))
|
||||
~(. ta [& gyl] (need (~(got by fug) gyl)))
|
||||
::
|
||||
++ se-diff :: receive results
|
||||
|= [gyl=gill fec=sole-effect]
|
||||
@ -526,44 +477,23 @@
|
||||
::
|
||||
++ ta :: per target
|
||||
|_ $: $: liv=? :: don't delete
|
||||
mav=? :: showing master
|
||||
gyl=gill :: target app
|
||||
== ::
|
||||
target :: target state
|
||||
== ::
|
||||
++ ta-abet :: resolve
|
||||
^+ ..ta
|
||||
=. liv.maz mav
|
||||
?: mav
|
||||
?. liv
|
||||
(se-blit `dill-blit`[%qit ~])
|
||||
se-prom:+>(tar.maz +<+)
|
||||
?. liv
|
||||
=. ..ta (se-nuke gyl)
|
||||
..ta(liv.maz =(~ fug))
|
||||
?: (~(has in (deft-fish our)) gyl)
|
||||
(se-blit qit/~)
|
||||
(se-nuke gyl)
|
||||
..ta(fug (~(put by fug) gyl ``target`+<+))
|
||||
::
|
||||
++ ta-poke |=(a=pear +>(..ta (se-poke gyl a))) :: poke gyl
|
||||
++ ta-ant :: toggle master
|
||||
^+ .
|
||||
?: mav
|
||||
?: =(~ fug) ta-bel
|
||||
%_ .
|
||||
mav |
|
||||
+<+ (need (~(got by fug) gyl))
|
||||
tar.maz +<+
|
||||
==
|
||||
%_ .
|
||||
mav &
|
||||
+<+ tar.maz
|
||||
fug (~(put by fug) gyl `+<+)
|
||||
==
|
||||
::
|
||||
++ ta-act :: send action
|
||||
|= act=sole-action
|
||||
^+ +>
|
||||
?: mav
|
||||
+>.$
|
||||
(ta-poke %sole-action act)
|
||||
::
|
||||
++ ta-aro :: hear arrow
|
||||
@ -659,7 +589,7 @@
|
||||
ta-bel
|
||||
%- ta-hom(pos.inp 0, kil `(scag pos.inp buf.say.inp))
|
||||
(ta-cut 0 pos.inp)
|
||||
%v ta-ant
|
||||
%v ta-bel
|
||||
%x +>(+> se-anon)
|
||||
%y ?~ kil ta-bel
|
||||
%- ta-hom(pos.inp (add pos.inp (lent u.kil)))
|
||||
@ -768,18 +698,7 @@
|
||||
+>(pom pom(cad :(welp (scow %p p.gyl) ":" (trip q.gyl) cad.pom)))
|
||||
::
|
||||
++ ta-ret :: hear return
|
||||
?. mav
|
||||
(ta-act %ret ~)
|
||||
=+ txt=(tufa buf.say.inp)
|
||||
=+ fey=(rose txt sp-ukase:sp)
|
||||
?- -.fey
|
||||
%| (ta-erl (lent (tuba (scag p.fey txt))))
|
||||
%& ?~ p.fey
|
||||
(ta-erl (lent buf.say.inp))
|
||||
=. +>+> (se-like u.p.fey)
|
||||
=. pom pom.tar.maz
|
||||
(ta-hom:ta-nex %set ~)
|
||||
==
|
||||
(ta-act %ret ~)
|
||||
::
|
||||
++ ta-ser :: reverse search
|
||||
|= ext=(list ,@c)
|
||||
|
32
pub/doc.md
32
pub/doc.md
@ -1,10 +1,38 @@
|
||||
Urbit Manual
|
||||
============
|
||||
# Urbit documentation homepage
|
||||
|
||||
Tutorial
|
||||
README
|
||||
Console
|
||||
Admin commands (|hood)
|
||||
Default appliances
|
||||
:talk
|
||||
:dojo
|
||||
Nock tutorials
|
||||
Hoon tutorials
|
||||
Arvo commentaries
|
||||
Arvo annotated examples
|
||||
generators
|
||||
web fabricators
|
||||
marks
|
||||
%gall appliances
|
||||
|
||||
Inactive
|
||||
(all old doc)
|
||||
|
||||
Speculative
|
||||
Whitepapers, essays, artifacts.
|
||||
|
||||
Videos
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Urbit is a general-purpose computing stack designed to live in the cloud.
|
||||
|
||||
<list dataPreview="true"></list>
|
||||
|
||||
<list dataPreview=
|
||||
`arvo` is event driven and modular. `arvo` modules are called 'vanes'.
|
||||
|
||||
<list dataPath="/pub/doc/arvo" dataPreview="true"></list>
|
||||
|
43
pub/newdoc.md
Normal file
43
pub/newdoc.md
Normal file
@ -0,0 +1,43 @@
|
||||
# Urbit documentation homepage
|
||||
|
||||
Tutorial
|
||||
README
|
||||
Console
|
||||
Admin commands (|hood)
|
||||
Default appliances
|
||||
:talk
|
||||
:dojo
|
||||
Nock tutorials
|
||||
Hoon tutorials
|
||||
Arvo commentaries
|
||||
Arvo annotated examples
|
||||
generators
|
||||
web fabricators
|
||||
marks
|
||||
%gall appliances
|
||||
Contributing
|
||||
|
||||
Inactive
|
||||
(all old doc)
|
||||
|
||||
Speculative
|
||||
Whitepapers, essays, etc.
|
||||
|
||||
Videos
|
||||
|
||||
|
||||
!= =+ ^= core |% ++ dech |= [a=@ b=@] ?: =(+(b) a) b $(b +(b)) ++ dec |= a=@ ++ add |= [a=@ b=@] ^- @ ?: =(0 a) b $(a (dec a), b +(b)) -- (add.core 10 10)
|
||||
|
||||
|
||||
Urbit is a general-purpose computing stack designed to live in the cloud.
|
||||
|
||||
<list dataPreview="true"></list>
|
||||
|
||||
<list dataPreview=
|
||||
`arvo` is event driven and modular. `arvo` modules are called 'vanes'.
|
||||
|
||||
<list dataPath="/pub/doc/arvo" dataPreview="true"></list>
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Come join us on `:talk` in the `/urbit-meta` channel to ask questions and get help.
|
273
pub/newdoc/readme.md
Normal file
273
pub/newdoc/readme.md
Normal file
@ -0,0 +1,273 @@
|
||||
# Urbit README
|
||||
|
||||
Urbit is a clean-slate system software stack defined as a
|
||||
deterministic computer. An encrypted P2P network, Ames, runs on
|
||||
a functional operating system, Arvo, written in a strict, typed
|
||||
functional language, Hoon, which compiles itself to a combinator
|
||||
interpreter, Nock, whose spec is 340 bytes compressed.
|
||||
|
||||
Urbit's state is a pure, frozen function of its event history.
|
||||
In practice it uses a memory checkpoint and an append-only log.
|
||||
Every event is a transaction; Urbit is an ACID database and a
|
||||
single-level store. Code within Urbit has no direct access to
|
||||
the underlying OS, but the Urbit state function defines I/O:
|
||||
|
||||
|=([system-event this-state] [system-actions next-state])
|
||||
|
||||
Urbit is designed as a personal cloud server for self-hosted web
|
||||
applications. It's also good at using web APIs to manage any
|
||||
data you may have stuck in traditional web applications. And of
|
||||
course it can communicate over its own encrypted P2P network,
|
||||
which it already uses for code update and persistent chat.
|
||||
|
||||
Urbit is patent-free and MIT licensed. Anyone can run the VM, of
|
||||
course, but the Urbit network is officially invitation-only. Not
|
||||
that we're antisocial -- just that we're under construction.
|
||||
|
||||
Right now, Urbit's only practical use is to host and develop
|
||||
itself. Its performance is awful. Its documentation is
|
||||
inadequate. Its keys are test keys. Its servers melt down on a
|
||||
regular basis. We reserve the right to reboot the whole network
|
||||
-- and we will.
|
||||
|
||||
If you're interested in following Urbit, you can:
|
||||
|
||||
- Read more documentation at [urbit.org](http://urbit.org) XX doc
|
||||
- Give us your email address at [urbit.org](http://urbit.org).
|
||||
- Check out the
|
||||
[urbit-dev](https://groups.google.com/forum/#!forum/urbit-dev)
|
||||
mailing list.
|
||||
- Follow [@urbit_](https://twitter.com/urbit\_) on Twitter.
|
||||
- Hit us up by email, <urbit@urbit.org>. We're nice!
|
||||
|
||||
# Code of conduct
|
||||
|
||||
Everyone involved in the Urbit project needs to understand and
|
||||
respect our code of conduct, which is: "don't be rude."
|
||||
|
||||
# Installing Urbit
|
||||
|
||||
Urbit can be installed on most Unix systems. There is no Windows
|
||||
port. Windows is a great OS, we just haven't gotten to it yet.
|
||||
Use a VM.
|
||||
|
||||
## Installing as a package
|
||||
|
||||
### OS X - Homebrew
|
||||
|
||||
brew install --HEAD homebrew/head-only/urbit
|
||||
|
||||
### Ubuntu or Debian
|
||||
|
||||
Third-party packages are available, at:
|
||||
|
||||
https://github.com/yebyen/urbit-deb
|
||||
|
||||
Urbit is only supported on Jessie onward (but outbound HTTPS
|
||||
requests only work on Stretch; I wish we knew why; help us!)
|
||||
|
||||
## Hand-build from source
|
||||
|
||||
First, install all external dependencies. Then, make.
|
||||
|
||||
### Dependencies
|
||||
|
||||
urbit depends on:
|
||||
|
||||
gcc (or clang)
|
||||
gmp
|
||||
libsigsegv
|
||||
openssl
|
||||
automake
|
||||
autoconf
|
||||
ragel
|
||||
cmake
|
||||
re2c
|
||||
libtool
|
||||
libssl-dev (Linux only)
|
||||
ncurses (Linux only)
|
||||
|
||||
#### Ubuntu or Debian
|
||||
|
||||
sudo apt-get install libgmp3-dev libsigsegv-dev openssl libssl-dev libncurses5-dev git make exuberant-ctags automake autoconf libtool g++ ragel cmake re2c
|
||||
|
||||
#### Fedora
|
||||
|
||||
sudo dnf install gcc gcc-c++ git gmp-devel openssl-devel openssl ncurses-devel libsigsegv-devel ctags automake autoconf libtool ragel cmake re2c
|
||||
|
||||
#### AWS
|
||||
|
||||
sudo yum --enablerepo epel install gcc gcc-c++ git gmp-devel openssl-devel ncurses-devel libsigsegv-devel ctags automake autoconf libtool cmake re2c
|
||||
|
||||
#### OS X - Homebrew
|
||||
|
||||
brew install git gmp libsigsegv openssl libtool autoconf automake cmake
|
||||
|
||||
#### OS X - Macports
|
||||
|
||||
sudo port install git gmp libsigsegv openssl autoconf automake cmake
|
||||
|
||||
Although `automake`/`autoconf`/`libtool` are generally installed by
|
||||
default, some have reported needing to uninstall and reinstall those
|
||||
three packages, at least with Homebrew. Your mileage may vary.
|
||||
|
||||
#### FreeBSD
|
||||
|
||||
pkg install git gmake gmp libsigsegv openssl automake autoconf ragel cmake re2c libtool
|
||||
|
||||
### Download and make
|
||||
|
||||
Clone the repo:
|
||||
|
||||
git clone git://github.com/urbit/urbit.git
|
||||
|
||||
`cd` to the directory you just created:
|
||||
|
||||
cd urbit
|
||||
|
||||
Run `make`:
|
||||
|
||||
make
|
||||
|
||||
(On FreeBSD, use `gmake` instead.)
|
||||
|
||||
The executable is `bin/urbit`. Install it somewhere, or just use
|
||||
it where it is. Urbit chroots, so it's more secure if setuid root:
|
||||
|
||||
sudo chmod +s bin/urbit
|
||||
|
||||
## Launch your urbit
|
||||
|
||||
An urbit is a persistent server on a P2P network. An address on
|
||||
this network is a 128-bit number, or "plot." Every server on the
|
||||
Urbit network (we just call them "urbits") has one unique plot.
|
||||
|
||||
Since Urbit is designed as a personal server, an Urbit plot is
|
||||
both a network address and a digital identity. There is no
|
||||
human-meaningful name layer like the DNS. To make urbits as
|
||||
memorable as possible, we type them in a phonemic syntax with one
|
||||
byte per syllable, like `~harlyx-rocsev` for `0x510b.9441`.
|
||||
|
||||
Urbit address space is cryptographic property, like Bitcoin, but
|
||||
Urbit doesn't use a blockchain. Plots are digital land, not
|
||||
digital currency; you own your urbit cryptographically, but you
|
||||
don't get it by mining. In land, transfers are infrequent and
|
||||
not frictionless. (Right now, all keys are test keys, and there
|
||||
are no transfers, only initial invitations.)
|
||||
|
||||
Urbit is semi-decentralized: it overlays a 64-bit hierarchical
|
||||
structure on the low end of a 128-bit fingerprint namespace. If
|
||||
you have an invitation, it's a *ticket* that lets you create a
|
||||
32-bit urbit, aka *planet*. If you don't have an invitation, you
|
||||
have to create a 128-bit urbit, aka *comet*.
|
||||
|
||||
As a comet, you're not necessarily a bad person. But you could
|
||||
be anyone, so you have zero reputation. You have no official
|
||||
access to any Urbit services. Any connectivity you may enjoy
|
||||
could be shut off at any time, and it probably will be. If the
|
||||
Internet has proven one thing, it's that positive default
|
||||
reputation and an infinite identity supply don't mix.
|
||||
|
||||
If you have an invitation, it's a planet like `~fintud-macrep`
|
||||
and a ticket like `~fortyv-tombyt-tabsen-sonres`. Run
|
||||
|
||||
urbit -w fintud-macrep -t fortyv-tombyt-tabsen-sonres
|
||||
|
||||
If you don't have an invitation, pick a nickname for your comet,
|
||||
like `mycomet`. Urbit will randomly generate a 128-bit plot:
|
||||
|
||||
urbit -c mycomet
|
||||
|
||||
Either way, creating your urbit will take some time. Go get
|
||||
a cup of coffee. Some of this time involves creating keys;
|
||||
some of it involves downloading code over Urbit itself.
|
||||
|
||||
Since Urbit is a P2P network that runs over random UDP ports,
|
||||
some firewalls may not like it. Urbit without connectivity isn't
|
||||
useless, but it can't boot without the network.
|
||||
|
||||
If run as `root`, the `urbit` process can only read and write
|
||||
inside the `fintud-macrep` or `mycomet` directory, which we call
|
||||
your *pier*. A pier is portable; any Urbit install on any OS can
|
||||
execute the same pier.
|
||||
|
||||
In the pier directory is a set of user-level mount points. Mount
|
||||
points are synced Dropbox style, with Unix file changes
|
||||
autocommitted to the Urbit revision control system (`%clay`) and
|
||||
vice versa. You edit Urbit code with vim and emacs, or whatever.
|
||||
|
||||
Also within the pier is a system directory, `.urb/`, which
|
||||
contains an event log (`egz.hope`), a checkpoint (`.chk`), and
|
||||
I/O directories for uploads and downloads (`put` and `get`).
|
||||
You can compact the pier by deleting the checkpoint, although
|
||||
that means Urbit needs to re-execute its entire event history.
|
||||
This will take some time. Go have a beer.
|
||||
|
||||
Also in `.urb` is a file like `code.~rosrev-dinnul`. This is
|
||||
your passcode; all data in the pier [XX: not yet the checkpoint]
|
||||
is encrypted with it. For extra security, print out or memorize
|
||||
the contents of this file, then delete it; Urbit will prompt for
|
||||
the passcode on startup.
|
||||
|
||||
When it's created (and before it calls `chroot()`), your urbit
|
||||
creates a passcode file, with a name like `~posluc-darnup`,
|
||||
in `~/.urbit`. If you want to encrypt the checkpoint and log,
|
||||
delete this file; Urbit will prompt you for its contents. Please
|
||||
be warned that Urbit is not at present secure in any way!
|
||||
|
||||
Wait until you see a prompt, either
|
||||
|
||||
~fintud-macrep:talk()
|
||||
or
|
||||
~fintud-macrep:dojo>
|
||||
|
||||
and then press ^D to quit. Your urbit is launched.
|
||||
|
||||
Execute
|
||||
-------
|
||||
|
||||
To restart your urbit, run with the pier name:
|
||||
|
||||
urbit fintud-macrep
|
||||
urbit mycomet
|
||||
|
||||
Your Urbit is a database, at least in theory. You can kill the
|
||||
process however you like, and it won't lose state. In theory.
|
||||
In practice, this works better on OS X than Linux. Also, don't
|
||||
let your filesystem run out of disk!
|
||||
|
||||
Out of the box, your urbit is running two default appliances,
|
||||
`:dojo` (a shell or REPL) and `:talk`. Switch between them with
|
||||
`^X`. Note that all apps share an output log, but `^X` switches
|
||||
the prompt.
|
||||
|
||||
`^D` from any default appliance exits the urbit process.
|
||||
|
||||
To jump straight into the Urbit experience, join the global
|
||||
station `urbit-meta`:
|
||||
|
||||
~fintud-macrep:talk() ;join ~doznec/urbit-meta
|
||||
|
||||
Please remember our code of conduct: "don't be rude." Also,
|
||||
`urbit-meta` is politically correct and safe for work. Please,
|
||||
no rude, un-PC or NSFW content.
|
||||
|
||||
Learn more
|
||||
----------
|
||||
|
||||
Your urbit is a web server, so the best place to read about it
|
||||
is in your browser.
|
||||
|
||||
Urbit prints the HTTP port it's serving when it starts up:
|
||||
|
||||
http: live (insecure) on 8080
|
||||
|
||||
8080 is the default. If you're running on AWS or another cloud
|
||||
service, this port may be firewalled; go to the firewall
|
||||
configuration to open it. In a last resort, you can use our
|
||||
server, `doznec.urbit.org`.
|
||||
|
||||
But assuming it's `localhost:8080`, the docs are at
|
||||
|
||||
http://localhost:8080/pub/fab/tree/doc
|
||||
|
Loading…
Reference in New Issue
Block a user