Skip to content
associate metadata with your folders
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

Open Metadata is a Python library used in associating metadata to folders on your file-system.

Build Status Coverage Status PyPI version Code Health


$ pip install openmetadata

If you're having trouble, refer to the Wiki

Quick start

# Command-line interface
$ mkdir Bruce
$ cd Bruce
$ om write description --value="Turns green when angry"
$ om read description
Turns green when angry
$ om write history --value="Absorbed some gamma radiation"
$ om read history
Absorbed some gamma radiation
# Python
>>> import shutil
>>> import tempfile
>>> import openmetadata
>>> root = tempfile.mkdtemp()
>>> openmetadata.write(root, 'age', 32)
>>> openmetadata.write(root, 'height', 1.87)
>>>, 'height')
>>>, 'age')
>>> shutil.rmtree(root)

A more in-depth tutorial is available in the Wiki


Open Metadata is built by specification, refer to the Wiki for more information.


Who uses Open Metadata?

As part of developing a Digital Asset Management System here at Abstract Factory, we develop Open Metadata as an alternative to databases.

Read more about us and Pipi here

Why Open Metadata and not Technology X?

Many alternatives were, and continue to be evaluated. Head over to RFC24 for an overview.

I'm using a database for this stuff.

The relational database is proven, reliable and very efficient. It's designed for storage and retrieval of large amounts of static, uniform and small data in a very short amount of time, and it does this well.

Open Metadata was designed for situations where you favour infrequently accessed, heterogenous, sparse and large data; typically true in content creation management systems.

Think of it this way; if the data you're looking to store require fast comparisons and arbitrary queries - like when you're working with billions of bank transactions - then a relational database is probably what you want. On the other hand, if you're building software upon data that changes often, where individual sets of data might end up in the gigabyte-range and where you need control more than you need performance, then Open Metadata is probably what you want.

Open Metadata is robust, resilient and responds well to change.

What is programmable content?

In a data-oriented architecture, data controls the flow of information, not your software. Your software is designed to take instructions from data external to itself as a way to de-couple programmers from implementers.

This way, implementers can design their software by means of placing content, in a hierarchy for instance, that governs what actions the software may take in which order.

Open Metadata was designed to facilitate metadata in content management. With metadata in content, it is possible to treat each file or folder as an stateful, intelligent unit capable of making desicions; this is what I call programmable content.


Have a look at the usergroup if you'd like to interact.!forum/open-metadata

You can’t perform that action at this time.