5title: Messaging (:talk)
13`:talk` is the Urbit messaging and notifications protocol. Today we use `:talk` just to chat and coordinate, but it's really a general purpose piece of infrastructure.
15For the time being come join us in `/urbit-meta` by using the <a href="#-quickstart">quickstart</a> below.
17Today `:talk` is sort of like a distributed, encrypted Slack that can be used from the CLI and the browser. There’s no central `:talk` server. Any Urbit can host one.
19`:talk` is a general purpose tool for both aggregating and publishing streams of messages. Applications can use `:talk` as their transport protcol, API connectors can push disparate data sources into `:talk`, and so on. There are lots of things a distributed message protocol can be used for that we haven't even thought of.
26For the most part we use `:talk` as a single-instance of Slack: one main channel (`/urbit-meta`) and dms. Everyone is more than welcome in `/urbit-meta`. It's the place to get help, ask questions and chat about Urbit in general.
28Let's join `/urbit-meta`:
30Use `ctrl-x` to switch from `:dojo` to `:talk`, then:
32 ~your-urbit:talk> ;join ~doznec/urbit-meta
36 ---------:talk| %porch subscribed to /urbit-meta, called `>`
37 ---------:talk| rules of /urbit-meta:
38 ---------:talk| don't be rude
39 ---------:talk| urbit-meta is politically correct and safe for work
40 ~doznec= ~your-urbit admitted to %urbit-meta
43Post a line to `/urbit-meta`:
45 ~your-urbit:talk> hello, world
47You'll see, echoed back at you through `~doznec`:
49 ~your-urbit> hello, world
51To send a direct message to someone, first set your audience:
53 ~your-urbit:talk> ;~talsur-todres
55You'll see your prompt change:
57 ~your-urbit:talk[~talsur-todres]
59Now you and `~talsur-todres` can exchange messages directly.
61To set your audience back to `/urbit-meta`:
63 ~your-urbit:talk> ;~doznec/urbit-meta
65Use `;leave` to unsubscribe from a channel:
67 ~your-urbit:talk> ;leave ~doznec/urbit-meta
69There are two ways of using `:talk`: from the CLI or through a web ui available at `http://your-urbit.urbit.org/talk` (or `http://localhost:8080/talk`).
71The web ui ships as compiled JavaScript on your Urbit, but has its own source repo [here](https://github.com/urbit/talk).
73Last, let's create a channel we can invite some friends to:
75 ~your-urbit:talk> ;create channel %my-channel 'some description'
77Now you can tell your friends to `;join ~your-urbit/my-channel`.
81`:talk`'s design is similar in spirit to [nntp](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol), the underlying protocol for Usenet.
83Our design is pretty simple: `:talk` messages are called ‘posts’. Posts go to ‘stations’. Any urbit can host or subscribe to any number of stations.
85There are four kinds of station: a write-only `%mailbox` for direct messages, an invite-only `%party` for private conversation, a read-only `%journal` for curated content, and a public-access `%channel` for general use.
89For the time being a post is either a line, a URL or a command.
93A line is 64 bytes of ASCII lowercase, spaces and punctuation. If the line starts with '@', it's an action (IRC `/me`).
95The `:talk` interface will let you keep typing past 64 bytes, but
96insert a Unicode bullet-point character in an appropriate space
97in your post, to show you the prospective linebreak. Your essay
98will be posted in multiple lines.
100 ~your-urbit:talk> this is a long message, so it will by truncated right at this•spot
104 ~your-urbit; this is a long message, so it will by truncated right at this
109A URL is any valid URL.
111 ~your-urbit:talk> http://example.com
115A command is a hoon expression, prefaced by '#'.
117 ~your-urbit:talk> #(add 2 2)
121A line number identifying the *subsequent* line is displayed every 5 lines.
124 ~your-urbit; this is my message
125 ~your-urbit@ this is an @ message
126 ~your-urbit; this is a long message, so it will by truncated right at this
128 ~your-urbit/ http://example.com/
130 ~your-urbit# (add 2 2) 4
132You can use a line number to *activate* a line:
136which prints the number, line identifier, timestamp, sender, audience,
140 0v3.hl51p.jhege.amhec.vb37r.3rejr at ~2016.6.24..04.48.21..a235
141 ~your-urbit to ~another-urbit
144Activating a URL will print the full URL (it could have been truncated),
145and activating a command will evaluate it.
147You can activate the most recent line with `;`, the second-most recent with
150### Creating and managing stations
152`;create journal %serious-journal 'description'` - Creates a `%journal`, a privately writable publicly readable station.
154`;create channel %serious-channel 'description'` - Creates a `%channel`, a publicly readable publicly writeable station.
158You'll see presence notifications when people enter or leave
159stations you're subscribed to.
161`;who` - list everyone in all your stations
163`;who station` - list everyone in that station
167Glyphs are assigned by station hash out of the following list
169 > = + - } ) , . " ' ^ $ % & @
171Alphanumeric characters and `|#;:*~_` are reserved; all others (the above lists, and `\/!?({<`) can be manually assigned.
173`;bind > /urbit-test` - assigns the `>` glyph to `/urbit-test`.
177Received posts are prefixed with a glyph to let you know what the audience is. You can activate an individual post to see the full audience.
179`|` - Informational messages
181`:` - Posts directly to you
183`;` - Posts to you and others (a multiparty conversation)
185`*` - Posts to a complex audience that doesn't directly include you.
191The audience you're sending to is always shown in your prompt. If there's a glyph for it, it's shown as the glyph.
193Here we're talking to the station bound to `=`:
197Here we're talking directly to `~dannum-mitryl`:
199 ~your-urbit:talk(~dannum-mitryl)
203`;~urbit/station` - Set audience to `~urbit/station`
205`;=` - Set audience to the station bound to the `=` glyph
207`;~dannum-mitryl` - Set audience to `~dannum-mitryl` (a direct post).
209`;%station` - Set audience to a station on your own ship
211`;~dannum-mitryl this is a private message` - Set the audience and send a post in the same line. This works for all of the above.
213Your audience is configured 'implicitly' with regard to the following rules (in order):
215- if you manually locked the audience, that audience.
216- if typing a post, the audience when you started typing.
217- if you activated a post, the post you activated.
218- audience of the last post received.
219- audience of the last post sent.
221Clear any 'implicit' audience setting by moving your cursor to
222the start of the line and pressing backspace (whether the line is
223empty or not). Posting a line clears the typing and activation
228`;nick` - list all nicknames
230`;nick ~your-urbit` - look up a nickname
232`;nick plato` - search in reverse
234`;nick ~your-urbit plato` create a nickname
236`;nick ~your-urbit ~` clear an assigned nickname
238`;set noob` show nicknames instead of urbit names
240`;unset noob` show urbit names instead of nicknames
242All nicknames must be 14 characters or less, lowercase. Nicknames are strictly local - like the names on entries in a phonebook. Sometimes in a post you want to mention someone you know by a nickname. Just type `~plato`, and `:talk` will replace it with `~your-urbit`.
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list