Pymemri is a python client for the Memri Personal online datastore (pod). This client can be used to build plugins in python. Plugins connect and add the information to your Pod. Plugins that import your data from external services are called **Importers** (Gmail, WhatsApp, etc.). Plugins that connect new data to the existing data are called **indexers** (face recognition, spam detection, object detection, etc.). Lastly there are plugins that execute actions (sending messages, uploading files).

Gitlab pipeline status (self-hosted) Discourse status Twitter URL

This repository is built with nbdev, which means that the repo structure has a few differences compared to a standard python repo.


As a package

pip install pymemri


To install the Python package, and correctly setup nbdev for development run:

pip install -e . && nbdev_install_git_hooks

The last command configures git to automatically clean metadata from your notebooks before a commit.


To use the pymemri PodClient, we first need to have a pod running. The quickest way to do this is to install from the pod repo, and run ./examples/ from within that repo.

from import *
from pymemri.pod.client import *

class Dog(Item):
    def __init__(self, name, age, id=None, deleted=None):
        super().__init__(id=id, deleted=deleted) = name
        self.age = age

    def from_json(cls, json):
        id = json.get("id", None)
        name = json.get("name", None)
        age = json.get("age", None)
        return cls(id=id,name=name,age=age)

client = PodClient()
example_dog = Dog("max", 2)
dog = Dog("bob", 3)

Running a plugin

After installation, users can use the plugin CLI to manually run a plugin. For more information, see run_plugin.

run_plugin --pod_full_address=<pod_address> --plugin_run_id=<plugin_run_id> --owner_key=<owner_key> \

Nbdev & Jupyter Notebooks

The Python integrators are written in nbdev (video). With nbdev, it is encouraged to write code in Jupyter Notebooks. Nbdev syncs all the notebooks in /nbs with the python code in /pymemri. Tests are written side by side with the code in the notebooks, and documentation is automatically generated from the code and markdown in the notebooks and exported into the /docs folder. Check out the nbdev quickstart for an introduction, watch the video linked above, or see the nbdev documentation for a all functionalities and tutorials.