Memri: An overview

The Memri ecosystem consists of many moving parts. This article aims to describe what they are. This can be a starting point if you are looking to understand what memri is, or when you want to build something on top of Memri.

Introduction

This post won't go into the full mission of Memri, but some minimal background is necessary to understand where we come from. With Memri, we want to empower people by unlocking the potential of their data. We think that our data lives in silos, that make interconnecting data impossible. It moves the control over that data from individuals to big companies and privacy barely exists. We want to create a system, where people have control over their data, interconnection empowers the users, and privacy and trust are self-evident. To do so we are basically starting from scratch, combining new and old technologies to make this vision a reality. This post will describe what the biggest moving parts of this system are.

Pod

At memri, your personal data lives inside a Pod. The pod is your personal database that runs on a server, in the cloud or in your home, fully under your control and safely encrypted. Many traditional databases contain a small set of types, (E.g. everything related to emails), for a large number of users. The pod contains a large set of types, namely all your data (Email, photo's, messages, contacts, browser history, notes, phone calls, etc.) for one user: you. The pod contains a graph that contains connections between your data and uses a schema to describe how elements in this graph are structured. Conceptually the pod does two things: it stores your data and makes it accessible. The pod provides API's that gives you access to your data from any of your devices.

Schema

The pod uses the schema to define some structures in the graph, it defines three such structures:
  • types of items: what kind of properties does a person/email/photo have
  • relations between items: what are the relations between the items. (E.g. "John is my brother")
  • Relations between types: A blog is also a website

Client

To access your data as a user you can use a Memri client. A client can be an app on your phone or computer, or a web browser. To access your data, your client needs to have the right keys to decrypt the data that lives in your pod. Memri's clients aim to allow for all the things you are used to do with your data, and much more, in a privacy preserving manner. Apart from a beautiful design, the memri clients are different in many ways, but the most important ones are: control and interconnection. Because your data is interconnected, it allows you to do things with your data that would be impossible otherwise. You can merge your facebook, apple and email address books into one. You can show emails, whatsapp messages and SMS messages in one inbox. You can browse through previous experience by just clicking through the data. The second big difference is control. With Memri you can specify the complete interface through which you see your data. This puts you in control over what kind of data you want to see, when you to see it, and how you interact with it, all with good defaults that allow you to focus on the things that matter. Currently, we have have native clients for iOS and macOS, and a browser client is under development.

Downloaders

To get data from external sources into your pod, you can use Downloaders. Downloaders are plugins of the pod that import external data into your pod by calling them from the client. To get this data, you often need to do some kind of authentication. Some services use OAuth for that, which works great. Other services only allow you to directly call the service API with your username and password. You can choose to store your credentials in the Pod, which is encrypted and under your control, you can also choose to not store them.

Indexers

Another plugin that can be ran on the pod are Indexers, which are models that can enrich and connect your data. We are actively building many Indexers ourselves, and we are aiming for a community that actively builds indexers with us. There are many interesting use cases for indexers: your messages could be labeled to be work related or private. Your digital receipts could be categorized. Your email could be separated in a folder structure you like (work, advertisements, newsletters, etc.). You could cluster your browsing history when you are looking for that holiday home so you can find it back easily.