Skip to Content
[CAIDA - Center for Applied Internet Data Analysis logo]
Center for Applied Internet Data Analysis
A tuple space is a distributed shared memory where clients store and retrieve tuples (a tuple is an array of values, such as strings, numbers, booleans, nested arrays, etc.).

Marinda is a tuple space implementation in the Ruby programming language, and is used for decentralized communication and coordination which can simplify network programming in a distributed system. It provides, for example, message-oriented synchronous and asynchronous group communication, a persistent connection, and automatic marshaling of structured data.


Marinda depends on three packages:

  1. the eva Ruby gem
  2. arkutil Ruby gem
  3. amalgalite, a 3rd party Ruby gem

Installation and Required Packages

Marinda is distributed as a single installable Ruby gem file. The tar.gz contains the source code and (out-of-date) documentation. How you install Marinda depends on how you intend to use it.


For details on required packages, installation and configuration, please refer to the Installation Guide.

The Client Programming Guide provides a tutorial on writing Ruby programs that use Marinda. An Advanced Client Programming Guide is also available to cover the more advanced features and techniques available with Marinda.

Note on documentation: The programming API has changed and some details about the installation procedure may have changed. The current documentation is still useful for getting a sense of what Marinda is, but it's not yet a reliable source of information about using Marinda until it can be updated.


Marinda has a star (or hub-and-spokes) topology, with local servers connected to a central global server. Marinda consists of a single 'global' server called marinda-gs and multiple 'local' servers called marinda-ls.

The global server holds all the actual tuple data, and local servers act as the frontend or proxy to which Marinda clients (that is, user programs) connect. The local server is called 'local' because it serves all clients on the same machine (that is, the local machine) as itself. You must run a local server on each machine that will have Marinda clients. The local servers maintain a persistant TCP connection to the global server, while Marinda clients connect to the local server via a Unix-domain socket.

Related Publications

  Last Modified: Tue Oct-13-2020 22:21:59 UTC
  Page URL: