Lock-free shared-memory messaging library for inter-process communication.
Project description
Kickmsg
Lock-free shared-memory messaging library for inter-process communication.
Kickmsg provides MPMC publish/subscribe over shared memory with zero-copy receive, per-subscriber ring isolation, and crash resilience — all without locks or kernel-mediated synchronization on the hot path.
Features
- Lock-free: all data paths use atomic CAS (Treiber stack, MPSC rings)
- Zero-copy receive:
SampleViewpins slots via refcount, avoiding memcpy for large payloads - Per-subscriber isolation: a slow subscriber only overflows its own ring — fast subscribers are unaffected
- Crash resilient: publisher crashes never deadlock the channel; bounded slot leaks are recoverable via GC
- Topic-centric naming: subscribers connect by topic name, not publisher identity
- C++17, no external dependencies beyond POSIX / Win32
Channel Patterns
| Pattern | API | SHM name |
|---|---|---|
| PubSub (1-to-N) | advertise / subscribe |
/{prefix}_{topic} |
| Broadcast (N-to-N) | join_broadcast |
/{prefix}_broadcast_{channel} |
| Mailbox (N-to-1) | create_mailbox / open_mailbox |
/{prefix}_{owner}_mbx_{tag} |
Installation
For Python (also installs the kickmsg CLI):
pip install kickmsg
Pre-built wheels are published for CPython 3.10–3.12 on Linux x86_64 / aarch64
(manylinux_2_28) and macOS 11+ (universal2). On any other platform pip will
fall back to a source build, which needs the build prerequisites.
For C++ only, see Building or use the Conan recipe in
conan/all.
Quick Start
#include <kickmsg/Publisher.h>
#include <kickmsg/Subscriber.h>
// Create a channel
kickmsg::channel::Config cfg;
cfg.max_subscribers = 4;
cfg.sub_ring_capacity = 64;
cfg.pool_size = 256;
cfg.max_payload_size = 4096;
auto region = kickmsg::SharedRegion::create(
"/my_topic", kickmsg::channel::PubSub, cfg);
// Subscribe, then publish
kickmsg::Subscriber sub(region);
kickmsg::Publisher pub(region);
uint32_t value = 42;
pub.send(&value, sizeof(value));
auto sample = sub.try_receive();
// sample->data(), sample->len(), sample->ring_pos()
Node API (topic-centric)
#include <kickmsg/Node.h>
kickmsg::Node pub_node("sensor", "myapp");
auto pub = pub_node.advertise("imu");
// Any node can subscribe by topic name alone
kickmsg::Node sub_node("logger", "myapp");
auto sub = sub_node.subscribe("imu");
Zero-copy receive
auto view = sub.try_receive_view();
// view->data() points directly into shared memory
// slot is pinned until view is destroyed
Blocking receive
auto sample = sub.receive(100ms);
// blocks via futex until data arrives or timeout
Optional payload schema descriptor
// Bake a schema descriptor into the region at creation.
kickmsg::SchemaInfo info{};
info.identity = my_identity_hash(); // user-defined bytes
info.layout = my_layout_hash(); // user-defined bytes
std::snprintf(info.name, sizeof(info.name), "my/Pose");
info.version = 2;
kickmsg::channel::Config cfg;
cfg.schema = info;
auto region = kickmsg::SharedRegion::create("/pose_topic", kickmsg::channel::PubSub, cfg);
// Any process can read it back and decide what to do on mismatch.
auto schema = region.schema();
if (schema and schema->version != 2) { /* user-defined policy */ }
The library stores the descriptor in the header but never interprets it — users choose how to compute identity/layout fingerprints and how to react to mismatches.
Health diagnostics and crash recovery
// Periodic health check (read-only, safe under live traffic)
auto report = region.diagnose();
// report.locked_entries, report.retired_rings,
// report.draining_rings, report.live_rings
// Repair poisoned entries (safe under live traffic)
region.repair_locked_entries();
// Reset retired rings (after confirming crashed publisher is gone)
region.reset_retired_rings();
// Reclaim leaked slots (requires full quiescence)
region.reclaim_orphaned_slots();
CLI (kickmsg)
Installing the Python wheel puts a kickmsg command on $PATH that
inspects running channels via a shared participant registry (one per
namespace, backed by a SHM region at /{namespace}_registry). Works
identically on Linux, macOS, and Windows — no /dev/shm filesystem
walk required.
kickmsg list # topic-centric enumeration
kickmsg list -o name,pub,sub,stall # ps-style column selection
kickmsg info <shm> # static header metadata
kickmsg stats <shm> # runtime counters (write_pos / dropped / lost)
kickmsg watch <shm> # top-like live view, msg/s rates (interactive; Ctrl-C to quit)
kickmsg diagnose <shm> # wraps SharedRegion::diagnose()
kickmsg repair <shm> [--locked] # run repair primitives
kickmsg schema <shm> # focused schema descriptor view
kickmsg schema-diff <a> <b> # field-by-field schema comparison
All subcommands accept --json for scripting.
Programmatic use (GUIs, exporters)
The same data the CLI renders is available as typed dataclasses through
kickmsg.diagnostics, so a GUI can consume it without shelling out:
from kickmsg import diagnostics as diag
for topic in diag.list_topics(namespace="kickmsg"):
print(topic.shm_name, len(topic.producers), len(topic.consumers))
stats = diag.stats("/kickmsg_telemetry")
for ring in stats.rings:
if ring.state == "live":
print(ring.write_pos, ring.dropped_count, ring.lost_count)
# Live updates (generator — caller drives the loop)
for frame in diag.watch("/kickmsg_telemetry", interval=1.0):
gui.update(frame.stats, frame.rates_msg_per_sec)
Building
Prerequisites
- C++17 compiler (GCC 10+, Clang 12+, MSVC 2019+)
- CMake 3.15+
- Conan 2.x (for test/benchmark dependencies)
Build
# Install dependencies
pip install conan
conan install conan/conanfile.py -of=build --build=missing -o unit_tests=True
# Configure and build
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=build \
-DBUILD_UNIT_TESTS=ON \
-DBUILD_EXAMPLES=ON
cmake --build build
# Run tests
./build/kickmsg_unit
./build/kickmsg_stress_test
./build/kickmsg_crash_test
# Run C++ examples
./build/examples/hello_pubsub
./build/examples/hello_zerocopy
./build/examples/hello_broadcast
./build/examples/hello_diagnose
./build/examples/hello_schema
./build/examples/hello_schema_late_publisher
./build/examples/hello_lowlevel
# Run Python examples (after `pip install kickmsg`)
python examples/python/hello_pubsub.py
python examples/python/hello_camera_zerocopy.py # zero-copy with memoryview
python examples/python/hello_schema.py
python examples/python/cli_playground.py # long-running, drive the `kickmsg` CLI against it
To prove kickmsg works on your own hardware -- the validation ladder from a
quick ctest gate to a multi-hour contention soak with a single
VERDICT: ALL CLEAN -- see tests/README.md.
As a subdirectory
add_subdirectory(kickmsg)
target_link_libraries(my_app PRIVATE kickmsg)
CMake Options
| Option | Default | Description |
|---|---|---|
BUILD_UNIT_TESTS |
OFF |
Build unit and stress tests |
BUILD_EXAMPLES |
OFF |
Build example programs |
BUILD_BENCHMARKS |
OFF |
Build benchmarks (requires Google Benchmark) |
ENABLE_TSAN |
OFF |
Enable ThreadSanitizer |
Security
Shared-memory objects are created with mode 0600 (owner-only) on
Linux and macOS, so channel payloads are not readable by other users
on a multi-user host. To share channels across users, set the
KICKMSG_SHM_MODE environment variable to an octal mode (e.g.
KICKMSG_SHM_MODE=0666) in every process that creates regions —
openers are unaffected. The value is parsed once per process; an
invalid value falls back to 0600 with a warning on stderr.
Platform Support
| Platform | SharedMemory | Futex |
|---|---|---|
| Linux | shm_open / mmap |
SYS_futex |
| macOS | shm_open / mmap |
__ulock_wait / __ulock_wake |
| Windows | CreateFileMapping / MapViewOfFile |
WaitOnAddress / WakeByAddressAll |
Actively validated on Linux x86-64, Linux ARM64 (Raspberry Pi 4B, 12 h continuous stress), and Darwin ARM64 (Apple Silicon, 12 h continuous stress: 2660 passes, 0 failures, 0 reorders) via scripts/validate.sh and tests/endurance.sh.
Architecture
See ARCHITECTURE.md for the full design: shared-memory layout, concurrency model, publish/subscribe flows, crash resilience, garbage collection, and ABA safety analysis.
Troubleshooting
See TROUBLESHOOTING.md for common operational gotchas: stale segments after a crash, the diagnose/repair flow, SHM naming and length limits, permission errors, and platform-specific notes (macOS PSHMNAMLEN, Windows session isolation, Linux /dev/shm sizing).
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kickmsg-0.6.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 963.9 kB
- Tags: CPython 3.12+, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec35943e56fcd40c43b0ae51d184fb50b75b35ed0d5fdec5f20b013671f00603
|
|
| MD5 |
9f9ef39823bf4ba15f354893bc59f1fa
|
|
| BLAKE2b-256 |
225b8dcba9b515a9d97cbb68c2eebd6effc27fdbb0935150c8173b960717c900
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
ec35943e56fcd40c43b0ae51d184fb50b75b35ed0d5fdec5f20b013671f00603 - Sigstore transparency entry: 2185579116
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 962.2 kB
- Tags: CPython 3.12+, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32b64a5ee86a46893cd87a5c483c642ddc98f936fae37b1f7343e8b147410519
|
|
| MD5 |
6a9d22b6e78086eae9120573413ac831
|
|
| BLAKE2b-256 |
2748d6da4ba68f5678bff4b0d62381c247f976120bf69772cb0ff7779af38664
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
32b64a5ee86a46893cd87a5c483c642ddc98f936fae37b1f7343e8b147410519 - Sigstore transparency entry: 2185578796
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp312-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp312-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 356.2 kB
- Tags: CPython 3.12+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fae58a4e443703d201316e2a9d57e68f7909a8d9abeb36f03a6771924b592c99
|
|
| MD5 |
9db6a9f5abb1765f694e5a3a45899cab
|
|
| BLAKE2b-256 |
9d3085a5bf23e1997031f4195fd479ab0fdab9d14bb9b4abdc9f092d6d042b3a
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp312-abi3-macosx_11_0_arm64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp312-abi3-macosx_11_0_arm64.whl -
Subject digest:
fae58a4e443703d201316e2a9d57e68f7909a8d9abeb36f03a6771924b592c99 - Sigstore transparency entry: 2185578459
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 967.8 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6beee554e019c95bd883cd8997dd13447f5e84f5ff9e36a5f15dec63b70d7bc2
|
|
| MD5 |
7486771f88be11c8d17a900843365322
|
|
| BLAKE2b-256 |
62edd8dccca9abfa5ddda37d56c8150f3f8febfc439cd1408c0b9c7c81ad4fee
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
6beee554e019c95bd883cd8997dd13447f5e84f5ff9e36a5f15dec63b70d7bc2 - Sigstore transparency entry: 2185579303
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 965.0 kB
- Tags: CPython 3.11, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be3982dec79e7f221bfd4f7e231b7d8e873aece0ca012e424e51a046a8622d4f
|
|
| MD5 |
f1df91ea33ee02f5c30a9cfa56b28173
|
|
| BLAKE2b-256 |
72fbf3a4423df4e994e2cdb8cff94d3ae4fb12d6962248a0d0048fcde2c67451
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
be3982dec79e7f221bfd4f7e231b7d8e873aece0ca012e424e51a046a8622d4f - Sigstore transparency entry: 2185578931
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 357.8 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d28026b3a8e66e45b8912233359bbe90685d4edcdb6834a77b22f3c5a79dc8fc
|
|
| MD5 |
5a17efadcf4c6b152507f87be0822c79
|
|
| BLAKE2b-256 |
e6a9a79b247a40282d77bdc6bb0c764b17bd35d1398cc75d78f041c3a2617bb6
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
d28026b3a8e66e45b8912233359bbe90685d4edcdb6834a77b22f3c5a79dc8fc - Sigstore transparency entry: 2185579021
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 968.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
149077c0da249fba119cfabb19029d1a739a5377095f39f5bf92e4e7dcec8c88
|
|
| MD5 |
a2338be2e16dcee96c5b8ce5072c94ff
|
|
| BLAKE2b-256 |
bc4c7e1655420d7efda6e0d1c97c92e500765535f374209dce605c13910a26d9
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
149077c0da249fba119cfabb19029d1a739a5377095f39f5bf92e4e7dcec8c88 - Sigstore transparency entry: 2185578238
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 965.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.26+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f4fc7a49991bc53f15b4f58ee3c4ddcb5d056113401ebb159d34ae6905b7fb3
|
|
| MD5 |
21042aee00529e3b498cdf98319c09c3
|
|
| BLAKE2b-256 |
fcac091aec885b397093b727fb82159a2e66f59e597e9acd781642617bf5e595
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
9f4fc7a49991bc53f15b4f58ee3c4ddcb5d056113401ebb159d34ae6905b7fb3 - Sigstore transparency entry: 2185578586
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kickmsg-0.6.3-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: kickmsg-0.6.3-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 357.5 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38da1cbf0a169a2189f6fb4638fcbb44a9c265a3433ecc4038a21704359965fb
|
|
| MD5 |
08d72db11cc5258e4424ef27020cd8d3
|
|
| BLAKE2b-256 |
bfd97ddaffc70330d60d8ba75ec46bbbefdfb223e3c81874216a78636ba40bbd
|
Provenance
The following attestation bundles were made for kickmsg-0.6.3-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
ci.yml on leducp/kickmsg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kickmsg-0.6.3-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
38da1cbf0a169a2189f6fb4638fcbb44a9c265a3433ecc4038a21704359965fb - Sigstore transparency entry: 2185579202
- Sigstore integration time:
-
Permalink:
leducp/kickmsg@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Branch / Tag:
refs/tags/v0.6.3 - Owner: https://github.com/leducp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@4ccc136c68b5f0ab4081996cf3df96e7adb76376 -
Trigger Event:
push
-
Statement type: