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`:
30 ~your-urbit: ;join ~doznec/urbit-meta
34 ---------:talk| %porch subscribed to /urbit-meta, called `>`
35 ---------:talk| rules of /urbit-meta:
36 ---------:talk| don't be rude
37 ---------:talk| urbit-meta is politically correct and safe for work
38 ~doznec= ~your-urbit admitted to %urbit-meta
41Post a line to `/urbit-meta`:
43 ~your-urbit:talk> hello, world
45You'll see, echoed back at you through `~doznec`:
47 ~your-urbit> hello, world
49To send a direct message to someone, first set your audience:
51 ~your-urbit:talk> ;~talsur-todres
53You'll see your prompt change:
55 ~your-urbit:talk[~talsur-todres]
57Now you and `~talsur-todres` can exchange messages directly.
59To set your audience back to `/urbit-meta`:
61 ~your-urbit:talk> ;~doznec/urbit-meta
63There 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`).
65The web ui ships as compiled JavaScript on your Urbit, but has its own source repo [here](https://github.com/urbit/talk).
67Last, let's create a channel we can invite some friends to:
69 ~your-urbit:talk> ;create channel %my-channel 'some description'
71Now you can tell your friends to `;join ~your-urbit/my-channel`.
75`:talk`'s design is similar in spirit to [nntp](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol), the underlying protocol for Usenet.
77Our design is pretty simple: `:talk` messages are called ‘posts’. Posts go to ‘stations’. Any urbit can host or subscribe to any number of stations.
79There 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.
83For the time being a post is either a line, a URL or a command.
87A line is 64 bytes of ASCII lowercase, spaces and punctuation. If the line starts with '@', it's an action (IRC `/me`).
89The `:talk` interface will let you keep typing past 64 bytes, but
90insert a Unicode bullet-point character in an appropriate space
91in your post, to show you the prospective linebreak. Your essay
92will be posted in multiple lines.
96A URL is any valid URL.
100A command is a hoon expression, prefaced by '#'.
102### Creating and managing stations
104`;create journal %serious-journal 'description'` - Creates a `%journal`, a privately writable publicly readable station.
106`;create channel %serious-channel 'description'` - Creates a `%channel`, a publicly readable publicly writeable station.
110You'll see presence notifications when people enter or leave
111stations you're subscribed to.
113`;who` - list everyone in all your stations
115`;who station` - list everyone in that station
119Glyphs are assigned by station hash out of the following list
121 > = + - } ) , . " ' ^ $ % & @
123Alphanumeric characters and `|#;:*~_` are reserved; all others (the above lists, and `\/!?({<`) can be manually assigned.
125`;bind > /urbit-test` - assigns the `>` glyph to `/urbit-test`.
129Received 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.
131`|` - Informational messages
133`:` - Posts directly to you
135`;` - Posts to you and others (a multiparty conversation)
137`*` - Posts to a complex audience that doesn't directly include you.
143The audience you're sending to is always shown in your prompt. If there's a glyph for it, it's shown as the glyph.
145Here we're talking to the station bound to `=`:
149Here we're talking directly to `~dannum-mitryl`:
151 ~your-urbit:talk(~dannum-mitryl)
155`;~urbit/station` - Set audience to `~urbit/station`
157`;=` - Set audience to the station bound to the `=` glyph
159`;~dannum-mitryl` - Set audience to `~dannum-mitryl` (a direct post).
161`;%station` - Set audience to a station on your own ship
163`;~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.
165Your audience is configured 'implicitly' with regard to the following rules (in order):
167- if you manually locked the audience, that audience.
168- if typing a post, the audience when you started typing.
169- if you activated a post, the post you activated.
170- audience of the last post received.
171- audience of the last post sent.
173Clear any 'implicit' audience setting by moving your cursor to
174the start of the line and pressing backspace (whether the line is
175empty or not). Posting a line clears the typing and activation
180`;nick` - list all nicknames
182`;nick ~your-urbit` - look up a nickname
184`;nick plato` - search in reverse
186`;nick ~your-urbit plato` create a nickname
188`;nick ~your-urbit ~` clear an assigned nickname
190`;set noob` show nicknames instead of urbit names
192`;unset noob` show urbit names instead of nicknames
194All 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