Skip to main content

meshcall (Python SDK)

English | 简体中文

Asynchronous, typed streaming RPC for Python, TypeScript and Go over WebSocket and HTTP. Services define contracts with Pydantic v2 models, register with the standalone Go Router through Mesh, and expose unary, server-streaming, client-streaming, and restricted duplex methods.

Install

uv add meshcall
# or: pip install meshcall

Prebuilt meshcall-router and meshcall CLI binaries are bundled inside the platform wheels for Linux (manylinux and musllinux), macOS, and Windows—no Go toolchain or separate download is required. On platforms using the pure-Python wheel, uv run meshcall router install downloads the matching release binary into the per-user cache.

If coding agents work on your project, install the first-party agent skill once:

uv run meshcall init                  # default: .agents/skills/meshcall/SKILL.md + AGENTS.md
uv run meshcall init --agent claude   # or target: claude | cursor | copilot | windsurf | all

Define a service

from collections.abc import AsyncIterator

from pydantic import BaseModel

from meshcall import (
    LocalRouter,
    Mesh,
    RpcLogger,
    mutates,
    query,
    service,
    stream,
)


class Message(BaseModel):
    text: str


@service("chat.v1.Chat")
class Chat:
    """Chat sessions."""

    @query
    async def last_message(self, session_id: str) -> Message:
        """Read a session's latest message (read-only and idempotent)."""
        return Message(text=f"last message in {session_id}")

    @mutates(idempotent=True)
    async def send(self, session_id: str, text: str, logger: RpcLogger) -> Message:
        """Append a message and return the reply (a retry-safe write)."""
        logger.info("session={} text={}", session_id, text)  # noqa: PLE1205
        return Message(text=f"echo: {text}")

    @stream
    async def watch(self, session_id: str) -> AsyncIterator[Message]:
        """Stream replies as they arrive (server stream)."""
        yield Message(text=f"watching {session_id}")

    @mutates(idempotent=True)
    async def ingest(self, session_id: str, items: AsyncIterator[Message]) -> Message:
        """Store a stream of messages (client stream)."""
        count = 0
        async for _ in items:
            count += 1
        return Message(text=f"ingested {count}")


if __name__ == "__main__":
    mesh = Mesh(LocalRouter(port=8765))
    mesh.mount(Chat())
    mesh.run()

Methods are declared with three decorators:

  • @query is a pure read (read_only=True, idempotent=True).
  • @mutates(...) is a state-changing unary, client-stream or duplex method. Bare @mutates is destructive by default; use @mutates(idempotent=True) for a retry-safe write and @mutates(destructive=True) to be explicit.
  • @stream is a server stream. Bare @stream is treated as read-only unless the method name looks mutating; pass read_only=False, idempotent=False for a side-effecting stream.

Duplex (interleaved input and output in one call) is a restricted shape of last resort: declare it with @mutates(reason="…"), take a DuplexChannel[In, Out] parameter, and return None. Duplex calls are never retried or deduplicated, take no idempotency key, and are not reachable over HTTP.

Handlers may also ask for ctx: RpcContext and logger: RpcLogger; both are injected by the runtime and never become contract parameters.

Set MESHCALL_STRICT=1 during development and CI so missing docstrings or unannotated mutating methods fail fast at import with a hint.

Mount, run and serve

Mount services on a Mesh and start the blocking mesh.run() entry point, which owns the process until SIGINT / SIGTERM and then drains in-flight calls. Use LocalRouter(port=8765) to launch a local meshcall-router subprocess automatically, or Router("ws://127.0.0.1:8765") to connect to an already running Router:

from meshcall import LocalRouter, Mesh, Router

# Start a local Router subprocess on port 8765 (or pass Router() for an external Router):
mesh = Mesh(LocalRouter(port=8765))
mesh.mount(Chat())
mesh.run()

Embed the service in an async application or test with LocalRouter and mesh.serve:

import asyncio

from meshcall import LocalRouter, Mesh


async def main() -> None:
    async with LocalRouter(port=0) as router:
        mesh = Mesh(router)
        mesh.mount(Chat())
        async with mesh.serve() as server:
            print(f"serving on {server.url}")  # e.g. ws://127.0.0.1:53281
            await asyncio.Event().wait()  # leaving the block stops and drains


asyncio.run(main())

mesh.serve(...) returns a RunningServer (server.url, await server.stop(), await server.wait_closed()), and may also be awaited directly (await mesh.serve(...)). Both mesh.run and mesh.serve accept instance_id, max_inflight, strict, interceptors and logging options.

