From Join the Fediverse
Other languages:

The Streams repository contains the latest generation of free, open-source, decentralised, nomadic Fediverse server software. It was created in October of 2021 as a fork of Roadhouse which has an ancestry that leads all the way back to Friendica and includes Hubzilla. All were created by Mike Macgirvin.

What is unique about this server application is that it has no name, it has no logo, it has no brand identity, it has no website, and it is not even considered a project. All code responsible for sending nodeinfo data has been removed. It is absent from all websites that list Fediverse projects and instances. Its core is in the public domain, and contributions by various developers are under different free licenses, making it so difficult to re-license a fork of the whole of it to non-free and proprietary that it can be considered impossible.

All this is deliberate and intentional by Macgirvin's decision.[1]

Technically speaking, the name "Streams" refers to the repository and not the software. In order to be able to mention the nameless software by something that resembles a name, it is colloquially being referred to as (streams), the parentheses being part of the replacement name.


Around 2018, about three years after Hubzilla had been forked from the perpetual development project Red Matrix, experience with nomadic identity had shown that the way this feature was implemented in the Zot protocol was lacking. Zot needed further development, but this couldn't be done on Hubzilla, also because advancing it meant cutting off most or all non-nomadic connections.

So a whole number of new projects was created, all leading back to the Red Matrix and mostly past Hubzilla, and all with their set of features and external connections drastically reduced in comparison to Hubzilla or to the Red Matrix shortly before the Hubzilla fork. By and by, they led to new versions of Zot, Zot6 which introduced the single-sign-on system OpenWebAuth in 2018, Zot8 which re-introduced an improved integration of ActivityPub in ca. 2019 and finally Zot11, re-named Nomad, in 2021. The latter was first tested on Roadhouse.

Shortly later, Nomad was considered ready for prime-time. So Roadhouse was forked once again into deliberately nameless code that was declared a stable release and uploaded to a repository named Streams. At the end of the same year, everything else that had come after Hubzilla was discontinued, and administrators of still existing instances were advised to do the fairly easy cross-grade to the Streams repository.

Role in the Fediverse

Unlike all other Fediverse projects, the code in the Streams repository is primarily not intended to be a self-contained, branded product. Instead, the repository was created for developers to fork it and create new Fediverse applications out of it with state-of-the-art features such as nomadic identity and OpenWebAuth readily available. Thus, developing such advanced software built on top of the Nomad protocol, but with ActivityPub support, could actually be easier than developing yet another project on top of ActivityPub from scratch without nomadic identity and without OpenWebAuth.

Still, it is being increasingly deployed as-is as another decentralised social platform. After all, since its predecessors have been discontinued, it is one out of only two Fediverse projects that support nomadic identity and the only one to do so in a more lightweight and easier-to-handle way than Hubzilla and without Hubzilla's massive feature overhead.


(streams) shares a number of features with its predecessors.

Structure and connectivity

Like everything from the Red Matrix on, including Hubzilla, it replaces traditional accounts as user identities with channels. User accounts are only used to access these channels, of which each user account can have more than one. Channel roles are still variable and allow for everything from personal channels to private or public forums, but (streams) has no longer got Hubzilla's pre-defined channel roles.

Also, like everything from the Red Matrix on with the exception of the first Osada, it supports nomadic identity. Hubzilla channels can be cloned to (streams) except for content and data that isn't supported by (streams). Cloning (streams) channels to Hubzilla, however, does not work due to (streams)' Nomad being too advanced in comparison to Hubzilla's Zot6.

(streams) supports cross-project single sign-on via OpenWebAuth which it has inherited from all the way back to Zap.

Connectivity to the outside world has been greatly reduced to only ActivityPub. On the other hand, Nomad has better ActivityPub support than the previous Zot versions.


Many posting features even date all the way back to 2010 when Friendica was released as Mistpark. Just like on Friendica, Hubzilla and everything in-between, (streams) threads consist of only one post or direct message at the beginning plus comments rather than a loosely-tied string of single posts. The start post defines the access permissions which can't be changed for comments, and the start poster can delete comments from the thread.

Just like on everything created by Mike Macgirvin, there is virtually no character count limit. It is possible to write posts, comments or direct messages with tens of thousands of characters.

Posts and direct messages have four fields:

  • The first one is the title. It is not supported by typical ActivityPub-based projects.
  • The second one is the summary. It uses the abstract field, the same that Mastodon and others use for content warnings. A summary makes sense, considering how long posts can be.
  • The third one is for categories. It is only used to find posts within the channel; it's the only field that isn't federated except to nomadic clones.
  • The fourth one is the text body.

Comments only have the text body.

(streams) has extensive text formatting support. Whereas Friendica and Hubzilla only use BBcode for formatting posts, comments and direct messages, (streams) adds both Markdown and HTML.

Another typical "quirk" since Friendica is image handling: Each channel comes with its own file hosting space, complete with a file manager. Images have to be uploaded to that file space first, and then they can be linked into posts and direct messages and, with a trick, also into comments. Hotlinking images from elsewhere is technically possible, but as discouraged as elsewhere on the Web.

The number of images that can be added to a post is practically unlimited. The position of each image can be chosen freely; they can be embedded anywhere in the text like in a blog post. It's worth mentioning, however, that this feature is not supported by most other projects that federate with (streams).

Alt-text can be added by editing the markup code that places images into the text. There is no dedicated UI element for it.

Polls have a practically unlimited number of choices again, and they support multiple selection.

Like its predecessors, and unlike Mastodon for example, (streams) doesn't need the abstract field for content warnings. It has a built-in but optional app that can automatically detect keywords or hashtags in a customisable field and hide posts, comments or direct messages behind specific content warnings. Also, images can be flagged sensitive, causing them to be blurred out until they're clicked. Neither translates to the ActivityPub-based parts of the Fediverse, though.

A few more special applications have made it from Hubzilla such as the gallery for showing images on the file space, the flash cards or one that shows the location where a post was made on OpenStreetMap.

Removed Hubzilla features

In general, the number of features has been greatly reduced in comparison with Hubzilla, most of which were already cut from the first Osada. For example, both calendars are gone. The traditional public calendar à la Friendica has been replaced with an events app for the time being. The CalDAV server is still there, as is the CardDAV server, but both don't have a UI anymore.

Some more apps that are exclusive to Hubzilla now are webpages, wikis and articles. Technically speaking, since regular posts have had their features extended on (streams), they can do everything that articles can do on Hubzilla, but articles still have one or two advantages over posts.

Except for Pubcrawl, the optional ActivityPub connector, all federation with non-Zot projects and platforms has been removed, mostly when the first incarnation of Osada was created already. While (streams) cannot subscribe to RSS or Atom feeds anymore, channels still generate feeds.

External links