memri

Empowering you by unlocking the potential of your data

Memri is an open source project that enables you to take control of your data by pulling it in from everywhere and storing it somewhere you control. Memri comes with various front-ends with which you can use to view, edit, browse and search through your data. The indexers (rule-based or machine-learning models) automatically add labels to, and relationships between your data.

Memri consists of the following components:

Please keep in mind this is an early release. Check out our roadmap for more details on where we are going and where you can help!

Installation

Setting up your Pod

Using Docker is the fastest way to get you up and running. Warning: the Pod is not production ready yet, do not force a public IP when using your personal data.

$ git clone -b prod https://gitlab.memri.io/memri/pod.git
$ cd pod
$ docker-compose build
$ docker-compose up

Setting up a front-end

iOS

Clone the iOS repository, start XCode, select your phone (connected via USB), or the simulator as run destination, and press play.

$ git clone -b prod https://gitlab.memri.io/memri/ios-application.git

You can also request access to the weekly release of the of the iOS app.

macOS

For macOS, you can use the same repository, simply select macOS as the the run destination.

Web

Clone the browser-application repository, install and start. Note that currently you can only use the browser based version as a developer tool to edit CVU. Follow the repository to stay tuned for when full functionality is supported.

$ git clone https://gitlab.memri.io/memri/browser-application.git
$ cd browser-application
$ npm install
$ npm run start

Integrators

Now you have a front and back end, it's time to work with some data. Integrators are the small programs that either import or index your data. For example: We use importers to download your email from GMail and your photos from iCloud. Indexers label those emails and photos so you can easily find that newsletter, or photos from that trip you made last spring. Integrators are clustered in a repository per language to enable an efficient shared codebase.

To setup pyIntegrators:
$ git clone https://gitlab.memri.io/memri/pyintegrators.git
$ cd pyintegrators
$ docker build -t memri-pyintegrators . 
To setup nodeIntegrators:
$ git clone https://gitlab.memri.io/memri/nodeintegrators.git
$ cd nodeintegrators
$ docker build -t memri-nodeintegrators . 

Privacy & Security

Privacy is embedded on our organizational DNA and we'll be talking a lot more about this over the coming weeks and months. For now we wrote an article about our plans to make sure that the privacy of users is protected to the best of our abilities. We look forward to brainstorm even better ways to do that!

In order to make sure our software is never used to impede on people's privacy we have created a new license by adding a privacy clause to the Mozilla Public License (MPL). We're calling this license the Memri Privacy Preserving License (MPPL) and are looking for healthy discussions about the license.

Contributing

On the Memri GitLab you'll find repositories for all the code necessary to run Memri. We accept merge requests that follow our contribution guidelines.

All eleven of us working on Memri are active on the Memri forum to answer questions and discuss new features. Feel free to say hi.

Memri is open source under the Memri Privacy Preserving License (MPPL) which is based on the Mozilla Public License (MPL) with an added privacy clause. Join us in discussing the license and check out our thoughts behind the license here.

Docs & Tutorials

Memri comes with a built-in DSL called "Cascading Views" or CVU for short. CVU is a language that marries the best of HTML and CSS and enables non-technical users as well as the more tech savvy of us to control and configure the user interface in the various front-end apps. Check out this tutorial series to learn more.

Check out the Memri schema browser to see what data types are supported. Feel free to add more Items, properties and edges by issuing a merge requests here!

We are in the process of creating autogenerated documentation for all components; At the moment we have: