Skip to main content

Automation-first DOI minting and research/artifact publication packaging. Muh Mitha Kijiye!

Project description

Misty DOI

Muh Mitha Kijiye!

Browser-first, CLI-first, automation-first DOI minting and research/artifact publication packaging. No backend, no subscription, no vendor lock-in.

Project ILM · Copyright © 1993–2026 Abhishek Choudhary · GPL-3.0-or-later

Misty turns a single canonical metadata file into a complete, reproducible publication package — Zenodo deposit, DataCite record, codemeta.json, CITATION.cff, SHA-256 checksums, OpenTimestamps proofs — and mints a DOI on Zenodo. The same logic runs in your terminal, your CI pipeline, or fully in the browser with no server.


General-purpose

Misty mints DOIs and builds publication packages for any artifact (software, dataset, publication, poster, presentation, image, video, lesson, workflow) and any author. Start with misty init or copy an examples/ template.

The one idea

Separate metadata from mechanism. Any workflow that wants a DOI only has to:

  1. produce a canonical metadata file (misty.json),
  2. export ZENODO_TOKEN,
  3. call one command.

Everything vendor-specific (Zenodo's API shape, DataCite's schema, CFF's YAML) is derived by Misty. Upstream never learns a vendor format. See docs/AUTOMATION.md for the full integration contract.

export ZENODO_TOKEN=           # the only secret, only from the environment
misty publish -m misty.json -f artifact.zip --output result.json
DOI=$(jq -r .doi result.json)   # done

Install

pip install misty-doi              # core (requests only)
pip install "misty-doi[all]"       # + YAML, JSON-Schema, OpenTimestamps

No-install path (CI / air-gapped): scripts/zenodo-publish.sh needs only bash, curl, and python3.


CLI in 60 seconds

misty init                                   # write a metadata template
misty validate -m misty.json                 # check it
misty transform -m misty.json -o build/      # -> zenodo/datacite/codemeta/CFF
misty package  -m misty.json -f a.zip -o doi-package/   # offline package + checksums
misty publish  -m misty.json -f a.zip        # deposit + upload + publish -> DOI
misty publish  -m misty.json -f a.zip --sandbox        # rehearse on sandbox.zenodo.org
misty publish  -m misty.json -f a.zip --dry-run        # package only, no network
misty ots stamp doi-package/a.zip            # OpenTimestamps proof

Full reference: docs/CLI.md.


What gets produced

doi-package/
├── <artifact>            artifact file(s), copied in
├── <artifact>.sha256     checksum per file
├── metadata.json         canonical Misty record
├── zenodo.json           Zenodo deposit body  {"metadata": {…}}
├── datacite.json         DataCite 4.x
├── codemeta.json         schema.org SoftwareSourceCode
├── CITATION.cff          CFF 1.2.0 (valid YAML)
├── manifest.json         release + reproducibility manifest
└── README.md             human-readable summary

The package contains no secrets and is safe to commit, attach to a GitHub release, or hand to an air-gapped reviewer.


Browser mode

Open web/index.html (or the GitHub Pages deployment). Build metadata in a form, download every target file, generate copy-paste AI prompts for metadata drafting, and — optionally — publish directly to Zenodo with a token that never leaves your browser. Project ILM receives nothing.


Security model

  • The token is read only from the environment (CLI) or held only in the browser tab (web). Misty never writes it to disk and never transmits it anywhere except Zenodo.
  • No telemetry. No backend. No accounts.
  • Offline packages are deterministic and checksummed for independent verification.

See SECURITY.md.


Documentation

Doc Contents
docs/AUTOMATION.md Integration contract, env vars, exit codes, CI recipes
docs/METADATA.md Canonical schema field-by-field, mapping to every target
docs/CLI.md Every command, flag, and example

License

GPL-3.0-or-later. The tool is free software; the artifacts you publish carry whatever license you declare in your metadata.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

misty_doi-1.0.1.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

misty_doi-1.0.1-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

Details for the file misty_doi-1.0.1.tar.gz.

File metadata

  • Download URL: misty_doi-1.0.1.tar.gz
  • Upload date:
  • Size: 31.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for misty_doi-1.0.1.tar.gz
Algorithm Hash digest
SHA256 e3ebb0635232e82af22d71d65da4300a61a94e4d084cafda8fbe40145ead03d8
MD5 c96811cdad32554e1e938ac38dfb0915
BLAKE2b-256 ed484438629859fdb7e726b99fff9dfbc83a26c9e00f4c70d1be1aab6bcd2077

See more details on using hashes here.

File details

Details for the file misty_doi-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: misty_doi-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 32.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for misty_doi-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0b297ac8ef858e2471c01414bb0676b67da64a44749e038e1d65101ff87988fd
MD5 3ba25f32b967e7d613eb0f6d5434044a
BLAKE2b-256 099ca686683b908871f36e4103c4048ab97010cc061f4d425f1b2ec135d40c2d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page