5title: 'Messaging (:talk)'
14`:talk` is the Urbit messaging and notifications protocol. Today we use
15`:talk` just to chat and coordinate, but it's really a general purpose
16piece of infrastructure.
18For the time being come join us in `/urbit-meta` by using the
19<a href="#-quickstart">quickstart</a> below.
21Today `:talk` is sort of like a distributed, encrypted Slack that can be
22used from the CLI and the browser. There’s no central `:talk` server.
23Any Urbit can host one.
25`:talk` is a general purpose tool for both aggregating and publishing
26streams of messages. Applications can use `:talk` as their transport
27protcol, API connectors can push disparate data sources into `:talk`,
28and so on. There are lots of things a distributed message protocol can
29be used for that we haven't even thought of.
37For the most part we use `:talk` as a single-instance of Slack: one main
38channel (`/urbit-meta`) and dms. Everyone is more than welcome in
39`/urbit-meta`. It's the place to get help, ask questions and chat about
42Let's join `/urbit-meta`:
44Use `ctrl-x` to switch from `:dojo` to `:talk`, then:
46 ~your-urbit:talk> ;join ~dozbud/urbit-meta
50 ---------:talk| %porch subscribed to /urbit-meta, called `>`
51 ---------:talk| rules of /urbit-meta:
52 ---------:talk| don't be rude
53 ---------:talk| urbit-meta is politically correct and safe for work
54 ~dozbud= ~your-urbit admitted to %urbit-meta
57Post a line to `/urbit-meta`:
59 ~your-urbit:talk> hello, world
61You'll see, echoed back at you through `~dozbud`:
63 ~your-urbit> hello, world
65To send a direct message to someone, first set your audience:
67 ~your-urbit:talk> ;~talsur-todres
69You'll see your prompt change:
71 ~your-urbit:talk[~talsur-todres]
73Now you and `~talsur-todres` can exchange messages directly.
75To set your audience back to `/urbit-meta`:
77 ~your-urbit:talk> ;~dozbud/urbit-meta
79Use `;leave` to unsubscribe from a channel:
81 ~your-urbit:talk> ;leave ~dozbud/urbit-meta
83There are two ways of using `:talk`: from the CLI or through a web ui
84available at `http://your-urbit.urbit.org/talk` (or
85`http://localhost:8080/talk`).
87The web ui ships as compiled JavaScript on your Urbit, but has its own
88source repo [here](https://github.com/urbit/talk).
90Last, let's create a channel we can invite some friends to:
92 ~your-urbit:talk> ;create channel %my-channel 'some description'
94Now you can tell your friends to `;join ~your-urbit/my-channel`.
98`:talk`'s design is similar in spirit to
99[nntp](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol),
100the underlying protocol for Usenet.
102Our design is pretty simple: `:talk` messages are called ‘posts’. Posts
103go to ‘stations’. Any urbit can host or subscribe to any number of
106There are four kinds of station: a write-only `%mailbox` for direct
107messages, an invite-only `%party` for private conversation, a read-only
108`%journal` for curated content, and a public-access `%channel` for
113For the time being a post is either a line, a URL or a command.
117A line is 64 bytes of ASCII lowercase, spaces and punctuation. If the
118line starts with '@', it's an action (IRC `/me`).
120The `:talk` interface will let you keep typing past 64 bytes, but insert
121a Unicode bullet-point character in an appropriate space in your post,
122to show you the prospective linebreak. Your essay will be posted in
125 ~your-urbit:talk> this is a long message, so it will by truncated right at this•spot
129 ~your-urbit; this is a long message, so it will by truncated right at this
134A URL is any valid URL.
136 ~your-urbit:talk> http://example.com
140A command is a hoon expression, prefaced by '\#'.
142 ~your-urbit:talk> #(add 2 2)
146A line number identifying the *subsequent* line is displayed every 5
150 ~your-urbit; this is my message
151 ~your-urbit@ this is an @ message
152 ~your-urbit; this is a long message, so it will by truncated right at this
154 ~your-urbit/ http://example.com/
156 ~your-urbit# (add 2 2) 4
158You can use a line number to *activate* a line:
162which prints the number, line identifier, timestamp, sender, audience,
166 0v3.hl51p.jhege.amhec.vb37r.3rejr at ~2016.6.24..04.48.21..a235
167 ~your-urbit to ~another-urbit
170Activating a URL will print the full URL (it could have been truncated),
171and activating a command will evaluate it.
173You can activate the most recent line with `;`, the second-most recent
176### Creating and managing stations
178`;create journal %serious-journal 'description'` - Creates a `%journal`,
179a privately writable publicly readable station.
181`;create channel %serious-channel 'description'` - Creates a `%channel`,
182a publicly readable publicly writeable station.
186You'll see presence notifications when people enter or leave stations
189`;who` - list everyone in all your stations
191`;who station` - list everyone in that station
195Glyphs are assigned by station hash out of the following list
197 > = + - } ) , . " ' ^ $ % & @
199Alphanumeric characters and `|#;:*~_` are reserved; all others (the
200above lists, and `\/!?({<`) can be manually assigned.
202`;bind > /urbit-test` - assigns the `>` glyph to `/urbit-test`.
206Received posts are prefixed with a glyph to let you know what the
207audience is. You can activate an individual post to see the full
210`|` - Informational messages
212`:` - Posts directly to you
214`;` - Posts to you and others (a multiparty conversation)
216`*` - Posts to a complex audience that doesn't directly include you.
222The audience you're sending to is always shown in your prompt. If
223there's a glyph for it, it's shown as the glyph.
225Here we're talking to the station bound to `=`:
229Here we're talking directly to `~dannum-mitryl`:
231 ~your-urbit:talk(~dannum-mitryl)
235`;~urbit/station` - Set audience to `~urbit/station`
237`;=` - Set audience to the station bound to the `=` glyph
239`;~dannum-mitryl` - Set audience to `~dannum-mitryl` (a direct post).
241`;%station` - Set audience to a station on your own ship
243`;~dannum-mitryl this is a private message` - Set the audience and send
244a post in the same line. This works for all of the above.
246Your audience is configured 'implicitly' with regard to the following
249- if you manually locked the audience, that audience.
250- if typing a post, the audience when you started typing.
251- if you activated a post, the post you activated.
252- audience of the last post received.
253- audience of the last post sent.
255Clear any 'implicit' audience setting by moving your cursor to the start
256of the line and pressing backspace (whether the line is empty or not).
257Posting a line clears the typing and activation configurations.
261`;nick` - list all nicknames
263`;nick ~your-urbit` - look up a nickname
265`;nick plato` - search in reverse
267`;nick ~your-urbit plato` create a nickname
269`;nick ~your-urbit ~` clear an assigned nickname
271`;set noob` show nicknames instead of urbit names
273`;unset noob` show urbit names instead of nicknames
275All nicknames must be 14 characters or less, lowercase. Nicknames are
276strictly local - like the names on entries in a phonebook. Sometimes in
277a post you want to mention someone you know by a nickname. Just type
278`~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