raydriver
Rust-native machine drivers for Rayforge, exposed to Python via PyO3.
Currently this provides a full port of Rayforge's advanced GRBL serial driver: character-counting flow control, handshake and status polling, interactive command queue, job streaming with stall detection and deadlock recovery, cancel/safety-shutdown semantics, settings and WCS access, and probe cycles. Dialects (command templates) remain data owned by Rayforge and are passed in resolved form.
CLI
The raydriver command runs G-code against a real device with live
progress, or against the built-in firmware emulator for hardware-free
dry runs:
raydriver run job.gcode --port /dev/ttyUSB0 --baudrate 115200
raydriver run job.gcode --emulator # no hardware needed
raydriver status --port /dev/ttyUSB0 --seconds 5
While a job runs, raydriver run shows acknowledged lines, a
progress bar, the device state, machine position, feed rate and ETA;
Ctrl-C cancels the job and runs the safety shutdown.
Releases
Releasing mirrors the Raygeo flow:
- Configure a PyPI trusted publisher for this repository once
(owner
barebaric, reporaydriver, workflowrelease.yml, environmentpypi). gh release create v0.1.0 --title "v0.1.0" --generate-notes
The Build and Publish workflow then stamps the version from the
tag, builds wheels (Linux/Windows/macOS) and an sdist, publishes to
PyPI via OIDC, and attaches the artifacts to the GitHub release.
Development
make venv && source .venv/bin/activate
make dev # build + install (do this before testing)
make test # pytest suite (all tests are Python-based)
make check # lint + test
Usage
import asyncio
from raydriver.grbl import GrblSession
events = []
session = GrblSession(
config={"port": "/dev/ttyUSB0", "baudrate": 115200},
dialect={
"home_all": "$H",
"home_axis": "$H{axis_letter}",
"clear_alarm": "$X",
"laser_on": "M4 S{power:.0f}",
"laser_off": "M5",
},
event_callback=lambda name, payload: events.append((name, payload)),
)
async def main():
await session.connect()
print(await session.execute_interactive_command("$I"))
await session.disconnect()
asyncio.run(main())
Release files for raydriver 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| raydriver-0.1.1.tar.gz | 85.0 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| raydriver-0.1.1-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| raydriver-0.1.1-cp311-abi3-manylinux_2_34_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| raydriver-0.1.1-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
| raydriver-0.1.1-cp311-abi3-macosx_10_12_x86_64.whl | CPython 3.11 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 6.2 MB
Release files / raydriver-0.1.1.tar.gz
| Download URL | raydriver-0.1.1.tar.gz |
|---|---|
| Size | 85.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8886ea5f483663e967314bf3840f9276a7fba3eae2228f828b009df520cf64f4
|
|
BLAKE2b-256 checksum How to use checksums |
e7297d39537ad7c10ce7db567633dc7ee6b587a179b819969e43413613f63858
|
| 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 Sep 23, 2026.
Transparency logRelease files / raydriver-0.1.1-cp311-abi3-win_amd64.whl
| Download URL | raydriver-0.1.1-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
255404548ab50a4763f65ab5b67cd0e4339ef4b2a79d436520d4ff9fca78403f
|
|
BLAKE2b-256 checksum How to use checksums |
3e0a5244d5e38d34bcb113d6b09da3849886b2a7d6809cac8b5ae73ed20e7110
|
| 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 Sep 23, 2026.
Transparency logRelease files / raydriver-0.1.1-cp311-abi3-manylinux_2_34_x86_64.whl
| Download URL | raydriver-0.1.1-cp311-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
4c3c0a2114e4fb3f524047320ddee4beb927e0d44c1c69c2870b88bcd64be8d5
|
|
BLAKE2b-256 checksum How to use checksums |
9ca14e83eee4ddf74ecdee0a5acddc3331bb3262e25cb68566ae336c07f2e624
|
| 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 Sep 23, 2026.
Transparency logRelease files / raydriver-0.1.1-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | raydriver-0.1.1-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
724f61a29ad715b62c9ea4a48dbb90af1b92d7f1aadfd83005fb9163d6f19ea2
|
|
BLAKE2b-256 checksum How to use checksums |
de683b40266c7ca5f8f93cabb7a5060ad465a42f54c17c94548df49f9fe81639
|
| 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 Sep 23, 2026.
Transparency logRelease files / raydriver-0.1.1-cp311-abi3-macosx_10_12_x86_64.whl
| Download URL | raydriver-0.1.1-cp311-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a3be7a3c17bc0a9772d4073cbd75a479e09f28faa3a74e8699797aa43f57be18
|
|
BLAKE2b-256 checksum How to use checksums |
b479dbe43b29ac09e87d178a2440520408972fb9d94f78fa29e75ae9711bfb99
|
| 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 Sep 23, 2026.
Transparency log