The Hierarchical Product Post Office, developed for the Simons Observatory.
Project description
HIPPO
The HIerarchical Product Post Office
Hippo is a piece of software aimed at making FAIR (Findable, Attributable, Interoperable, and Reuseable) data access easier. Through the use of the very flexible MongoDB for true metadata storage and MinIO as a data storage backend, hippo provides metadata-driven access to reusable products.
Installing
As well as running the server in a docker container, the python package can be installed
as pyhippo:
uv pip install pyhippo
This gives you access to the henry command suite.
Use-Cases
Hippo is under development for the Advanced Simons Observatory, an NSF-funded telescope project that aims to study, among other things, the Cosmic Microwave Background. Throughout the project, many pieces of data will be produced: things like images, arrays, small databases, etc. Storing and sharing these within the collaboration, and to the public, is a huge challenge; it's easy enough to put them all in a big folder somewhere, but without associated metadata you will never be able to find what you're looking for.
Enter hippo! Hippo allows you to upload data products and access them both manually and programatically through a metadata-driven interaction.
Examples
There are a number of example cases in the example directory. To lauch the development
server, you should run
henry dev run
This creates an empty instance with mock authentication (see: no
authentication). You can use the upload scripts in examples/{name} that upload
data from the NASA LAMBDA
instance.
Products can then be viewed through the web interface (served at /web from the
server root), or through the use of the henry command-line tool.
Containerized Version
There is a containerized version of the application available in the repository. You can
build the container with docker build .. By default, the server runs on port 44776
(HIPPO on a T9 keyboard).
To actually run HIPPO, you will need a running instance of MongoDB and an instance of an S3-compaitible storage server. HIPPO was built to be ran with MinIO. MinIO will actually provide file storage for your server, with MongoDB handling the metadata.
There are a number of important configuration variables:
MINIO_URL: hostname of the MINIO server as seen by the server.MINIO_ACCESS: the MINIO access token (username).MINIO_SECRET: the MINIO access secret (password).MINIO_PRESIGN_URL: hostname of the MINIO server as seen by external clients.MONGO_URI: the full URI for the mongo instance including password.TITLE: the title of the HIPPO instance.DESCRIPTION: the description of the HIPPO instance.ADD_CORS: boolean, whether to allow unlimited CORS access. True by default (dev)DEBUG: boolean, whether to run in debug mode. True by default (dev)WEB: boolean, whether to serve the web UI.WEB_ROOT: where the web frontend is served from (defaults to/web)AUTH_SYSTEM: should besoauthin production. There are then the following soauth variables (see the soauth docs):SOAUTH_SERVICE_URL: the URL from which soauth is served from.SOAUTH_APP_ID: app IDSOAUTH_PUBLIC_KEY: public key for decrypting tokensSOAUTH_BASE_URL: base URLSOAUTH_CLIENT_SECRET: the client secret
Secrets can be loaded from /run/secrets automatically, so long as they have
the same file name as their environment variable.
For soauth integration, your callback URL needs to be $URL/web/callback.
Deployment Guide
To deploy, you need to set up a MongoDB server and a Minio server. This will involve:
- Creating a MongoDB password, saved as a secret.
- Creating a MongoDB URI with this password, saved as a secret.
- Creating a Minio access token, saved as a secret.
- Creating a WEB_JWT_SECRET, saved as a secret.
- Creating the GitHub client ID and secret, saved as a secret.
Then, you can deploy your MongoDB and Minio servers. Do not forget to set up storage for their backends to ensure persistence across restarts.
Note that we provide a docker compose file in the main repository as an example. This should show you how the containers interact.
With the two backends set up, you can deploy the container. You can build it yourself, or use the hosted version.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyhippo-0.2.3.tar.gz.
File metadata
- Download URL: pyhippo-0.2.3.tar.gz
- Upload date:
- Size: 272.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15902b4d9ff51660933938b28b89d3dddfaf19e6d13aa107de72afebf3a11628
|
|
| MD5 |
c49fd1f63fc4976b19724e48003e1578
|
|
| BLAKE2b-256 |
cca7b419c7ceaf239515e247f489f1c3156451e4ba0c1506b835b358e77701b5
|
Provenance
The following attestation bundles were made for pyhippo-0.2.3.tar.gz:
Publisher:
pypi.yml on simonsobs/hippo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyhippo-0.2.3.tar.gz -
Subject digest:
15902b4d9ff51660933938b28b89d3dddfaf19e6d13aa107de72afebf3a11628 - Sigstore transparency entry: 652292143
- Sigstore integration time:
-
Permalink:
simonsobs/hippo@caec0ee76975a16784053b06de9d2da223b4cbe0 -
Branch / Tag:
refs/tags/0.2.3 - Owner: https://github.com/simonsobs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@caec0ee76975a16784053b06de9d2da223b4cbe0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyhippo-0.2.3-py3-none-any.whl.
File metadata
- Download URL: pyhippo-0.2.3-py3-none-any.whl
- Upload date:
- Size: 291.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea4cc46db61d2408b9c236b17eca59f21253ed013313537da36558cf714c6b1f
|
|
| MD5 |
d30696593d9d43e5e8f1fc7ef23b604c
|
|
| BLAKE2b-256 |
5c172cf98fc2fbab641f95136c7fcc514730c3e96e9ff247f08348fcc4164b3f
|
Provenance
The following attestation bundles were made for pyhippo-0.2.3-py3-none-any.whl:
Publisher:
pypi.yml on simonsobs/hippo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyhippo-0.2.3-py3-none-any.whl -
Subject digest:
ea4cc46db61d2408b9c236b17eca59f21253ed013313537da36558cf714c6b1f - Sigstore transparency entry: 652292159
- Sigstore integration time:
-
Permalink:
simonsobs/hippo@caec0ee76975a16784053b06de9d2da223b4cbe0 -
Branch / Tag:
refs/tags/0.2.3 - Owner: https://github.com/simonsobs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@caec0ee76975a16784053b06de9d2da223b4cbe0 -
Trigger Event:
push
-
Statement type: