Skip to main content

Memium

Open in Dev Container PyPI Python Version

When you have to stop and look things up, it breaks up your flow. Adding this knowledge to long-term memory builds fluency, and being fluent at something makes it much more fun! The faster you can get from crawling to running, the more enjoyable it is.

Unfortunately, we forget most of what we read, even stuff we care about.

It turns out that if you ask questions of the texts you read, and ask those questions of yourself in the future, you learn much more! But writing questions and quizzing yourself can feel quite mechanical. What if you wrote questions as part of your notes, and then your computer could quiz you in the future? That's the purpose of Memium. It extracts questions from your notes like

Q. Why can spaced repetition result in more enjoyable learning?
A. It enables faster bootstrapping to proficiency, which is more fun!

And adding them to a spaced repetition service like Anki.

This is an implementation of Andy Matuschak's Personal Mnemonic Medium.

Use as an application

If you want to sync markdown notes to Anki, here's how to get started!

  1. In Anki, install the AnkiConnect add-on

Command line interface

  1. Install Memium in its own virtual environment with pipx,
> uv tool install memium
  1. Import your notes!
> memium --input-dir [YOUR_INPUT_DIR] --vault-name [YOUR_VAULT_NAME]

In Docker container

  1. Install Orbstack or Docker Desktop.
  2. Setup a container
$INPUT_DIR="PATH_TO_YOUR_INPUT_DIR"
VAULT_NAME="NAME_OF_YOUR_OBSIDIAN_VAULT"

docker run -i \
  --name=memium \
  -e HOST_INPUT_DIR=$INPUT_DIR \
  -v $INPUT_DIR:/input \
  --restart unless-stopped \
  ghcr.io/martinbernstorff/memium:latest \
  memium --input-dir /input --vault-name "$VAULT_NAME"

--vault-name is optional, and is the vault's name as Obsidian shows it on your host, not a path: the "Obsidian" button on each card is resolved by Obsidian on the host, so the container's /input is irrelevant to it. Omit it and the button opens whichever vault is active.

This will start a docker container which updates your deck from $INPUT_DIR. In case of updated files, it will sync the difference (create new prompts and delete deleted prompts) to Anki.

If you want to continuously sync the directory, set the --watch-seconds [UPDATE_SECONDS] argument as well.

Keeping the package update can be a bit of a chore, which can be automated with WatchTower.

Use as library

If you would like to build build your own Python application on top of the abstractions added here, you can install the library from pypi:

uv add memium

Contributing

Setting up a dev environment

  1. Install Orbstack or Docker Desktop. Make sure to complete the full install process before continuing.
  2. If not installed, install VSCode
  3. Press this link
  4. Complete the setup process

💬 Where to ask questions

Type
🚨 Bug Reports GitHub Issue Tracker
🎁 Feature Requests & Ideas GitHub Issue Tracker
👩‍💻 Usage Questions GitHub Discussions
🗯 General Discussion GitHub Discussions

Metadata

Release files for memium 1.11.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for memium 1.11.1
File Size Uploaded
memium-1.11.1.tar.gz 189.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for memium 1.11.1
File Interpreter ABI Platform
memium-1.11.1-py3-none-any.whl Python 3 none any Details

Total release size: 237.7 kB

Release files / memium-1.11.1.tar.gz

Download URL memium-1.11.1.tar.gz
Size 189.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c3cb7c7a76ff5bac71846823b20fd0debdb162197e30a8e19405a1bb30f3eb07
BLAKE2b-256 checksum
How to use checksums
492692e016fd0b167fb0d6b52954520540cf0ecb28f392b6e226e2cacec1cb02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / memium-1.11.1-py3-none-any.whl

Download URL memium-1.11.1-py3-none-any.whl
Size 48.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a1aeae8d009a4d6abd5a1d068d324216d187bca79edb2b6f08627edcf6bbb0d
BLAKE2b-256 checksum
How to use checksums
3246aa259203277dfd75fcb1377cddbdfdaf21bbf580827e22efb523095f86a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.11.1 This release

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.0

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.23

2 release files

1.3.22

2 release files

1.3.21

2 release files

1.3.20

2 release files

1.3.19

2 release files

1.3.18

2 release files

1.3.17

2 release files

1.3.16

2 release files

1.3.9

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.34.8

2 release files

0.34.7

2 release files

0.34.6

2 release files

0.34.5

2 release files

0.34.4

2 release files

0.34.3

2 release files

0.34.2

2 release files

0.34.1

2 release files

0.34.0

2 release files

0.33.1

2 release files

0.33.0

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.30.2

2 release files

0.30.1

2 release files

0.30.0

2 release files

0.29.3

2 release files

0.29.2

2 release files

0.29.1

2 release files

0.29.0

2 release files

0.28.0

2 release files

0.25.9

2 release files

0.25.8

2 release files

0.25.7

2 release files

0.25.6

2 release files

0.24.9

2 release files

0.24.8

2 release files

0.24.7

2 release files

0.24.6

2 release files

0.24.5

2 release files

0.24.4

2 release files

0.24.3

2 release files

0.24.2

2 release files

0.24.1

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.2

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.21.6

2 release files

0.21.5

2 release files

0.21.4

2 release files

0.21.2

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.7.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page