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:
@queryis a pure read (read_only=True,idempotent=True).@mutates(...)is a state-changing unary, client-stream or duplex method. Bare@mutatesis destructive by default; use@mutates(idempotent=True)for a retry-safe write and@mutates(destructive=True)to be explicit.@streamis a server stream. Bare@streamis treated as read-only unless the method name looks mutating; passread_only=False, idempotent=Falsefor 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| meshcall-0.3.0.tar.gz | 146.4 kB | With provenance | Details |
Built distributions (wheels)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.