on 777435c help sign in
urbit.org/docs/using/messaging.md
193 lines 6.5 kB history raw
1---
2next: true
3sort: 4
4title: Messaging (:talk)
5---
7# Messaging (`:talk`)
9<div class="row">
10<div class="col-md-8">
12`: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.
14For the time being come join us in `/urbit-meta` by using the <a href="#-quickstart">quickstart</a> below.
16Today `: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.
18`: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.
20</div>
21</div>
23## Quickstart
25For 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.
27Let's join `/urbit-meta`:
29 ~your-urbit: ;join ~doznec/urbit-meta
31You'll see:
33 ---------:talk| %porch subscribed to /urbit-meta, called `>`
34 ---------:talk| rules of /urbit-meta:
35 ---------:talk| don't be rude
36 ---------:talk| urbit-meta is politically correct and safe for work
37 ~doznec= ~your-urbit admitted to %urbit-meta
38 ~your-urbit:talk>
40Post a line to `/urbit-meta`:
42 ~your-urbit:talk> hello, world
44You'll see, echoed back at you through `~doznec`:
46 ~your-urbit> hello, world
48To send a direct message to someone, first set your audience:
50 ~your-urbit:talk> ;~talsur-todres
52You'll see your prompt change:
54 ~your-urbit:talk[~talsur-todres]
56Now you and `~talsur-todres` can exchange messages directly.
58To set your audience back to `/urbit-meta`:
60 ~your-urbit:talk> ;~doznec/urbit-meta
62There 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`).
64The web ui ships as compiled JavaScript on your Urbit, but has its own source repo [here](https://github.com/urbit/talk).
66Last, let's create a channel we can invite some friends to:
68 ~your-urbit:talk> ;create channel %my-channel 'some description'
70Now you can tell your friends to `;join ~your-urbit/my-channel`.
72## Manual
74`:talk`'s design is similar in spirit to [nntp](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol), the underlying protocol for Usenet.
76Our design is pretty simple: `:talk` messages are called ‘posts’. Posts go to ‘stations’. Any urbit can host or subscribe to any number of stations.
78There 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.
80### Posts
82For the time being a post is either a line, a URL or a command.
84#### Lines
86A line is 64 bytes of ASCII lowercase, spaces and punctuation. If the line starts with '@', it's an action (IRC `/me`).
88The `:talk` interface will let you keep typing past 64 bytes, but
89insert a Unicode bullet-point character in an appropriate space
90in your post, to show you the prospective linebreak. Your essay
91will be posted in multiple lines.
93#### URLs
95A URL is any valid URL.
97### Commands
99A command is a hoon expression, prefaced by '#'.
101### Creating and managing stations
103`;create journal %serious-journal 'description'` - Creates a `%journal`, a privately writable publicly readable station.
105`;create channel %serious-channel 'description'` - Creates a `%channel`, a publicly readable publicly writeable station.
107### Presence
109You'll see presence notifications when people enter or leave
110stations you're subscribed to.
112`;who` - list everyone in all your stations
114`;who station` - list everyone in that station
116### Station Glyphs
118Glyphs are assigned by station hash out of the following list
120 > = + - } ) , . " ' ^ $ % & @
122Alphanumeric characters and `|#;:*~_` are reserved; all others (the above lists, and `\/!?({<`) can be manually assigned.
124`;bind > /urbit-test` - assigns the `>` glyph to `/urbit-test`.
126### Prefixes
128Received 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.
130`|` - Informational messages
132`:` - Posts directly to you
134`;` - Posts to you and others (a multiparty conversation)
136`*` - Posts to a complex audience that doesn't directly include you.
138### Audience
140#### Prompt
142The audience you're sending to is always shown in your prompt. If there's a glyph for it, it's shown as the glyph.
144Here we're talking to the station bound to `=`:
146 ~your-urbit:talk=
148Here we're talking directly to `~dannum-mitryl`:
150 ~your-urbit:talk(~dannum-mitryl)
152#### Configuration
154`;~urbit/station` - Set audience to `~urbit/station`
156`;=` - Set audience to the station bound to the `=` glyph
158`;~dannum-mitryl` - Set audience to `~dannum-mitryl` (a direct post).
160`;%station` - Set audience to a station on your own ship
162`;~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.
164Your audience is configured 'implicitly' with regard to the following rules (in order):
166- if you manually locked the audience, that audience.
167- if typing a post, the audience when you started typing.
168- if you activated a post, the post you activated.
169- audience of the last post received.
170- audience of the last post sent.
172Clear any 'implicit' audience setting by moving your cursor to
173the start of the line and pressing backspace (whether the line is
174empty or not). Posting a line clears the typing and activation
175configurations.
177### Nicknames
179`;nick` - list all nicknames
181`;nick ~your-urbit` - look up a nickname
183`;nick plato` - search in reverse
185`;nick ~your-urbit plato` create a nickname
187`;nick ~your-urbit ~` clear an assigned nickname
189`;set noob` show nicknames instead of urbit names
191`;unset noob` show urbit names instead of nicknames
193All 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`.