~whereswaldon/arborchat

arbor logo

#About

Arbor is currently dormant due to a lack of time/energy to continue development.

#What is Arbor?

Arbor is an open-source chat collaboration system that thinks a little differently about conversations. Arbor captures more of the context of messages than traditional chat, allowing you and your peers to communicate more clearly with less effort.

#Why is it called Arbor?

An arbor is an artificial structure that supports the growth of climbing vines in a garden. Arbor is an artificial structure for chat that helps conversation flourish.

#How is it different?

Arbor messages track what you were responding to when you wrote them. Every message explicitly has a "parent" message that it is a response to. This allows Arbor to visualize the relationships between messages for its users in a way that other chat systems cannot. This makes your conversation history into a tree instead of a list.

If you think about it, most things you say in a conversation are a response to what someone else just said. Arbor simply captures that information and uses it to help you make sense of very large conversations. Ever get confused when many people respond to a message at around the same time? Arbor makes that situation coherent.

visualization of some Arbor nodes

Note the flow of the conversation on the left and how it appears that Bob is saying he's looking to see if Alice squashed her commits. She then replies and says yes, she would love his feedback. Then Bob says that feedback is not always necessary and Charlie chimes in with a seemingly random reply at the bottom. Compare that to the view on the right where each message is a reply to another and it's much clearer that there are actually 4 conversations going on simultaneously: Bob looking at Alice's PR, Charlie asking if her commits were squashed, Alice confirming that they were, and Bob saying that squashing commits is not always necessary. Without the context parents and children provide, it's much more difficult to determine how a conversation actually played out.

If you're technically inclined, you may be interested in the more technical overview, which digs a lot deeper into the parts of Arbor and how they work.

#Want to try it?

Check out our getting started guide to take Arbor for a test drive!

If you want to host a relay yourself, check out this guide.

#Status

Arbor started in February 2018 as a wacky idea. We implemented a proof-of-concept system that embodies chat as a tree over the course of the next ten months, and we were really pleased by the results. However, this system had some serious flaws due to its proof-of-concept nature. It had no security, and no good way to build security. We've started over, but this time we're building something serious. It takes a lot of work to build a secure communication platform from the ground up, so it's slow going.

#Components

For the new implementation, we have:

  • specifications: programming-language-agnostic descriptions of the formats, conventions, and protocols that Arbor uses.
  • sprig: a cross-platform GUI arbor client.
  • wisteria: a terminal client for arbor.
  • forest-go: a library for creating and manipulating messages (nodes) in the Arbor system.
  • sprout-go: a library for speaking the sprout protocol (our simple node exchange protocol).
  • sinensis: the reference arbor relay implementation (relays are like servers in a conventional system, except that everybody runs one). The code for this currently lives here, but will be moved into its own repo once it reaches a point of maturity.

#FAQ

#Where did the logo come from?

The inspiration for the logo was a sketch by Katerina Waldon. Chris Waldon hacked together the current one in Inkscape.

#Why is some stuff on GitHub and some stuff on SourceHut?

When the project started, we didn't know sourcehut existed. We really like some of the ideas behind sourcehut, and we're trying it out for the time being as a possible permanent home for the project. We will try to mirror all of our code back to GitHub to make it all easy to find though.

#Why make a new chat application? Isn't the market saturated enough?

Sure; there are hundreds of other applications that do chat, and many of them are very good tools. Arbor's goal isn't to replace them all, but to demonstrate that there are other interesting ways to build chat.

About this wiki

commit 5632e26c5b9e693b201e0ba1093c505eb1786ab5
Author: Chris Waldon <christopher.waldon.dev@gmail.com>
Date:   2026-01-29T15:48:14-05:00

update project status

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
Clone this wiki ("main" branch)
https://git.sr.ht/~whereswaldon/arborchat (read-only)
git@git.sr.ht:~whereswaldon/arborchat (read/write)