Hi! and welcome to AMP!

AMP (Asynchronous Messaging Protocol) is a flexible Remoting protocol for sending multiple asynchronous request/response pairs over the same connection. Requests and responses are both collections of unordered key/value pairs.

AMP enables a rich set of Internet applications, ranging from traditional client-server APIs, to custom and efficient RPC protocols, to distributed peer-to-peer messaging topologies - or you may implement more advanced patterns such as a “spoke” topology where a central hub receives and routes messages to and from connected peers.

Once connected, the AMP Conversation is symmetric, allowing either client or server to initiate an asynchronous request, provided that the other side of the connection implements a handler for it.

For values, AMP defines a number of Standard Data Types, while keys are always strings.

AMP was originally developed by Glyph Lefkowitz and appeared in Twisted, a Python networking framework - however AMP is not Python or Twisted-specific.

Implementation are available for a wide variety of languages including Python 2.x/3.x, C/C++, C#, Java, PHP and many more! See the Implementations Page for details.