openmsg.io
Guides & Reference Overview
The guides are designed as an overview to get you up and running. You will need a different guide depending on what task you want to perform (i.e. initial handshake or sending messages). The code in the guides are as an example only. They can be copy and pasted, however you may need to make one or two changes get them up and running (for exmaple you will need to change some code to connect to your database etc).

See also: Roadmap
See also: Guides
See also: References
Start Here
Things you should know before you start
Roles
There are 2 roles: a Server Node and a User.
  • The Server Node (Node) is a computer server that can send and receive messages.
  • The User has an account with the provider of a Node, and can log in to send and view messages.
The protocol is designed to work between Server Nodes, each of which can send and receive messages. Internally, Nodes have two main components:
  • The Sending Component, which handles outbound messages
  • The Receiving Component, which accepts and processes inbound messages
While it's possible to run a Node in send-only or receive-only mode, most setups include both for full communication.
Setup
To set up a Node you will need a domain name / website and a database. At the very least you will need to set up your database (to store auth_codes and ident_codes, store messages and user data etc) and set up your code (to be able to send / receive messages).

See: Setup
Account Address Fromat
Accounts use a numeric address ID, followed by an asterix, then the domain, like so: 06290345*domain.com or 123456*openmsg.io
Because the address ID (the part left of the asterix) is stored as a string, it can start with zeros. However all the characters in the ID must be numeric. For example, 000000*openmsg.io is a valid address. However abcdefg*openmsg.io is not valid.
Sending & Receiving Messages
This guide is the actual Openmsg protocol and walks you through the code you will need to send and/or receive a message.

It includes
  • The initial handshake: The initial handshakes establishes a trust between two Nodes. It proves to the receiving Node that the sending Node has permission to send messages to the User. i.e Authorization.
  • Sending a message: This guide shows how a Node should format a message so the Receiving Node can receive and authenticicate a message.
  • Receiving a message: The Guide shows how a Node should determine if the sender is authorized to send the message to the User. i.e. Authenticication.

See: Handshake
Licence
Standard MIT Licence.

Copyright 2025 Openmsg.io

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.