Skip to main content

KohakuNodeIR

A text IR for node graphs: what an editor draws, a person reads, and a machine runs, as one program.

Python 3.10+ License: Apache-2.0 PyPI version GitHub stars

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 text convert 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, each and @try / @except each 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.json files (ports, types, defaults, flags), so the checker, editors and the language server never import node code. @use "gbc" as g makes 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 @meta and @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 kohakunode depends only on lark.

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

Architecture · v2 work plan

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

Apache-2.0

Copyright 2026 Shih-Ying Yeh (KohakuBlueLeaf) and contributors.

Community

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.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kohakunode 0.2.1
File Size Uploaded Provenance
kohakunode-0.2.1.tar.gz 152.7 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for kohakunode 0.2.1
File
kohakunode-0.2.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
kohakunode-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.1-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
kohakunode-0.2.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
kohakunode-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.1-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
kohakunode-0.2.1-cp313-cp313-android_24_x86_64.whl CPython 3.13 CPython 3.13 Android API level 24+ x86-64 Details
kohakunode-0.2.1-cp313-cp313-android_24_arm64_v8a.whl CPython 3.13 CPython 3.13 Android API level 24+ ARM64 v8a Details
kohakunode-0.2.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
kohakunode-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.1-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
kohakunode-0.2.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
kohakunode-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.1-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
kohakunode-0.2.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
kohakunode-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.1-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 27.3 MB

Release files / kohakunode-0.2.1.tar.gz

Download URL kohakunode-0.2.1.tar.gz
Size 152.7 kB
Tags Source
SHA-256 checksum
How to use checksums
489b676d19c66ead3a6a3340963e9f6ebeb0510c50866f7d2068be2b496c03b4
BLAKE2b-256 checksum
How to use checksums
01335a7dd18f7fa003c91dd0351c1bd909e452bafd24df387007c42e3841e6c5
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 log

Release files / kohakunode-0.2.1-cp314-cp314-win_amd64.whl

Download URL kohakunode-0.2.1-cp314-cp314-win_amd64.whl
Size 1.2 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
e4bc8ddae6a384a6a2e06bfa71228af0145823c4489732075fed1c0f74904add
BLAKE2b-256 checksum
How to use checksums
7edf0cef0323475ed0dc1042eed1ae81dc70313e05ed408fd5d4155e05738427
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 log

Release files / kohakunode-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL kohakunode-0.2.1-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
b04d5a6a79a25dbfdb06ae2f0631b8d17894ae04effe7fa3f0b704637eba1195
BLAKE2b-256 checksum
How to use checksums
a83fbf558d43a7b9a2c4fd42b3bab967103dafc88130b205c88f6d77661e2440
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 log

Release files / kohakunode-0.2.1-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL kohakunode-0.2.1-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
6b93f34c67e7964f3ba0bc0331c7195f8580dd97f8d9d96a99c49553862b1b41
BLAKE2b-256 checksum
How to use checksums
d43e2e3bd327cab7bc84cac09b73ff706b9debc7a58d30372b707375e2ae7dc3
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 log

Release files / kohakunode-0.2.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL kohakunode-0.2.1-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
7e0f4d3bbe11f14f507432ff73a71a796d1956ad6519c89c3d1ff7de79be29dd
BLAKE2b-256 checksum
How to use checksums
abc27fb9f0531f9c0295a6b0aa7b0465315d0ff3efb950c5349920c064864de1
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 log

Release files / kohakunode-0.2.1-cp313-cp313-win_amd64.whl

Download URL kohakunode-0.2.1-cp313-cp313-win_amd64.whl
Size 1.2 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
5a6145c6c61329b16baaf9edd9c9d8ce77237c0d41808d522136f98b76603a8a
BLAKE2b-256 checksum
How to use checksums
4ca8bbd9c2f1512f8581b50f0631e1ba42d3172a74666c6db1fb08d61ea6b3f2
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 log

Release files / kohakunode-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL kohakunode-0.2.1-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
523e6ba06059da508db4b3e4cd6023774c3f9532d1c96183cb367da0e72bc2e1
BLAKE2b-256 checksum
How to use checksums
3edbb3c19c8e1797a29a15b4c58326153e118ec6248ffc35a3e37e150e333333
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 log

Release files / kohakunode-0.2.1-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL kohakunode-0.2.1-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
7a812627d231cf09dcd9c671882de36db166360d76483dd746bb5bae47b436cf
BLAKE2b-256 checksum
How to use checksums
996e48a87a21798a7c4679e1899b065f2239ee32677e24bb0821ef5996779859
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 log

Release files / kohakunode-0.2.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL kohakunode-0.2.1-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
33bbdc3227ee8939118be4b3b661519dfff57fb0d7e9ad560751af44d39110f9
BLAKE2b-256 checksum
How to use checksums
58a883839e87f7aa168ca8bb5a34aadfac60a198f10e16bf15b8e52f392caa14
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 log

Release files / kohakunode-0.2.1-cp313-cp313-android_24_x86_64.whl

Download URL kohakunode-0.2.1-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
60e5ea3ab5ec08894b14376adb52f6154aad15a8621240ac2bf6b6e79fa72856
BLAKE2b-256 checksum
How to use checksums
e50aa0e96a998b8641378e0ec7fded0e64ccc94446934b83dd6344b8cd3a06b6
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 log

