Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

fiberd for Python

The Python SDK. fiberd.template is for code that runs inside a fiber, such as an AI agent. fiberd.client is for callers of fiberd, such as the activator that asks for one.

Install

pip install fiberd

The wheels are for CPython 3.14 or later on Linux, x86_64 or aarch64, with glibc 2.28 or later. Anywhere else pip builds the sdist. On Linux that needs a C compiler and the Python headers. Off Linux it builds without the extension. There fiberd.client works and fiberd.template raises ImportError when used.

Template

A template warms up once and forks a fiber for every Clone. Call init() first, do the warm-up, then serve(on_fiber).

import json
import fiberd.template as ft

ft.init()                                # first line, before any thread

# Your own slow setup goes here (imports, model weights, config). It runs
# once, and every fiber is a fork of this process, born with it loaded.
with open("prompts.json") as fp:
    prompts = json.load(fp)

def on_fiber(f: ft.Fiber) -> int:        # runs in the fiber
    task = json.loads(f.payload)         # the bytes the caller sent with the Clone
    def handle(conn):
        question = conn.recv(4096).decode()
        conn.sendall(f"{prompts[task['kind']]} {question}".encode())
    f.serve(handle)                      # listens on f.endpoint, reports ready, hands each connection over
    return 0

ft.serve(on_fiber)

fiberd-template pkg.module:on_fiber runs a module the same way, with init() before the import.

A Fiber carries fence, fence_parts, endpoint, kind (unix, tcp or handoff), payload, session, env, incarnation and backend (fork or gvisor). listen() returns a bound socket for an author who runs their own server, ready() reports to fiberd once listening, check_fence() notices a resume, and stopping is set when the fiber is asked to stop. @ft.on_incarnation runs a function in every copy of the template, after random and OpenSSL are reseeded. The rules serve() enforces, and why, are in docs/design/sdk.md.

A handoff fiber listens on nothing. f.serve(handle) works the same there. Each conn is an ssl.SSLSocket, with TLS terminated under the grant's identity and the bound caller's certificate the one the handshake admits, as f.accept() returns it.

on_fiber may be async def. Then await f.serve_async(handler) serves an async def handler(reader, writer), and async for reader, writer in f.connections() is the async twin of accept().

Client

A caller holds a signed grant and asks a home for fibers under it. pip install 'fiberd[client]' adds grpcio and protobuf, which a template never needs.

import time
from fiberd.client import Client, Shed, Deferred

def clone(c, jwt, session):
    while True:
        try:
            return c.clone(jwt, session=session, payload=b'{"task":1}')  # a Fiber, with id, fence, endpoint and kind
        except Shed as e:                                                 # the home is busy, retry after the hint
            time.sleep(e.retry_after)

with Client.dial_tls("home:7443", cert="me.pem", key="me-key.pem", ca="ca.pem") as c:
    try:
        f = clone(c, jwt, "conv-42")
    except Deferred as e:              # this home cannot serve it, take the ordinary path or go to e.preferred_home
        raise SystemExit(f"deferred: {e.reason}")
    with f.dial() as sock:             # its unix or tcp endpoint
        sock.sendall(b"hello\n")
    c.park(f)                          # checkpoint it and free its place
    f = clone(c, jwt, "conv-42")       # kind RESUME, under the next fence
    c.release(f, discard=True)         # end it, and drop its parked delta

Client.dial(addr) is the plaintext form for a home started with -insecure-plaintext. A handoff fiber is reached with f.dial_handoff(cert, key), which sends its routing key as the server name, admits only the fiber's certificate from the Clone in the handshake and checks its key pin after it. TierGap and NotFound are the other typed outcomes, and any other failure is the grpc.RpcError as raised. c.watch() yields one status per grant as the home publishes it. fiberd.client.aio.Client has the same methods as coroutines, with watch as an async iterator. The token is accepted as a string or a callable that returns one, and it is never stored, logged or shown by a repr.

Build and test

The extension needs Linux and a C toolchain. In the dev container, from the repository root.

make python-test            # build the extension in place and run the unit tests
make conform-proc-python    # C1-C10 against the reference template, fiberd.template.ref
make conform-gvisor-python  # the same on gVisor, from a rootfs hack/python/rootfs.sh builds with CPython in it
make conform-runc-python    # and on runc, from the same rootfs
make python-dist            # the sdist, a wheel built from it, and the unit tests against that wheel

The same template serves on proc, runc and gVisor. On runc and gVisor it runs from a root filesystem that holds the interpreter and the package, which hack/python/rootfs.sh <dir> builds from the dev image for those runs.

Elsewhere, pip install -e 'sdk/python[client]' cryptography builds it with what the client's tests import, and python3 -m pytest sdk/python runs the unit tests, which start no process.

Metadata

Release files for fiberd 0.2.0rc2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fiberd 0.2.0rc2
File Size Uploaded Provenance
fiberd-0.2.0rc2.tar.gz 105.5 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for fiberd 0.2.0rc2
File Interpreter ABI Platform
fiberd-0.2.0rc2-cp314-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 abi3 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
fiberd-0.2.0rc2-cp314-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 abi3 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details

Total release size: 346.4 kB

Release files / fiberd-0.2.0rc2.tar.gz

Download URL fiberd-0.2.0rc2.tar.gz
Size 105.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e9836118fe0f540ed7d53a05b5727e948ef093763a3a4c091ace8a7049839422
BLAKE2b-256 checksum
How to use checksums
20e0530904abcf68893d1049de0928635883b383e710bdad2a29b948e4bb8719
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 16, 2026.

Transparency log

Release files / fiberd-0.2.0rc2-cp314-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL fiberd-0.2.0rc2-cp314-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 120.2 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
37be221a523933297f78c5eb7dc24a2d26d1f893279f8b533add72cd28eb3ea3
BLAKE2b-256 checksum
How to use checksums
e04b61ae646d29027c39289e3a1b5d8956081b5159ca0addaf36616182028433
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 16, 2026.

Transparency log

Release files / fiberd-0.2.0rc2-cp314-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL fiberd-0.2.0rc2-cp314-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 120.6 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
bd7882a2bc5bc75fe708682cb7328f31ccce5762e9e9a0335012e970a6e2af52
BLAKE2b-256 checksum
How to use checksums
34f2b675b3136aad0b9fa49be399aa6657de5ed79a73cfa4878ca47fea4cda5a
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 16, 2026.

Transparency log

Security for fiberd 0.2.0rc2

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 3 files in this release have been uploaded with provenance metadata.

Select from 3 files

Attestation for fiberd-0.2.0rc2.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 16, 2026.

Transparency log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page