# PyCyphal v2 alpha is available

**URL:** <https://forum.opencyphal.org/t/pycyphal-v2-alpha-is-available/2459>\
**Category:** PyCyphal\
**Created:** [April 12, 2026, 9:21am UTC](https://forum.opencyphal.org/t/pycyphal-v2-alpha-is-available/2459 "2026-04-12T09:21:19Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [April 12, 2026, 9:21am UTC](https://forum.opencyphal.org/t/pycyphal-v2-alpha-is-available/2459/1 "2026-04-12T09:21:20Z")

</div>

PyCyphal v2, implementing draft Cyphal v1.1, has been [merged into `master`](https://github.com/OpenCyphal/pycyphal) and is published on PyPI as `pycyphal2`. The new version offers a radically simpler API and it mostly _just works_ out of the box; also, it has about four times fewer lines of code than v1.

Read the docs and run the examples: [https://opencyphal.github.io/pycyphal](https://opencyphal.github.io/pycyphal)

```python
from pycyphal2 import Node, Instant
from pycyphal2.udp import UDPTransport

async def main():
    node = Node.new(UDPTransport.new(), "my_node")

    pub = node.advertise("sensor/temperature")
    await pub(Instant.now() + 1.0, b"21.5")

    sub = node.subscribe("sensor/temperature")
    async for arrival in sub:
        print(arrival.message)

```

All data serialization-related concerns have been removed from the library. To use DSDL, one must use Nunavut/PyDSDL directly instead. Compatibility with other serialization formats is now a first-class feature.

The work on Cyphal v1.1 remains experimental so while early adoption is encouraged, expect wire compatibility breakages at any moment. Bugs afoot.

The old PyCyphal v1 is still available as `pycyphal` from PyPI, ensuring that both versions can coexist in the same Python environment.
