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.
The one idea
Separate metadata from mechanism. Any workflow that wants a DOI only has to:
- produce a canonical metadata file (
misty.json), - export
ZENODO_TOKEN, - 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
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 misty_doi-1.0.0.tar.gz.
File metadata
- Download URL: misty_doi-1.0.0.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9220baa44ad77f2c822687d9fed6caf74fc6f353c98fbc53f0e767c03c9d3036
|
|
| MD5 |
303403123e04bfe0cfe0e96642a94555
|
|
| BLAKE2b-256 |
9e920dda217b390e15dbe91e570c1a64f9d4f9ab7a62b34f009122d7c5b199e6
|
File details
Details for the file misty_doi-1.0.0-py3-none-any.whl.
File metadata
- Download URL: misty_doi-1.0.0-py3-none-any.whl
- Upload date:
- Size: 32.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5e155a38c0179c880f3169e254420e3947418a2769fd3bc1f0f01970d0126a3
|
|
| MD5 |
178aa91cb4a6eb563116f3eb948ca07c
|
|
| BLAKE2b-256 |
0c8045d3e830a0b52eca072739edf4e0474eb033d49ef0f86d077eec1b0dd0b5
|