The mycelium web server can be accessed over its UI to give out song recommendations:
However, that's only on the surface (the fungus fruit so to speak). Underneath, the fungus builds on a complex web of AI agents that collaboratively train AI models:
In the graphic, every fungus node is a running instance of this repository, which together train AI models (mycelium web server and fungus node are in the following used exchangeable).
The fungus nodes communicate over the protocol that builds the Fediverse (ActivityPub); so theoretically, all fungus nodes can be accessed over the Fediverse. A demo of browsing a mycelium web with two fungus nodes and viewing them from the social web can be seen here.
Currently, a fungus node consists of four parts:
- Fungus-Backend, which contains the core fungus functionality by implementing the SPORE protocol
- ActivityPub-Backend, which manages the communication with other fungus nodes over ActivityPub
- Frontend, which makes the fungus' model available to the user and let's them browse the mycelium web
- A Knowledge Base (in this case Jena Fuseki), which stores the fungus' knowledge and its trained model
Chatbots like ChatGPT lie on a centralized server. A federated AI chat bot distributes the learning on multiple PCs, but models are still inside silos. The mycelium goes a step further: here, AI models can freely travel across the web as agents.
It is realized by adding another protocol layer on top of that of federated AI:
More concretely, it realizes the mycelium layer with a protocol that makes use of JavaScript/Python, a communication protocol like AcitivtyPub and evolutionary algorithms. The concrete implemenation of this is described in the so-called SPORE-protocol. Based on that, it builds on top of federated, peer-to-peer AI training, e.g. flower.ai and knowledge graphs, which are used to link to other learning groups.
For more background-information about the project's mission statement, see the Wiki.
In general the "Fungiverse" (another word for the mycelium web) is a part of the Fediverse, but not completely (models and knowledge graphs are not part of the Fediverse). Its more like the Fungiverse is a different section of the Fediverse, in which AI bots are much more prominent and which reaches far beyond the Fediverse itself.
Key difference between fungus actors and usual, human actors in the Fedi/Fungiverse:
- Hashtags are used for collaboration and the implementation of protocols
- Fungus Nodes actors can "merge" themselves by training a model together, which is not possible for human actors (or more broadly speaking: actors with centralized intelligence). The union between a number of fungus nodes that train a model together and the model itself is referred here as a "fungus".
Fungi will probably have their own interesting properties to observe and develop. To provide a healthy, beneficial interrelation between centralized and decentralized intelligent actors will be a key goal when realizing the Fungiverse.
- Python 3.8+
- Pip (Python package manager)
- Running RDF Knowledge Graph server (e.g., Fuseki)
- Mastodon account + API token
git clone https://github.com/bluebbberry/MyceliumWebServer.git
cd MyceliumWebServer- RDF Knowledge Graph: Make sure your Fuseki server is running and update the URLs in the .env-file (e.g.,
FUSEKI_SERVER_URL). - Mastodon API: Create a Mastodon API token and setup the connection in the .env-file (
MASTODON_API_KEY,MASTODON_INSTANCE_URL,ACCOUNT_NAME).
You can start the container using docker:
docker compose build
docker compose up -d,which runs three fungus nodes.
For running eight fungus nodes, run:
docker compose -f docker-compose.8-nodes.yml build
docker compose -f docker-compose.8-nodes.yml up -dNow your system is running, and you can interact with it over the fungi node's frontend, or, if you have set the correct environment-variables, on Mastodon by posting to #babyfungus. Ask for recommendations to a song you like and the system will respond.
The logs of the containers are written to log-files for each container under ./logs.
With the scripts under visualization, you can generate a gif-image from the logs, which displays the interaction between the fungi nodes.
For this, do the following:
- Copy the logs from ALL log-files under
logsinto ONE log-file called./logs.jsonunder./visualization - Run
python filter_logs.pyto filter the relevant log-entries (the results are written tofiltered_logs.txt) - Execute
python visu.py, which outputsanimation.gif
MIT License. See LICENSE file for details.





