Home
Strict DOIP v2.0 implementation for FAIR Digital Objects (FDOs), backed by lakeFS storage and an FDO façade. This site covers how to run the server, call it from Python or the CLI, configure TLS, and build the Docker image.
Why DOIP and FDO?
- FAIR Digital Objects (FDOs) provide persistent identifiers plus structured metadata and component links, improving interoperability and long-term access.
- Digital Object Interface Protocol (DOIP) standardizes how to fetch and operate on those objects over the network using binary envelopes and operation codes.
- This project supplies both sides—server and client—so MaRDI services can publish and consume FDO content (bitstreams, derived components, workflow results) consistently.
Capabilities at a glance
- Binary DOIP listener on TCP (
3567by default) with automatic TLS whencerts/server.crtandcerts/server.keyexist. - Compatibility JSON-segment listener on
port + 1(3568by default) for doipy-style clients. - Operations:
hello,retrieve,invoke, plus alist_opshelper. - lakeFS-backed component retrieval and workflow-driven derived components.
Quick start
1) Start the server (plaintext example):
PYTHONPATH=. python -m doip_server.main --port 3567
2) Retrieve an object with the CLI:
PYTHONPATH=. python -m client_cli.main \
--host 127.0.0.1 --port 3567 --no-tls \
--action retrieve --object-id Q6190920 --output .
The CLI issues hello then retrieve, prints returned metadata, and saves the first component using the server-provided filename when available.
See Configuration to point the server at your lakeFS and FDO endpoints, and Docker for containerized runs.