onot generates open source software notices (OSS Notice) from SBOM documents.
It reads SPDX 2.x (JSON/YAML/Tag-Value/RDF),
CycloneDX (JSON/XML), and Excel, and produces HTML, Text,
Markdown, and PDF notices. License texts are bundled, so it runs fully offline
(air-gapped) — your SBOM never leaves the machine. Jointly developed by Kakao and
SK telecom.
User guide: English
Download (desktop app)
No setup required. Grab the latest installer from
Releases, open the app, and drop in an
SBOM file to preview and download a notice — Windows (onot-Setup-x.y.z.exe) and
macOS (.dmg).
The installers are unsigned. On first launch Windows SmartScreen may warn about an "unknown publisher" — choose More info → Run anyway. On macOS, right-click the app and choose Open to pass Gatekeeper.
The desktop app is self-contained: it bundles everything it needs, so you do not
need Python or pip. The sections below (CLI, API, source build) are for developers
and automation only.
CLI
pip install "onot[spdx,cyclonedx,excel,api]" # from PyPI; add ,pdf for PDF output
# SBOM (format auto-detected) → notices in multiple formats
onot generate -i sbom.spdx.json -f html -f markdown --output-dir ./output
# -f/--format html | text | markdown | pdf (repeatable)
# --lang en
# --config onot.yaml (company info, etc.)
# --online fetch missing license texts remotely (offline by default)
# --stdout write a single text format to stdout
onot formats # supported output formats
onot version
Input format is auto-detected by extension and content (including SPDX JSON vs.
CycloneDX JSON). PDF output needs pip install ".[pdf]" (WeasyPrint); the desktop app
uses a built-in converter.
Local API (sidecar)
onot-sidecar --port 8765
# POST /api/parse upload → parse result
# POST /api/render upload + format/lang/company → notice
# GET /api/formats, GET /healthz
Desktop app (Electron)
pnpm -C frontend install && pnpm -C frontend build
pnpm -C electron install && pnpm -C electron start # dev
pnpm -C electron run dist # package (.dmg/.exe/.AppImage)
Upload → preview → download. All processing is local; the SBOM never leaves the machine.
Development
bash scripts/gate.sh # lint + pytest (cov ≥ 90) + frontend build/test + electron sidecar test
Refresh license data with python scripts/update_license_data.py (bundles SPDX
license-list-data). Design and decision records live in docs/2.0/
(TRACEABILITY.md, DECISIONS.md).
Contributing
Contributions are welcome! See CONTRIBUTING.md for how to set up your environment, run the checks, and open a pull request. Please also read our Code of Conduct. To report a security vulnerability, follow SECURITY.md instead of opening a public issue.
Maintainers
| Name | Company | |
|---|---|---|
| Rogers | Kakao | um4825@gmail.com |
| Haksung | SK telecom | hakssung@gmail.com |
License
Metadata
Release files for onot 1.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| onot-1.1.3.tar.gz | 1.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| onot-1.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.1 MB
Release files / onot-1.1.3.tar.gz
| Download URL | onot-1.1.3.tar.gz |
|---|---|
| Size | 1.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9ae37e28d2c9a9d444d4970e7bae26155ea0263ba300c7481d95a9366b71ead6
|
|
BLAKE2b-256 checksum How to use checksums |
8fd167f98f78e5ce375c86d3500c0f3b2a9f5e2ce9f592db2db280dfda209298
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onot-1.1.3-py3-none-any.whl
| Download URL | onot-1.1.3-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
89a7dae6565bd477f8b23bb7de2e10dff142ed80145e2d6db4931da69115ad6a
|
|
BLAKE2b-256 checksum How to use checksums |
ad0f1d2da63cb877c42cfb4be98910bfaa4805cd02d7a2459dcb52ad28a0f37f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|