Common
+code :: passcode for Landscape
|hi <ship> :: ping a ship
:: <ship> is the ship's name
|rekey '<key>' :: update your ship's private keys
:: <key> is the contents of an UrbitOS keyfile
ctrl-x :: toggle between cli apps
ctrl-d :: shutdown your ship
ctrl-z :: kill urbit process (to be used only if ctrl-d doesn't work)
Ship references
our :: your ship's name
(sein:title our now our) :: your ship's sponsor
Print data to console
+trouble :: current base/home hashes and local key state of our, sponsor, and ~dopzod
|syncs :: status of existing desk subscriptions
.^(@uv %cz /=base=) :: your ship's base hash
.^(@uv %cz /=home=) :: your ship's home hash
.^(* %j /=rift=/(scot %p <ship>)) :: continuity number of <ship>
.^(* %j /=life=/(scot %p <ship>)) :: revision number of <ship>'s key
.^([@u @ux @] %j /=deed=/<ship>/<life>) :: <ship>'s key with revision number <life> (hex format)
.^(* %j /=deed=/<ship>/<life>) :: <ship>'s key with revision number <life> (decimal format)
|knob %hole %<vol> :: set stack trace verbosity
:: <vol> is "loud" or "soft"
Chat
:: toggle to :chat-cli> to run these commands
;chats :: list your ship's active chats
;join <ship>/<chat> :: <ship> is the name of the ship that owns the chat
:: <chat> is the name of the chat
;leave <ship>/<chat>
;create <type> /<chat> :: <type> is "channel", "village", "journal", or "mailbox" (see below)
;delete /<chat>
;invite <perm> /<chat> <ships> :: <perm> is "r", "w", or "rw" (see below)
:: <ships> is a comma-separated list of ship names
;banish <perm> /<chat> <ships> :: <perm> is the permission type to revoke from <ships>
:: channel: publicly writable
:: village: invite-only writable
:: journal: publicly readable, invite-only writable
:: mailbox: publicly writeable, invite-only readable
:: r: read permission
:: w: write permission
:: rw: read and write permission
Moons
|moon :: create moon
|moon-breach <moon> :: reset network status
:: <moon> is the moon's name
|moon-cycle-keys <moon> :: cycle keys without breaching
Desks
|merge %<desk> our %home :: clone your ship's %home desk to create a new one named <desk>
:: every ship has the desks "home", "base", and "kids"
|mount /=<desk>= :: mount a desk to Unix
|commit %<desk> :: save a desk's changes to Unix
|sync %<desk> <ship> %<remote-desk> :: sync from a ship's <remote-desk> to your <desk>
:: stars and planets automatically configure "|sync %home <parent> %kids" upon first boot
|unsync %<desk> <ship> %<remote-desk> :: cancel an existing sync
:goad %force :: recompile all apps
Convert Azimuth points & @p's
`@`<ship> :: @p → AZP
:: <ship> is any ship name
`@p`<azp> :: AZP → @p
:: <azp> in Hoon notation, e.g. 3183008865 is 3.183.008.865
Ames debugging
:: Check whether your ship can contact them at all:
|hi ~receiving-ship
:: If this is successful that means your ship can contact the ship,
:: but it doesn't necessarily mean all your ship's messages are going through
:: since they might be on different flows (Urbit only guarantees ordering
:: within a single flow).
|hi ~sponsor
:: try contacting your ship's sponsors and the receiving ship's sponsors
:: Check if we're actually trying to send messages:
+timers
:: If your ship is retrying a message, there will be an entry with a duct
:: that includes /a/pump/~ship/N where N is the bone number.
:: If your ship is trying to talk on several bones (eg multiple
:: subscriptions or pokes on different ducts), there may be more than one.
now
:: compare to the times in +timers. If this is significantly
:: after those times, then behn is stuck. We don't know why this
:: happens, but vere should kick it 10 minutes after the last timer
:: fired. You can accelerate this by setting any timer. The easiest
:: way is to run `-time ~s1` at the dojo.
+keys ~ship
:: run this on both ships for each other and make sure they line up
|ames-verb %snd
:: check if your ship is trying to resend the packet. Should see %dead,
:: usually with an rto of 30 seconds (our max). Check if your ship is
:: getting acks (hear/done) or duplicate acks. If so, that's where
:: you want to investigate.
:: Otherwise, this will tell you which routes your ship is trying to send on:
|ames-verb %snd %rot
:: If it's been stuck for a while, this should be the ship and
:: its sponsor tree up until a ship we have a direct route to
:: (usually a galaxy or a common sponsor between the two ships).
:: On the receiving ship, run:
|ames-verb %rcv
:: This will tell you if it's sending acknowledgments (done/hear)
:: and if they're duplicates. If it's not sending them, investigate.
:: If the receiving ship is sending acknowledgements run:
|ames-verb %rcv %rot
:: This will tell you what routes it's using to try to send
:: back the acknowledgment
:: If one side is sending and other isn't receiving (in either
:: direction) check the intervening sponsors that it says it's
:: routing through by running:
|ames-verb %for
:: This will tell you every time your ship forwards a packet for someone.