KohakuNodeIR
A text IR for node graphs: what an editor draws, a person reads, and a machine runs, as one program.
Specification · Architecture · Examples · Discord
Is this for you?
You probably want KIR if you build node-based tools (an image pipeline, an agent workflow, a captioning graph) and want the graph to be a real program: diffable text, loops and branches as explicit control flow, typed nodes from signature files, a reference interpreter that defines the result, and an executor that is free to run whatever the wires allow in parallel.
You probably don't if a plain DAG of tasks covers everything you need (a workflow scheduler already does that well), or you want a general-purpose scripting language. KIR has no expressions: every computation is a node, and nodes are written in your host language.
What KIR is
KIR describes one job as a node graph. Nodes are joined by two kinds of wire: control wires ("then", top and bottom ports) and data wires (values, side ports). The text is that graph written line by line:
(inputs)node(outputs) a node; data wires are the names
label: a namespace, entered only by a builtin
(cond)branch(`yes`, `no`) control flow is explicit: branch, switch, jump, parallel, each
@dataflow: a block ordered by data alone
@def (x: int)double(y: int): a subgraph, called like any node
A complete program (examples/tour/01_each.kir):
image = "photo"
boxes = [1, 2, 3, 4]
nodes = []
(boxes)each(box, i, `body`)
body:
(box)is_new(fresh)
(fresh)branch(`new_box`, `known_box`)
new_box:
(image, box)crop(c)
(c)entity(node)
known_box:
node = None
(nodes, node)append(nodes)
(nodes)summarize(summary)
A job means its sequential run. Statements run top to bottom, namespaces are entered only by builtins, and a name holds the value last written to it.
Parallel by default. Nodes talk only through their wires, so an executor
may run any two nodes in either order or at once unless a data wire, the
control path, or a node flag (mutates, ordered) orders them. Nothing in a
program has to say what may run in parallel, the way a CPU issues several
instructions of one thread at once while the program order still defines the
result. parallel exists, but it states intent only.
One language, many forms. A program can be shown as a graph (for editors) or as text (for people and tools). Optimization passes rewrite it into simpler programs in the same language, down to a form an interpreter runs directly. Nothing in the text marks which form it is in; every form is KIR, and every form runs.
Where it fits
| Graph is the program | Text form | Control flow | Typed nodes | Parallel by default | |
|---|---|---|---|---|---|
| Node editor save files (e.g. ComfyUI workflow JSON) | yes | JSON only | no | per editor | executor-specific |
| Visual scripting (Blueprints, Scratch) | yes | no | yes | yes | no |
| Workflow DAGs (task schedulers) | yes | code or YAML | limited | no | yes |
| KIR | yes | yes, line per node | yes, as wires | yes, signature files | yes |
KIR sits between editors and executors. An editor (the example in
apps/kir-editor, a ComfyUI import, a Python builder, or a person with a text
editor) produces KIR; a machine receives KIR plus engines that implement its
nodes and never needs to know how the KIR was made.
Key features
- Text and graph are the same program.
kir graph/kir textconvert both ways; canonical text survives the round trip byte for byte, and behaviour is always preserved. - Explicit control flow as wires.
branch,switch,jump,parallel,eachand@try/@excepteach have a node shape, so loops and branches are visible in the graph, not hidden in node code. - Optimization passes over one language.
order_dataflow,inline,expand_each,version,group,strip_meta. Any prefix of the list is a valid program with the same behaviour; a tool picks the form it wants (kir lower --passes ...,compile_source(..., passes=[...])). - Signatures and
@use. Node libraries export.kirsig.jsonfiles (ports, types, defaults, flags), so the checker, editors and the language server never import node code.@use "gbc" as gmakes a library callable. - A static checker. Undefined reads on any path, wrong port counts, type mismatches, ambiguous names, bad labels, dataflow cycles: one code per rule (checks.md).
- Program hashes. A semantic hash (ignores
@metaand@hint) to key caches and reproducibility, and a full hash that also covers hints. - Hints that never change results.
@hint lane="vlm"tells a scheduler something; deleting every hint leaves every result unchanged. - A reference interpreter with a call hook, so a machine can replay its recorded node results and check that it computed what the program means.
- Editing support. A tree-sitter grammar, a VS Code extension, and a
language server (
kir-lsp: diagnostics, hover, completion, go-to-definition, formatting). - ComfyUI import / export. Both the UI workflow and the API prompt.
- A Rust core (PyO3 module and WASM build) that reproduces the Python reference byte for byte on the shared golden corpus.
Quick start
Python 3.10 or newer. At run time
kohakunodedepends only onlark.
1. Install
pip install kohakunode # the Python reference, the Rust core (kohakunode._rs), `kir`
pip install "kohakunode[lsp]" # plus the language server `kir-lsp`
From source (builds the Rust core, so a Rust toolchain is needed):
git clone https://github.com/KohakuBlueleaf/KohakuNodeIR.git
cd KohakuNodeIR
pip install -e ".[dev]" # pytest, ruff, black, pygls, maturin
2. Write nodes
# my_nodes.py
from kohakunode import NodeLibrary
lib = NodeLibrary("my_nodes")
@lib.node(outputs=["sum"])
def add(a: int, b: int) -> int:
return a + b
@lib.node(outputs=["graph"], mutates=["graph"]) # changes its input in place
def attach(graph: list, node: str) -> list:
graph.append(node)
return graph
@lib.node(ordered=True) # touches the outside world
def log(message: str) -> None:
print(message)
A node may depend only on its inputs and affect the job only through its outputs; the two flags declare the exceptions once, in the registry (writing nodes).
3. Export signatures for tools that should not import your code
kir sig export my_nodes -o sigs/ # writes sigs/my_nodes.kirsig.json
Programs then say @use "my_nodes"; the tools find the file on --sig-path
or KIR_SIG_PATH.
4. Use the toolchain
kir check prog.kir --lib my_nodes # diagnostics with codes (checks.md)
kir fmt prog.kir -w # canonical text, in place
kir lower prog.kir --lib my_nodes # after every pass
kir lower prog.kir --passes order_dataflow,inline --hash
kir graph prog.kir -o prog.kirgraph # text -> graph view (--data variables: name -> node -> name)
kir text prog.kirgraph # graph view -> canonical text (--no-meta to drop ids/positions)
kir run prog.kir --lib my_nodes # the reference run; prints final values
kir-lsp # language server on stdio
--lib imports a Python module that defines a NodeLibrary; --sig-path
adds directories of signature files.
Core mental model
Two kinds of wire
control in
|
+--------v--------+
a -->| |--> sum data wires: values, by name
b -->| (a, b)add |
+--------+--------+
|
control out control wires: "then"
A call node has control ports on top and bottom and data ports on its sides.
branch has one control output per label, merge joins control paths (a
labelled merge is a loop entry), each has body / done outputs and a
next input its body returns to. The full list of node kinds and ports is in
graph.md.
Namespaces and continuation
(is_big)branch(`big`, `small`)
big:
(x)shrink(x)
small:
(x)grow(x)
(x)log() # both paths continue here, after the namespace definitions
A namespace is skipped when reached in sequence and entered only by a builtin.
When its body ends, execution continues after the namespace's definition; an
each body returns to its each; parallel arms run one after another;
@dataflow: and @try bodies continue after their statement. jump is the
only way back, so a loop is a namespace entered by a jump from before it and
re-entered by a jump from inside it.
The pass pipeline
.kirgraph (editor) <-> canonical .kir text
|
check (E/W codes)
|
order_dataflow -> inline -> expand_each -> version -> group -> strip_meta
(every intermediate program is valid KIR and runs)
|
+------------------+------------------+
| |
reference interpreter machines (parallel,
(sequential, defines the result) as if sequential)
After every pass, each @dataflow: block is a straight run whose dependence
graph a machine computes once: every write has its own version x__n, and a
name written on several paths gets a home version x__0. Control statements
between blocks choose what runs next; a job's state is its position plus its
values (passes.md).
Toolchain
| Piece | Where | What |
|---|---|---|
| Python reference | src/kohakunode/ |
parser, writer, checker, passes, hashes, graph view, interpreter, CLI, ComfyUI, language server; the ground truth |
| Rust core | rust/ |
the same parse, write, check, passes, hashes and graph conversion; shipped in the wheel as kohakunode._rs, plus a WASM build |
| tree-sitter grammar | editors/tree-sitter-kir/ |
highlighting and structure for any tree-sitter editor |
| VS Code extension | editors/vscode/ |
highlighting, snippets, folding, and a client for kir-lsp |
| Example node editor | apps/kir-editor/ |
Vue 3 + Vue Flow + elkjs + CodeMirror: nodes, flowchart, sequence, blocks and text views of one program |
Rust core
maturin develop --release # from the repo root: kohakunode with kohakunode._rs, into the active venv
python rust/tests/parity/parity.py # the Rust core against the Python reference
cd rust && cargo test # unit tests + golden corpus, byte for byte
# WASM for browsers
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.129 # must match wasm-bindgen in Cargo.lock
cargo build --release --target wasm32-unknown-unknown --features wasm
wasm-bindgen --target web --out-dir pkg target/wasm32-unknown-unknown/release/kohakunode_rs.wasm
kohakunode._rs takes and returns text: format, parse_to_json, check,
lower(passes=None), hashes, to_graph, from_graph, std_signatures;
signatures come as .kirsig.json texts and, for check / lower / hashes /
to_graph, through base= and sig_path= the way @use resolves them. The
WASM build exposes the same functions to browsers (signature texts only). \N{...} string escapes use the default
unicode-names feature; --no-default-features --features wasm builds a
smaller WASM file without it.
VS Code
pip install -e ".[lsp]"
cd editors/vscode && npm install
ln -s "$(pwd)" ~/.vscode/extensions/kir-language
Settings kir.server.path, kir.server.args and kir.sigPath choose the
server command and the signature directories (editors/vscode).
Example node editor
pip install fastapi uvicorn
cd apps/kir-editor/backend && python -m uvicorn kir_editor.app:app --port 48888
cd apps/kir-editor/frontend && npm install && npm run dev # http://localhost:5173
Five views of one program: nodes (ComfyUI / Blender / UE style, with data as variables or wires and control as exec wires or frames), a classic ROBO Pro flowchart, an EV3-style sequence, Scratch blocks, and text; any two side by side. A palette built from signature files, an inspector, undo / redo, and Problems / Run / Lowered panels with per-pass toggles (apps/kir-editor).
Python API
from kohakunode import (
parse, write, # text <-> AST; parse(write(p)) == p
check, # diagnostics
compile_source, compile_file, # env + check + passes + hashes in one call
Interpreter, # the sequential reference run, with a call hook
NodeLibrary, # the node registry
)
from kohakunode.graph import to_graph, from_graph # graph view
from kohakunode.comfyui import from_comfyui, to_api # ComfyUI
from kohakunode.lower import PASSES, run_passes # individual passes
compiled = compile_source(text, [lib], passes=["order_dataflow", "expand_each"])
compiled.program # the checked program as written
compiled.lowered # after the chosen passes (all of them when passes=None)
compiled.diagnostics # warnings; errors raise KirCheckError
compiled.semantic_hash, compiled.full_hash
graph = to_graph(compiled.program, compiled.env) # .kirgraph dict
text = write(from_graph(graph, with_meta=False)) # canonical text
def replay(name, inputs, call): # a machine's recorded results
return recorded[(name, key(inputs))]
Interpreter(compiled.lowered, compiled.env, hook=replay).run()
Codebase map
src/kohakunode/
syntax/ kir.lark grammar, parser, AST, canonical writer
sig/ NodeLibrary, .kirsig.json files, @use resolution, types, kir.std
flow/ control-flow graph, reaching definitions, dataflow ordering
check/ every rule of docs/spec/checks.md
lower/ the optimization passes and program hashes
run/ the sequential reference interpreter
graph/ text <-> graph view
comfyui/ ComfyUI workflow / API prompt import and export
lsp/ the language server (kir-lsp)
cli/ the kir command
compiler.py compile_source / compile_program / compile_file
rust/ the Rust core, PyO3 and WASM bindings
editors/ tree-sitter-kir, vscode
apps/ kir-editor (example node editor)
examples/ basics (v1 programs), tour (one file per feature), gbc, comfyui
tests/ unit tests, the v1 reference corpus, the golden corpus
docs/ spec/, guides/, architecture.md, plan/
Documentation map
Specification
Overview · Language · Semantics · Signatures and @use · Graph view · Optimization passes · Checks
Guides
Writing nodes · Running KIR on a machine · Examples
Internals
Testing
pytest # the Python reference: unit tests, golden corpus, v1 parity, generated programs
cd rust && cargo test # the Rust core against the same golden corpus
cd apps/kir-editor/frontend && npm run test:e2e # one browser smoke run of the example editor
The golden corpus (tests/corpus/golden) holds the canonical text, the fully
optimized text, the graph view and the hashes of every case; the Python
reference and the Rust core must both reproduce it byte for byte. The v1
corpus (tests/corpus/v1) records what the v1 implementation printed for
every v1 program; v2 reproduces it except for listed, deliberate differences.
Releases
kohakunode is one wheel: the Python reference plus the Rust core as the
extension module kohakunode._rs. The version is rust/Cargo.toml's
(pyproject.toml reads it dynamically). Publishing a GitHub release, or
pushing a v* tag, runs release.yml: wheels for CPython 3.10–3.14 on Linux
x86_64 / aarch64 (manylinux 2_28), Windows x64 and macOS arm64, Android wheels
(arm64, x86_64; Python 3.13) and the sdist, all uploaded to PyPI and to the
GitHub release.
Coming from v1
v2 keeps v1's model (sequential meaning, namespaces entered by builtins,
jump loops, @dataflow:, @def) and every program v1 parsed still parses. New:
@use, each, @try / @except err, typed @def parameters and outputs,
@hint, node flags, the graph view with control ports, and optimization
passes in place of fixed levels. The v1 implementation is in the git history
(commit 1abda17).
License
Copyright 2026 Shih-Ying Yeh (KohakuBlueLeaf) and contributors.
Community
- Discord: https://discord.gg/xWYrkyvJ2s
- Issues: https://github.com/KohakuBlueleaf/KohakuNodeIR/issues
FAQ
Does a program have to say what runs in parallel?
No. A job means its sequential run, and an executor may overlap anything the
wires, the control path and node flags allow. parallel states intent only.
Why is there no expression syntax?
Every computation is a node, so the graph and the text stay the same thing.
kir.std provides the small pure nodes most programs need (add, less,
len, append, to_str, ...).
What does an executor need besides the text? Implementations of the nodes the program calls. Signature files describe them to tools; executors map node names to implementations themselves.
How do I know a machine computed the right thing? Run sample jobs on the machine and on the reference interpreter with a call hook that replays the machine's node results, then compare final values (machines.md).
Which pass output should a machine run?
Its choice. The fully optimized program is the simplest to schedule; a machine
that schedules each itself can stop before expand_each. Every form means
the same thing.
Metadata
Release files for kohakunode 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 27.1 MB
Release files / kohakunode-0.2.0-cp314-cp314-win_amd64.whl
| Download URL | kohakunode-0.2.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d80a311a4eac109ce732dcf57939945b7fe2a87ca09f14e1bd19bb1178461753
|
|
BLAKE2b-256 checksum How to use checksums |
9a503f0677fb435de9e5c25217db88cb4b62ff59a6d57fd640215b5bddc3e423
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | kohakunode-0.2.0-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
88d3884f401fc6c434e1b1cf9fa8f4bf23f5ef59afd828963d7a7554542bd0da
|
|
BLAKE2b-256 checksum How to use checksums |
6371220e96c89aa952fcbf677786dd71ec36f262ceee2431e18c40186879c2c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | kohakunode-0.2.0-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fc707ff01ac195e8d4f32ab96063c5dbeb32484fe6efa4ce2dd8b2c6ecc7b7b9
|
|
BLAKE2b-256 checksum How to use checksums |
df01b782c6c452152201103fb2c475f4651fafb139068b71b363866f05038a15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | kohakunode-0.2.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
de72f68fcd38e3e2a72bdf30a13a138044296e76dc964c41008c79cfd0183ea7
|
|
BLAKE2b-256 checksum How to use checksums |
38508f07ecf3d7bb4c7349517ea2a9052398ffb37869c7f74b68231b1344df3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp313-cp313-win_amd64.whl
| Download URL | kohakunode-0.2.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
39193699e49dba7c6023de2a8293bed48838df468f773a4464af836526be8310
|
|
BLAKE2b-256 checksum How to use checksums |
1fc9d0e121f3c8fe5a7afcb31a3dac6e620ba75eefb871c63c035f633726fb53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | kohakunode-0.2.0-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1636e0731b9dc7e8282a2aa0a56cefbf6e8f02fe1b18f7112fefff9d2989c8ed
|
|
BLAKE2b-256 checksum How to use checksums |
eb453b7b9885cf35ff096dd1619fe90de64737056718b92d2dfd8b4eebb91830
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | kohakunode-0.2.0-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
7087568fa2ff83319f1b4e0360ccc54f5fdbe436065580357fab735db1cf781d
|
|
BLAKE2b-256 checksum How to use checksums |
cca76330082738ea4f71b1ce83ecf5721ae5cd9877b066c7c0a249ed200413bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | kohakunode-0.2.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a46de48bfe0e283fe76941f8b679b1be6312f97493d5e696c002c64edf75044c
|
|
BLAKE2b-256 checksum How to use checksums |
fdd7983871593dbe2977623b2c127e111592748cc04d747b9c9bcdc5f50bfb6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp313-cp313-android_24_x86_64.whl
| Download URL | kohakunode-0.2.0-cp313-cp313-android_24_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Android API level 24+ x86-64 CPython 3.13 |
|
SHA-256 checksum How to use checksums |
75e9065b331c76a0e69c89de4deaf17bace668f469ee7e5fea128254be7e72c1
|
|
BLAKE2b-256 checksum How to use checksums |
14734c3e47503f3e57f2001c9403910d928d4bfdcb898b9d8c019246494ce171
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp313-cp313-android_24_arm64_v8a.whl
| Download URL | kohakunode-0.2.0-cp313-cp313-android_24_arm64_v8a.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Android API level 24+ ARM64 v8a CPython 3.13 |
|
SHA-256 checksum How to use checksums |
b481bd0233b94d4eeec9c45b5252275ee369050143afdef152874dfed1370b26
|
|
BLAKE2b-256 checksum How to use checksums |
7c76f24aae9cda2da0ec09fdf8daffa77dfbb5b7781f1f9beb8b43917060c0a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp312-cp312-win_amd64.whl
| Download URL | kohakunode-0.2.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cb784693a75261243ea99dddf5a1892b0eeb1bc230e38e2845ef024196d0845e
|
|
BLAKE2b-256 checksum How to use checksums |
577cbc856de080c8b7adf02e991892286413c0663f2cc39494bbf9b4c0bef811
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | kohakunode-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
142583bb30a301b21bd123728faa55fc5421d28d70519ce136ab45932c09861b
|
|
BLAKE2b-256 checksum How to use checksums |
d3091f023c3b08948b55ebbe5e3a3c525fafe30717f627d17289d59bfba6eff0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | kohakunode-0.2.0-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
3ccee3c06cd25d5cc82791ca0011cb31113a4a3ca9e7cd3b61bb9ee2c8e1cfd7
|
|
BLAKE2b-256 checksum How to use checksums |
d0b818e4152746692c925bd84ae8e333551b54b27a8ff2bf1a6f5c03166365db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | kohakunode-0.2.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a6d2db46203efff726d131ffc73e9a241343afaf024c0acafd29f517249cad0b
|
|
BLAKE2b-256 checksum How to use checksums |
504f7cca561503aae794bc1e45c6720f1d3b328ac3329b733b0d9e9ee1964309
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp311-cp311-win_amd64.whl
| Download URL | kohakunode-0.2.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
caecf007131d91826cfc6f4f2f553363619a84f829a3a82b9b17dd7ecff281d7
|
|
BLAKE2b-256 checksum How to use checksums |
5a68d812f439ca2389fe3e7bac7f38dd067ec7f78b748dcc96b93e098307b3f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | kohakunode-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
8bd144f4bf5dba6b652a9ec874cb75fc9a4c7347e4e46aa91227a7a68d63e080
|
|
BLAKE2b-256 checksum How to use checksums |
561a463980cfda3b0be7baa561ec3c4578b98ee86b9c7c19e0c38bd2e6643704
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | kohakunode-0.2.0-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
bd4f9e0c2ba14a92a5824bcb87de778f6fd036a2faa3f01adefd7dd22e24f037
|
|
BLAKE2b-256 checksum How to use checksums |
bd9a4ed339a47609af94154e3ebc55b66d2bb3d70216336b56b52ee8f6cfe5cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | kohakunode-0.2.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3bd30d409517e3a23426c7863477bcd1ffd2abc78758c52b75d40313c66cc1e5
|
|
BLAKE2b-256 checksum How to use checksums |
7afecaa9e1addbd13b36eb338da6d1b79c8159d0e40c550fc3e8ce1d4cf2f5af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp310-cp310-win_amd64.whl
| Download URL | kohakunode-0.2.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
24bbe1c816ba45a484dc5de554ff38d55d78c26d3b8c4236389b41de8df0a361
|
|
BLAKE2b-256 checksum How to use checksums |
b8bd9c7c711ff4434f503c72f7e276b5b734746dfeb42aefd17659316fce77dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | kohakunode-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
abbafcda9ff8fc1e11aa7a8f61850371f7e2cb04291185bd423295c80498a2b4
|
|
BLAKE2b-256 checksum How to use checksums |
6e517d6f8c28036492b90caf7db779d9a3d9e73be6d9c3dafadc48bdec204aba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp310-cp310-manylinux_2_28_aarch64.whl
| Download URL | kohakunode-0.2.0-cp310-cp310-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
0b742f491bd4e4b21cb61004583aadb8cb4d7fbcdd0e39be4c3fb67972f57a18
|
|
BLAKE2b-256 checksum How to use checksums |
8bedafe1e6d0238c9c0daa71dfe35ac05093f4d992f2a97aed90569dda2588b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / kohakunode-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | kohakunode-0.2.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
30a7a8c7b11f77d29944c18ce59bede907c2d2115471be85998cd3a8ed32ed8f
|
|
BLAKE2b-256 checksum How to use checksums |
f578180d1c31fbf96f715278051546ce8341cb544c09efe395731e31556c0921
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for kohakunode 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 22 files in this release have been uploaded with provenance metadata.
Attestation for kohakunode-0.2.0-cp314-cp314-win_amd64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.