Router() with no arguments resolves MESHCALL_ROUTER_URL (comma-separated for several Routers), falling back to ws://127.0.0.1:8765. Use LocalRouter(...) when you want Python to start and stop a local meshcall-router subprocess.

Generate and call a typed client

# Generate an installable Python uv package (or add --single-file for a single .py file)
uv run meshcall generate my_app.service:Chat --output generated/chat-client

# Generate a TypeScript package or a Go package from the same Python service
uv run meshcall generate my_app.service:Chat --language typescript --output generated/chat-ts
uv run meshcall generate my_app.service:Chat --language go --output internal/chatclient

Call the service through the generated client in a second terminal while server.py is running:

from meshcall import Mesh, Router
from meshcall_chat_v1_chat_client import ChatClient


async def main() -> None:
    async with Mesh(Router("ws://127.0.0.1:8765")) as mesh:
        chat = ChatClient(mesh)  # shares the Mesh's single connection
        reply = await chat.with_options(
            timeout=5.0,
            idempotency_key="send-s1-1",
            metadata={"x-caller-id": "cli"},
        ).send("s1", "hello")
        print(reply.text)

Generated methods take only the business parameters, in the same order as the handler (client-stream methods take those, then the inbound AsyncIterable); for a targeted service they also require the instance= keyword. Per-call options never change the business signature: with_options(timeout=..., idle_timeout=..., metadata=..., idempotency_key=..., instance=...) returns a client view that applies them.

Explore and call from the CLI

# Inspect registered services, instances, health, and method signatures
uv run meshcall router inspect --router ws://127.0.0.1:8765

# Call a method directly from the command line
uv run meshcall call chat.v1.Chat.send '{"session_id": "s1", "text": "hello"}'

Dependency injection and metadata

Handlers can ask for server-only values without adding parameters to the contract:

from typing import Annotated

from meshcall import dependency, meta, mutates, service


@dependency
async def current_user(authorization: Annotated[str, meta("authorization")]) -> str:
    return authorization.removeprefix("Bearer ")


CallerId = Annotated[str | None, meta("x-caller-id")]


@service("chat.v1.Chat")
class Chat:
    @mutates(idempotent=True)
    async def send(
        self,
        text: str,
        user: str = current_user,
        caller: CallerId = None,
    ) -> Message:
        """Append a message and return the reply."""
        return Message(text=f"{user}: {text} (caller={caller})")

@dependency providers may be sync, async or generators; a generator's cleanup runs when the call ends, so it can commit on success and roll back on error or cancellation (see best-practice/). Dependencies may also be written as Annotated[T, dependency(provider)] or resolved from a class's _provider(). meta("key") injects a call metadata entry. Injected parameters are stripped from the contract and from generated clients; send metadata with with_options(metadata=...) or --metadata k=v on the CLI.

Router, LocalRouter and Mesh

Router describes a remote Router endpoint; LocalRouter manages a local meshcall-router subprocess; Mesh is the peer runtime that mounts services, multiplexes client connections, and exposes built-in Router services via mesh.registry and mesh.auth:

from meshcall import Mesh, Router, RouterCredentials
from meshcall_chat_v1_chat_client import ChatClient


async def main() -> None:
    async with Mesh(
        Router("ws://127.0.0.1:8765"),
        credentials=RouterCredentials(token="…"),
    ) as mesh:
        services = await mesh.registry.list()
        print([service.name for service in services])
        chat = ChatClient(mesh)  # one connection shared by every client
        reply = await chat.with_options(timeout=5.0).last_message("s1")

The built-in Router services are exposed on mesh.registry (await mesh.registry.list(), await mesh.registry.describe(name)) and mesh.auth (await mesh.auth.whoami(), await mesh.auth.issue_token(scopes, ttl_seconds=900), await mesh.auth.revoke_token(token_id)).

Local transport

Router takes unix_path (Linux, macOS, FreeBSD) or pipe (Windows named pipe) instead of a TCP URL; Router("unix:///path") and Router("pipe://NAME") work too. The CLI addresses the same listeners as unix:///path and pipe://NAME.

