This release is a pre-release and may not be stable for production use.
Runlet Harness
Application integration helpers for Runlet.
runlet-harness keeps third-party adapters, environment-based configuration,
and background delivery concerns outside the small Runlet runtime core.
Install
Base package:
pip install runlet-harness
With Langfuse support:
pip install "runlet-harness[langfuse]"
Langfuse
Cloud configuration:
LANGFUSE_PUBLIC_KEY=pk-lf-...
LANGFUSE_SECRET_KEY=sk-lf-...
Self-hosted configuration:
LANGFUSE_PUBLIC_KEY=pk-lf-...
LANGFUSE_SECRET_KEY=sk-lf-...
LANGFUSE_BASE_URL=https://langfuse.example.com
Usage:
from runlet import CompositeEventSink, InMemoryObserver, Runtime
from runlet_harness.observability import LangfuseEventSink
observer = InMemoryObserver()
langfuse = LangfuseEventSink.from_env()
sinks = [observer]
if langfuse is not None:
sinks.append(langfuse)
runtime = Runtime(event_sink=CompositeEventSink(sinks))
try:
result = await runtime.run(agent, "hello")
finally:
if langfuse is not None:
await langfuse.shutdown()
By default, the Langfuse sink records metadata, status, timing, tool names, and final outputs. It does not record inputs, reasoning, streaming deltas, tool arguments, tool results, or human-submitted values unless explicitly configured.
Development
Run the test suite:
PYTHONPATH=src python -m unittest discover tests
Run type checking after installing development dependencies:
pyright
Release
Runlet Harness publishes to PyPI from Git tags through GitHub Actions.
Typical release flow:
- Update the version in
pyproject.toml. - Merge to
main. - Create a tag such as
v0.1.0a1. - Push the tag.
git tag v0.1.0a1
git push origin v0.1.0a1
Metadata
Release files for runlet-harness 0.1.0a5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| runlet_harness-0.1.0a5.tar.gz | 14.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| runlet_harness-0.1.0a5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.2 kB
Release files / runlet_harness-0.1.0a5.tar.gz
| Download URL | runlet_harness-0.1.0a5.tar.gz |
|---|---|
| Size | 14.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
648a2b3ab67d5566cf9a8bb0aba2ce9f11e11df4b2e434fd1a6232ce3637f0db
|
|
BLAKE2b-256 checksum How to use checksums |
fba05d240557fb1c773ac2b426394dee67d84c6593dcf8ff5e91bb116049d3fe
|
| 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 Aug 23, 2026.
Transparency logRelease files / runlet_harness-0.1.0a5-py3-none-any.whl
| Download URL | runlet_harness-0.1.0a5-py3-none-any.whl |
|---|---|
| Size | 10.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ef968b2bba29c842ccb749d7014539810ef4c1247c617eedd8d7c46bd8f4a7c4
|
|
BLAKE2b-256 checksum How to use checksums |
465d994d354290567e2d90c1df7462689bf8a0bb887bd09b721860a5c2c4087b
|
| 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 Aug 23, 2026.
Transparency log