Cryptomessaging is a decentralized instant messaging system with crypto powered bots and privacy through personas.
The cryptomessaging architecture is inspired by five design patterns:
- Cryptographically derived identity such as accounts on Bitcoin, allows the creation of one or more Persona Ids for each person and enables operation without a userid. This system lets people create identities without the need for a central user account authority.
- Decentralized Attention Logic as opposed to the current business model of centralizing the logic to curate peoples information feeds.
- Instant Messaging as a foundation for quickly moving information between systems. Some information will be simple text messages between personas, other will be "meta" information to provide useful functions like the new geographic location of a moving person or a new person joining a chat, while other information could be data being shared between digital assistants.
- Email/SMTP where there is no central server managing all accounts. Instead, thousands of servers managed by different people or organizations work together.
- Open Source where software can be reviewed by peers to quickly discover security issues and identify bad actors.
The following diagram is a simplified view of the different Cryptomessaging services and clients and how they interact:
For a more complete description of each of the following components, please follow the link to the service section.
- Many Chat Services provide a simple store of chat data, including who is in each chat, and the messages they have sent. A Chat Service is an example of a Group Service (see below). When a new message arrives, it is validated, saved to the local database, and delivery is attempted to all members of the chat through Push services. Just like email, there are many chat services. What is unique to cryptomessaging, is that people are not tied to one "home" chat service; a person can start each new chat on any chat service.
- Many Persona Services provide a storage service for people to publish public data to other services. A person can associate a username, picture, short bio, and currently valid cryptographic public keys for each of their personas.
- Many Push Services accept requests from Group Services and forward them to user clients. For mobile devices, a Push Service will typically connect with an Apple Push Notification Service for Apple devices.
- iOS and Android apps provide the messaging interface to the person.
- Web applications running in a web browser such as Chrome provide a messaging interface, and can also receive push notifications.
- Keyrings provide storage for people's public and private keys. These keyrings may exist on the client device, may be backed up by cloud offerings, or may be stored securely in remote servers.
- Apple Push Service is the Apple Push Notification service.
- Android Push Service is the Google Firebase Cloud Messaging service.
- A Bot Sandbox is an execution environment on the person's device for bots. This execution can happen in the foreground and presenting a user interface, or may be in the background.
- Many Bot Services serve the code and interfaces that execute on client devices, as well as cloud based logic and storage. In addition to interacting with client devices, bot services can directly communicate between each-other.
- Many Bot Marketplaces provide discovery of Bot services.
- Group Services such as Chat, Channel, and Story share a common API and fundamentally manage a group of people (and bots) and messaging to them. Some groups have a large amount of anyone-to-anyone message traffic, while others are purely broadcast from a simple person to many others.