Tay Python SDK
tay is the stdlib-only Protocol v1 producer and worker client for a local Tay
Unix-domain socket. Tay() needs no socket setting: it uses the same discovery
contract as the Elixir Engine (explicit path, TAY_SOCKET_PATH, XDG runtime,
TMPDIR, then /tmp/tay-<uid>). It is intentionally a separately installable
package:
python -m pip install tay-client
From a Tay source checkout, use python -m pip install ./clients/python.
Create a Tay(mode="client") producer, or a Tay(mode="worker") process that
only executes registered tasks. The SDK sends JSON-object arguments and bounded
JSON results; it does not serialize arbitrary Python objects.
The producer surface is asynchronous: enqueue, JobHandle.status(),
JobHandle.result(), and JobHandle.cancel() map directly to the currently
supported Protocol v1 requests. Use a stable submission_id when retrying an
enqueue whose connection outcome is unknown.
Tasks declared before await tay.start() are advertised during the handshake.
For a long-running worker that adds or removes capabilities later, explicitly
sync the change:
@tay.task(name="reports.rebuild.v1")
def rebuild(report_id: str) -> dict:
return {"report_id": report_id}
await tay.register_tasks(rebuild)
# ... stop accepting new work for this task
await tay.unregister_tasks(rebuild)
Both changes are retained as desired capability state and reconciled on the
next connection. client mode cannot register task capabilities.
Schedules
schedule() uses the five-field Unix cron form (minute, hour, day of month,
month, day of week). Its default timezone is +00; pass a fixed UTC offset
such as +02, -05, or +05:30 when the schedule should be evaluated in a
different local clock. The API accepts catch_up="latest" (default) or
catch_up="all", and defaults to overlap="skip".
# Every weekday at 08:00 in UTC+02.
await tay.schedule(
"reports.rebuild.v1",
cron="0 8 * * 1-5",
timezone="+02",
catch_up="latest",
)
# First run in ten minutes, then every fifteen minutes.
await tay.every("reports.rebuild.v1", minutes=15, delay=600)
Use start_at=<UTC milliseconds> instead of delay when the first occurrence
has an absolute timestamp. The two options are mutually exclusive. Schedule
creation, execution, and cancellation work against the current listener
generation. Durable recovery/catch-up and enforced overlap policies are still
pending in the Tay engine.
Run a dedicated worker module with:
tay-worker myapp.jobs
The imported module must create exactly one Tay(mode="worker") instance and
register its tasks. Pass socket_path= or set TAY_SOCKET_PATH only to override
automatic discovery. See the repository README for the current durable-result/
scheduling compatibility boundary.
License
The tay-client Python package is licensed under the MIT License. The Tay
engine is distributed separately under the Elastic License 2.0.
Release files for tay-client 0.9.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tay_client-0.9.3.tar.gz | 23.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tay_client-0.9.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.1 kB
Release files / tay_client-0.9.3.tar.gz
| Download URL | tay_client-0.9.3.tar.gz |
|---|---|
| Size | 23.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
21d940c471a0726f4a2d551ef3705abcababdd5c948eb067bd34e36771626046
|
|
BLAKE2b-256 checksum How to use checksums |
0ca95c62e959c92d5de6b4e1fd01e85e9896270c2d7ffe0d30167c0e065d4700
|
| 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 / tay_client-0.9.3-py3-none-any.whl
| Download URL | tay_client-0.9.3-py3-none-any.whl |
|---|---|
| Size | 23.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
413a4744f29fe55f0aa32a6e3c9399d039c0917bef914f3b1257d0ec9de4579b
|
|
BLAKE2b-256 checksum How to use checksums |
03c278ad23d69b70db84a3d25213e4c884d9575e928bd87b91a9adc6ebcf38f2
|
| 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