LocalRouter owns an explicit Router process when you want to manage one yourself: host / port, unix_path, pipe, max_frame_size (default and maximum 64 MiB), outbox_size (bytes queued for a peer that is not reading; default the Router's 256 MiB, at least max_frame_size), max_connections, binary_path, auth_file and readiness timeouts. It exposes pid, is_running, bound_port, wait_closed() and async context management. Override the bundled binary with MESHCALL_ROUTER_BINARY when needed. Low-level primitives (RpcServer, ClientBase, WebSocketClientDriver and WebSocketRouterServerDriver) support custom transport wiring and accept unix_path= / pipe= as well.

HTTP transport

When Router is given an http:// or https:// URL, Mesh automatically selects the HTTP client transport (httpx) underneath:

from meshcall import Mesh, Router

mesh = Mesh(Router("https://router.example"), token="mk_…")
chat = ChatClient(mesh)
reply = await chat.with_options(timeout=5).greet("Alice")
services = await mesh.registry.list()

Duplex methods are WebSocket-only (they raise method_not_found, reason: "duplex_over_http"), and mesh.mount(...) raises ContractError on an HTTP-backed Mesh. Everything else works as over WebSocket: unary calls with the usual idempotent retry, server and client streams, and the built-in mesh.registry / mesh.auth calls.

Router authentication

Pass token="…" or credentials=RouterCredentials(username=..., password=...) / RouterCredentials(token=...) to Mesh(router, ...) (or auth= to WebSocketClientDriver / WebSocketRouterServerDriver when wiring them directly). mesh.auth exposes whoami(), issue_token(scopes=..., ...) and revoke_token(...); RouterAuthClient is the lower-level typed client for the same built-in service. Use RouterScope(service=..., methods=[...]) to limit a token, or register_service=True for temporary service instances.

OpenTelemetry

pip install "meshcall[otel]"
from meshcall import Mesh, Router
from meshcall.otel import client_interceptor, server_interceptor
from meshcall_chat_v1_chat_client import ChatClient


async def main() -> None:
    async with Mesh(
        Router("ws://127.0.0.1:8765"),
        interceptors=[client_interceptor()],
    ) as mesh:
        chat = ChatClient(mesh)
        ...

    server_mesh = Mesh(Router("ws://127.0.0.1:8765"))
    server_mesh.mount(Chat())
    async with server_mesh.serve(interceptors=[server_interceptor()]):
        ...

Each call gets a span and meshcall.calls / meshcall.call.duration metrics; the W3C trace context travels as call metadata, so a trace continues through the Router and across languages (TypeScript: meshcall/otel). With no OpenTelemetry SDK configured the interceptors are no-ops.

Documentation

Metadata

Release files for meshcall 0.3.0

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

Source distribution (sdist)

Source distribution for meshcall 0.3.0
File Size Uploaded Provenance
meshcall-0.3.0.tar.gz 146.4 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for meshcall 0.3.0
File
meshcall-0.3.0-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
meshcall-0.3.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
meshcall-0.3.0-py3-none-win32.whl Python 3 none Windows x86-32 Details
meshcall-0.3.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
meshcall-0.3.0-py3-none-musllinux_1_2_s390x.whl Python 3 none Linux musl 1.2+ IBM System/390x Details
meshcall-0.3.0-py3-none-musllinux_1_2_riscv64.whl Python 3 none Linux musl 1.2+ RISC-V 64 Details
meshcall-0.3.0-py3-none-musllinux_1_2_ppc64le.whl Python 3 none Linux musl 1.2+ PowerPC 64-le Details
meshcall-0.3.0-py3-none-musllinux_1_2_i686.whl Python 3 none Linux musl 1.2+ x86-32 Details
meshcall-0.3.0-py3-none-musllinux_1_2_armv7l.whl Python 3 none Linux musl 1.2+ ARMv7l Details
meshcall-0.3.0-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
meshcall-0.3.0-py3-none-manylinux_2_31_riscv64.whl Python 3 none Linux glibc 2.31+ RISC-V 64 Details
meshcall-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
meshcall-0.3.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl Python 3 none Linux glibc 2.17+ IBM System/390x Details
meshcall-0.3.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl Python 3 none Linux glibc 2.17+ PowerPC 64-le Details
meshcall-0.3.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl Python 3 none Linux glibc 2.17+ x86-32 Details
meshcall-0.3.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l Details
meshcall-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
meshcall-0.3.0-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details
meshcall-0.3.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
meshcall-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 114.5 MB

Release files / meshcall-0.3.0.tar.gz

Download URL meshcall-0.3.0.tar.gz
Size 146.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f7e88e8907ed0d018c252e702137416e76889837eaa8c496c42b18528a90c552
BLAKE2b-256 checksum
How to use checksums
512ebb9bd1c7c6b96ac88ed8b344f6df4b4df944c3758a0dbb54a26187758c02
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-win_arm64.whl

Download URL meshcall-0.3.0-py3-none-win_arm64.whl
Size 5.8 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
6e2517fc18b2f8ad98808e53e15a20814e34920bbb5c2d5c78c6ccdda8295fad
BLAKE2b-256 checksum
How to use checksums
40763f66c3d9bbd46ed69156af8be7b46f10aea4e6d887462c89b16b3f082740
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-win_amd64.whl

Download URL meshcall-0.3.0-py3-none-win_amd64.whl
Size 6.5 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
0894605c42f808116704c9d482a0bb730286e1ae15e8b013399aa8991e0c3d3e
BLAKE2b-256 checksum
How to use checksums
209dfb0149c5ab2f0edbcb9c7771b91974eac9fa08bd0e4156816b125edbc577
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-win32.whl

Download URL meshcall-0.3.0-py3-none-win32.whl
Size 6.4 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
57d82fbf8bbeb20911d54b15aada5af35926e716b80d69d083bd1d3dbc4e6a3f
BLAKE2b-256 checksum
How to use checksums
2cbb30fb3286e40029bf9af184289fd1981fec29f8d3ede27f2354fc4ab3f473
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-musllinux_1_2_x86_64.whl

Download URL meshcall-0.3.0-py3-none-musllinux_1_2_x86_64.whl
Size 6.3 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
4ab7350f3819cdcc84bdba67522e36ce30c78a559a2653ffdb9dca36978af457
BLAKE2b-256 checksum
How to use checksums
5345176343b3ceaa48a8e8967a6c2fe96ac0d09746be5af1e711bb58520ff707
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-musllinux_1_2_s390x.whl

Download URL meshcall-0.3.0-py3-none-musllinux_1_2_s390x.whl
Size 6.1 MB
Tags Linux musl 1.2+ IBM System/390x Python 3
SHA-256 checksum
How to use checksums
cddd3cd9dcb038ea0551ef27d84c9dfdc0ba4b0ce05e4880d2f154f01649b4f5
BLAKE2b-256 checksum
How to use checksums
5f77844121c483002e8fa95139dad3be2deafb1aa3b6c7610f2e9e10d83e0524
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-musllinux_1_2_riscv64.whl

Download URL meshcall-0.3.0-py3-none-musllinux_1_2_riscv64.whl
Size 5.8 MB
Tags Linux musl 1.2+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
906842d3c39c10fa93b7bb38c4198567a1cd8e12bc19c02a049d79cca6a7393f
BLAKE2b-256 checksum
How to use checksums
d1c17993f3c7c8d9c5352c5f73853f7ff6a3e6ce10577a899ae1bfa5f35d2ba1
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-musllinux_1_2_ppc64le.whl

Download URL meshcall-0.3.0-py3-none-musllinux_1_2_ppc64le.whl
Size 5.7 MB
Tags Linux musl 1.2+ PowerPC 64-le Python 3
SHA-256 checksum
How to use checksums
21cdd42123357288c610a473d53a7ae117a0368f8c1b5b50923d219ac5298ea4
BLAKE2b-256 checksum
How to use checksums
7babd46272642fa4dc79dbdf42558adf283781d7c23e55f8eeeee0932e77bb51
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-musllinux_1_2_i686.whl

Download URL meshcall-0.3.0-py3-none-musllinux_1_2_i686.whl
Size 6.1 MB
Tags Linux musl 1.2+ x86-32 Python 3
SHA-256 checksum
How to use checksums
33e6632d7132e0c2790172b2615c845f68e84769f0b7dd6efe6ad62f4d00ba10
BLAKE2b-256 checksum
How to use checksums
24ff41db72c83e6c4b84b334dfb059015ed057ac4e6289a63b8c7dd13fc24bb8
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-musllinux_1_2_armv7l.whl

Download URL meshcall-0.3.0-py3-none-musllinux_1_2_armv7l.whl
Size 6.0 MB
Tags Linux musl 1.2+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
aedf4b577084d22bcb153682ce87cdb9f3841ba4af92cd623531a1b2c599bd34
BLAKE2b-256 checksum
How to use checksums
41f3238a362d17f4c2fceb6b66f343994b1289f73be3e5daee803e247202d97b
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-musllinux_1_2_aarch64.whl

Download URL meshcall-0.3.0-py3-none-musllinux_1_2_aarch64.whl
Size 5.6 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
3a6b16c1e87a2558e2dcd8a17a16203959fe142cb312d605184f8b4c7d93a9e7
BLAKE2b-256 checksum
How to use checksums
f9a00168d1287e7a69702624d5efebb51d09c39eea22e17e226617f6b1e8a70d
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-manylinux_2_31_riscv64.whl

Download URL meshcall-0.3.0-py3-none-manylinux_2_31_riscv64.whl
Size 5.8 MB
Tags Linux glibc 2.31+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
0bbba9d40914a762f6dce7403465c0f676ce53950f8682436e79b294d12c89fb
BLAKE2b-256 checksum
How to use checksums
811fc120be25991fc0040a1dbfc8cb007bb911a1109b204b417b39eaacaef94e
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL meshcall-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.3 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
ad06dd6a5f06176932b5ef1683f14ac60aa20d7169a2d8472a4e1208edbfcec6
BLAKE2b-256 checksum
How to use checksums
802d85f3a1fcce1093f91b8df79cb3ca3e7a10c17318d792f427fdf6917f6d97
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl

Download URL meshcall-0.3.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Size 6.1 MB
Tags Linux glibc 2.17+ IBM System/390x Python 3
SHA-256 checksum
How to use checksums
228bb71cbdd47bfcaa55239fb341010d6a7309b44c9d716c06d81442b5b8e63c
BLAKE2b-256 checksum
How to use checksums
89d69d2033d9ba803905b361837a7cac3cb939f3a0fb5f44a150d3821fb487e8
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Download URL meshcall-0.3.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Size 5.7 MB
Tags Linux glibc 2.17+ PowerPC 64-le Python 3
SHA-256 checksum
How to use checksums
0dffdaae687a5bebae0910184e661425490d9174b6e7bca01c87cc04dc2572d0
BLAKE2b-256 checksum
How to use checksums
ec48d4b88cf6432d396e10552e1ab3574475a1085247e51cf6081b47af5a3486
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL meshcall-0.3.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Size 6.1 MB
Tags Linux glibc 2.17+ x86-32 Python 3
SHA-256 checksum
How to use checksums
a11a353a9c03cb51b93d1dc20e190c399386375b073b84844f6a645cc883ad7c
BLAKE2b-256 checksum
How to use checksums
84f7364c1f3a7f024e843fef67cd93bb2e85194ed6a51e48e6a2d89f25635d50
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL meshcall-0.3.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 6.0 MB
Tags Linux glibc 2.17+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
a7bcfa1d5a29b19117a3d26a535179448832cc2c0ed079dac8207d3f353ca1dc
BLAKE2b-256 checksum
How to use checksums
f61ef9c82a231af499327fb8905c3d637dc6e07e5fa2aa4dde40c5dc3f07f92e
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL meshcall-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.6 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
7628bc0f5da7e2b4fcfde6dc7abb2fe8d797220876f21406098c31ba5c829644
BLAKE2b-256 checksum
How to use checksums
0a162cba390c3912ec5cedab5a3c803be5a6529c595e6c7ad679d4757cc3f238
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-macosx_11_0_x86_64.whl

Download URL meshcall-0.3.0-py3-none-macosx_11_0_x86_64.whl
Size 6.3 MB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
da63c9024d4481323f6466c640acee43353c669b829dd6e90d25395cc2de3b65
BLAKE2b-256 checksum
How to use checksums
b626a837713110a967f8f725567933cdcfd25631428702a5be86e184341d9bb1
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-macosx_11_0_arm64.whl

Download URL meshcall-0.3.0-py3-none-macosx_11_0_arm64.whl
Size 5.8 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
75a64c107864860da772bb04f79c2f29b4a4c29722a07b76cce700c5f707de13
BLAKE2b-256 checksum
How to use checksums
823603b3ef0967472952c1e6f844ad3812cfa322bbce86ca571228cbcc40a246
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 17, 2026.

Transparency log

Release files / meshcall-0.3.0-py3-none-any.whl

Download URL meshcall-0.3.0-py3-none-any.whl
Size 84.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a10decf49eb5aded0208fd72ba5a49962ea58d188314567ff1aa306cf78ee1d6
BLAKE2b-256 checksum
How to use checksums
50193aed37daa98b494bfa4e27f904a77110794c2608dc93b1455091b40ec538
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 17, 2026.

Transparency log

Security for meshcall 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 21 files in this release have been uploaded with provenance metadata.

Select from 21 files

Attestation for meshcall-0.3.0.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 17, 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