Decentralized message broker for public groups in Sphinx. Anyone can run a sphinx-tribes server, to route group messages.
sphinx-tribes clients can be sphinx-relay nodes, apps, websites, or IoT devices.
sphinx-tribes is an MQTT broker that any node can subscribe to. Message topics always have two parts: {receiverPubKey}/{groupUUID}
. Only the owner of the group is allowed to publish to it: all messages from group members must be submitted to the owner as an Lightning keysend payment. The group uuid
is a timestamp signed by the owner.
Authentication is handled by sphinx-auth
docker build --no-cache -t sphinx-tribes .
To run tribes frontend locally, use these ports:
- tribes:
yarn start:tribes:docker
(localhost:23000) - people:
yarn start:people:docker
(localhost:23007)
If you would like to run just the frontend do the following
line 10 in frontend/app/src/config/ModeDispatcher.tsx
change 'localhost:3000': Mode.TRIBES
-> 'localhost:3000': Mode.COMMUNITY
line 5 in frontend/app/src/config/host.ts
return "people.sphinx.chat"
- Create a .env file and populate the env file with thgitese variables
TEST_MODE=true
PORT= // Server PORT
DATABASE_URL= // Database URL
TEST_ASSET_URL= // Test asset URL
- Build the application by running
go build .
- Run the application with
./sphinx-tribes
- Create a Postgres database
- Copy the table creation queries from tribes.sql file, and create the tables in the database created
- Create a .env file and populate the .env files with these variables
RDS_HOSTNAME =
RDS_PORT =
RDS_DB_NAME =
RDS_USERNAME =
RDS_PASSWORD =
- Build and run the Golang server