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.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fiberd-0.2.0.tar.gz | 105.5 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fiberd-0.2.0-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.0-cp314-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl | CPython 3.14 | abi3 | Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 | Details |
Total release size: 346.2 kB
Release files / fiberd-0.2.0.tar.gz
| Download URL | fiberd-0.2.0.tar.gz |
|---|---|
| Size | 105.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b8944f59dddd396d3be3c735f8eb7d74d5fa7ba8dbe347848d79cc7f9cf19af7
|
|
BLAKE2b-256 checksum How to use checksums |
11824fb68f021ca5bfce75a1a345e50db82b779f1bea05b18f670782ecfdd35b
|
| 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 15, 2026.
Transparency logRelease files / fiberd-0.2.0-cp314-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fiberd-0.2.0-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 |
8a23f782896b787936e1c4dac69dd987bc66c42c47545c64ce3c1d13fe3c2bc3
|
|
BLAKE2b-256 checksum How to use checksums |
fbbce699f5d800fd98fd7e042d92285885bb60a541c32d2aad241b5fe053cd15
|
| 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 15, 2026.
Transparency logRelease files / fiberd-0.2.0-cp314-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | fiberd-0.2.0-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 |
da93306d452da26a85f0af53e94cdd6f7de22486fd868ca9c1cbf4b0d8d2b290
|
|
BLAKE2b-256 checksum How to use checksums |
c3b53c5109ad97ae9639bc802202eeed372ef0bbe51c8285cdf7a40e1f7ac40e
|
| 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 15, 2026.
Transparency log