Release files / kohakunode-0.2.1-cp313-cp313-android_24_arm64_v8a.whl

Download URL kohakunode-0.2.1-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
8e57f2e322150c457ac19a88d13a25bac89ef98b4a48c9323579b069eb126e8b
BLAKE2b-256 checksum
How to use checksums
f34ee30ff5cf767a1aeaeaf8a9facaf4d73baf568c66eee3c7d5aa0f664d6675
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 log

Release files / kohakunode-0.2.1-cp312-cp312-win_amd64.whl

Download URL kohakunode-0.2.1-cp312-cp312-win_amd64.whl
Size 1.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8ae9c24528195590cf9814d224e1073a4063b6e20f2e75a6422ae03a9450f33b
BLAKE2b-256 checksum
How to use checksums
1e1b1089c60b2301dc4cd8ef462c82c3b75f2bf660b8d1f750e48172fe438b79
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 log

Release files / kohakunode-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL kohakunode-0.2.1-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
1945b800c2281c89a326244fb3d8bb45511c8b4ab0e3bb657700b333824a4473
BLAKE2b-256 checksum
How to use checksums
0483d6123f9a9336e0a6788d8015baff0d4e06835d19a65fe3c1025e2cad8b08
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 log

Release files / kohakunode-0.2.1-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL kohakunode-0.2.1-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
dffac7a52b29dcf08ae4b5188e541aaa06ed302018262de45f8b138f05ba6e90
BLAKE2b-256 checksum
How to use checksums
be43d0054f7121275019d33f9962f02efa4753c75fdf5d1cb63d72197f11d9bd
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 log

Release files / kohakunode-0.2.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL kohakunode-0.2.1-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
a5c4b9fb5a8a6224da193ed95ad3543c17df991e81cb25fd6b93632cc672a980
BLAKE2b-256 checksum
How to use checksums
395ddcad3be30cfb17df73c360d5c0be0b1594120d1a9a995db6992fd36a5b74
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 log

Release files / kohakunode-0.2.1-cp311-cp311-win_amd64.whl

Download URL kohakunode-0.2.1-cp311-cp311-win_amd64.whl
Size 1.2 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5a0f1c1011ebca8763734ff10a36d9caac1380bff8b537715eab61856e707a0e
BLAKE2b-256 checksum
How to use checksums
064924b21171ee6da17d6b82c28b4c6d23ce9b8d87188550a4e7f1d446adece0
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 log

Release files / kohakunode-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL kohakunode-0.2.1-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
b6fc2a78ad4ec5ef0eb7087444d6bc38806da219f0c407ed543cd84d4fedd6cb
BLAKE2b-256 checksum
How to use checksums
3bf36e5af735434dc30a5727a149926833cd051c75d929ca123c3908d85ddb4c
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 log

Release files / kohakunode-0.2.1-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL kohakunode-0.2.1-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
0c888e56704307faa0716da7a8f758046a61faf2e5cb484cddb103991c8db0af
BLAKE2b-256 checksum
How to use checksums
4fa6066f74dae05b8e51567bbe593b31ff65121c3c8efcf091ccf9e64fc66dba
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 log

Release files / kohakunode-0.2.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL kohakunode-0.2.1-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
46b4fa10111452e306f317b619e25de2710bd76e579c853214ee2e876963ba01
BLAKE2b-256 checksum
How to use checksums
6ddd54d24207c46d10c4ae82879299982e34b5bb31284df919951dd8bc15bb46
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 log

Release files / kohakunode-0.2.1-cp310-cp310-win_amd64.whl

Download URL kohakunode-0.2.1-cp310-cp310-win_amd64.whl
Size 1.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
3ff5e4e9f97159dfaf8792dea3d45bce9847e630d797ede7f7219a4bdabb873a
BLAKE2b-256 checksum
How to use checksums
5c7197ad39a0a79c1583d6478f366ca3841441bce2c9daa5ca6abfec32b5d02a
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 log

Release files / kohakunode-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL kohakunode-0.2.1-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
157d2c57d91c78d87e933a8e21629c89b4cf0df788cef1b88373214af1fa82b1
BLAKE2b-256 checksum
How to use checksums
ccf9bdc0ad5fbbcf5fe4a3a6572c65f75a63d183f759cdc7062bb7fb7eae3355
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 log

Release files / kohakunode-0.2.1-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL kohakunode-0.2.1-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
5224c41208ee700143e547129fedb403dac8259fb4e7aa259569b1e2db462bd6
BLAKE2b-256 checksum
How to use checksums
e5d4962113f8326c72912a52b3708b0ac54f1512ea35697f216630f7d7a73bea
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 log

Release files / kohakunode-0.2.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL kohakunode-0.2.1-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
0d34783ab2682f24068d3f949fe15528b4dbd4b2d74e9aadf7e880ae8478ea06
BLAKE2b-256 checksum
How to use checksums
0f9b3684511d8ea04b8e3e12d1d797a1457c271e67084de602e04d3d445d914c
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 log

Security for kohakunode 0.2.1

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 23 files in this release have been uploaded with provenance metadata.

Select from 23 files

Attestation for kohakunode-0.2.1.tar.gz

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page