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

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.2
File Size Uploaded Provenance
kohakunode-0.2.2.tar.gz 156.0 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for kohakunode 0.2.2
File
kohakunode-0.2.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
kohakunode-0.2.2-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.2-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
kohakunode-0.2.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
kohakunode-0.2.2-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.2-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
kohakunode-0.2.2-cp313-cp313-android_24_x86_64.whl CPython 3.13 CPython 3.13 Android API level 24+ x86-64 Details
kohakunode-0.2.2-cp313-cp313-android_24_arm64_v8a.whl CPython 3.13 CPython 3.13 Android API level 24+ ARM64 v8a Details
kohakunode-0.2.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
kohakunode-0.2.2-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.2-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
kohakunode-0.2.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
kohakunode-0.2.2-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.2-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
kohakunode-0.2.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
kohakunode-0.2.2-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
kohakunode-0.2.2-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
kohakunode-0.2.2-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.2.tar.gz

Download URL kohakunode-0.2.2.tar.gz
Size 156.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7a3a77d536a8c3835c891af30807fbd2f355397a9119fb720684818cd035eb01
BLAKE2b-256 checksum
How to use checksums
a6e9e36d15d1351a8d9d2db87d5b69940aeeb410dabe103b06774cdb32a0782b
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-cp314-cp314-win_amd64.whl
Size 1.2 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
49ffe72946931a7ea2ad04557df47c08d66c6157937630395cabe02ea9864085
BLAKE2b-256 checksum
How to use checksums
2f7d74b32b4acc10ac14eaf7fdb72227b5b25876298294c6ff22677657ca2953
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
7b9f154e5c76aca2fed9f4c08b7cd58bdf8ce98ba2c6ca2d6d41999e336cd432
BLAKE2b-256 checksum
How to use checksums
60b0c487d4cc0d664d0faba83daa6f16b163e60f9236e8ffdc39a94790ef5e06
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
f1957cc5c4259dedf07cdb69e4830891573ee3fb466531e2f915d41a21250071
BLAKE2b-256 checksum
How to use checksums
82e3d36137eb9aea0633a3b4d6c28d0278223cc90e7cbacd6a48e5d4736439f9
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
b11758f59364a4ae007c4e6e2c9bb21d6b6938c4f3cee2cb697a1bd237d9b07c
BLAKE2b-256 checksum
How to use checksums
6d68f21196adb6b9b0a0835215e2e7880ea747e6b7f48425d8b121c7bed4109b
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-cp313-cp313-win_amd64.whl
Size 1.2 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
3c27a4bb54754e4287eff1a766143b090a245e9aa0b5ba78cefa96cb28f6197a
BLAKE2b-256 checksum
How to use checksums
fd9dc316e266c6fd8235dcd2958209728d0f9696cac8cb5cb894367fe2785fd0
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
9c9ca53861366771f71ae8509d7a7d30928c754b8af0a63aca19a472f61a6471
BLAKE2b-256 checksum
How to use checksums
8a110e393bd733559e95848262b5f56447711706e34f7e57368e328aaf2d8d0d
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
12725cacf6e50307ec3b84f766bd6d589ac1038067e8a7dfe51cbd9dfb7936a0
BLAKE2b-256 checksum
How to use checksums
a07bb70d656ae5863c141d0a52492e68efeb69ac03db9792d675af5650080272
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
4a2be7b2ae9fe59858b026bde725ef1a0b16af5b94ce08aa21fed6ea80cdde9d
BLAKE2b-256 checksum
How to use checksums
3617b23e4a0e0ee3fea9406b44c025ef55a24249c33a8de7aa8e781284a7b50c
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
53968b418a4573f091477cf75d0d1b59796a1cc18c7a80a747b8590b57d4c670
BLAKE2b-256 checksum
How to use checksums
3b5799cb33ecfa4ba73ac95193aa5fc34aae3cbccded4985ec363f62bf240b98
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
d5233a6a3d6f0e097cb479a593ad2f2e21771cf539f557fe17ba7586ab1330fe
BLAKE2b-256 checksum
How to use checksums
0cca60f778fad8791c5b44c558676c085a538fa883144bb70991c7a2ac82debb
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-cp312-cp312-win_amd64.whl
Size 1.2 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b4dd1524772b9614d92531b7ace3a6238d6cf40b3544055cb3509ec5393aa582
BLAKE2b-256 checksum
How to use checksums
ab2de4dd6c26a56ed2c4db9410fc0124011ede8f7fc52ddc17c7fc7e58263d80
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
ce5665a25e2fcaa730a727522968fa08dcc7f8128d3f6b6f35ba8b92bd60a701
BLAKE2b-256 checksum
How to use checksums
d96819473b9bbf0ff095f606166571c139a923999e16978031804802697b8055
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
bee6a058cee25d4a42a857b6bac1f5d76e405a74a7d689094696cf6c35aa25a4
BLAKE2b-256 checksum
How to use checksums
34ee6c0d10f35e77f5a1e7df7a89bc50fc95f518b67935c883295028ab16ade2
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
c78acaad64a673bea9a944590dcfc05b4c574fb3e46d9848c47ed31ad060a7a2
BLAKE2b-256 checksum
How to use checksums
816a43538042bed4726fef4dd38337485912363dcccce991cbdb756b86d21371
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-cp311-cp311-win_amd64.whl
Size 1.2 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ac943f61388fc2faab9cf08175d9422a19658df00ef3949f824723c700b2b644
BLAKE2b-256 checksum
How to use checksums
606c0c00af6dbb856fb296a09fef9f76ab885d58e1660993a44c38dcbcfbb161
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
148215b4addf3dd11a44b2ad07e424b8571556537513608746793c8aa01fbea8
BLAKE2b-256 checksum
How to use checksums
ab0686feec601e1d631375c8317f8d0d228f93a934f272e91d0c536cc03cff52
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
2183449a85a1558b86b6453575825ca6eeb83c32bd9e0ea093e22b789118382e
BLAKE2b-256 checksum
How to use checksums
fcc668ddb926771a20e46c3a695a0565756518fb54ca61287832a20ffe80aadc
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
39413dc115c65da98e251416e1efce87b6438cc7f42e043ed2fc708379b7e85b
BLAKE2b-256 checksum
How to use checksums
4f328fe4fcd072406605e5c684670d06bb010d3b35241cfae0416efc0a5376c7
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-cp310-cp310-win_amd64.whl
Size 1.2 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a676801131c0ec50d8314bb12770e42889ff459c544545be70be4245ef553ed3
BLAKE2b-256 checksum
How to use checksums
cdebf6c521a9b371282cbe0fb750f7f02416e514dcc0fae1f7a14f03c45d2fb7
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
2628cee85d7397719889637aa84eb959d073711a82ebd045b13f89f7fd4515e8
BLAKE2b-256 checksum
How to use checksums
18dbf99aea23fc0823eb1cc165bfe2e679e317a07706bdfb305b9870b4aacdba
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
0e87b142a569ae0ea3e5787e24cba8439386a0b173248223a99cf9c83ed22ee1
BLAKE2b-256 checksum
How to use checksums
5989ac8c0b548d844276351fcb6241bcdb19d77bea89b8560996f22d99b6073e
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 20, 2026.

Transparency log

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

Download URL kohakunode-0.2.2-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
154f10a065fa503ac0e912d6f5c376772eea562e04638dcbe2cbb29dddd97627
BLAKE2b-256 checksum
How to use checksums
2a685301a3d1372b71df1fd76c3b6ef8da286cc670a5a6176435196cfac8a17f
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 20, 2026.

Transparency log

Security for kohakunode 0.2.2

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.2.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 20, 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