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:
- A Personal Online Datastore (Pod) written in Rust with a SQLite database providing a Graph API to store and access your data
- An iOS and macOS client written in Swift
- A browser based client that includes developer tools
- A set of Integrators to import and index your personal data, written in Python and Node.js
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!
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
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.
For macOS, you can use the same repository, simply select macOS as the the run destination.
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
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:
To setup nodeIntegrators:
$ git clone https://gitlab.memri.io/memri/pyintegrators.git $ cd pyintegrators $ docker build -t memri-pyintegrators .
$ 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.
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.
We are in the process of creating autogenerated documentation for all components; At the moment we have: