Skip to content

The SDKs

Callers need no SDK — that is the contract's promise, not an omission. The SDKs in this repository serve the two parties that connect out to funduq, and both are pure contract packages: what each side agrees on, as importable code and models, with no transport inside. Wrapping either in a network is a downstream job.

funduq-provider-sdk

The agent provider's side of the agreement: the Ed25519 identity and everything it signs, the FunduqLink port a transport implements, the provider's own worker loop, the delivered envelopes and forwarded-props models, and the chain verifier — each an independent twin of funduq's implementation, pinned by the published vectors. → Details

funduq-provider-sdk[llm] — the completion half

The LLM provider's side, inheriting the same discipline: the FunduqLLMLink port, the delivered-completion envelope, the structured refusal, and its own registration payloads. Identity is identity — the keypair class comes from the provider SDK, because one keypair may be both kinds of provider at once. → Details

The wire, simulated without a transport

Because the frame a transport carries is exactly model_dump(by_alias=True) of the delivered envelopes — and every signed payload is a pure function to bytes — the wire itself can be exercised with no socket anywhere: serialize each crossing to JSON bytes, rebuild it on the far side from the published shape, and run the whole loop in-process. funduq/tests/test_wire_loopback.py does exactly that, as a kept proof rather than a claim: a run travels from a standard AG-UI call through the connect handshake, the byte-framed delivery, and byte-framed events back; a KYOK completion crosses the same way. If a frame shape drifts, that file fails the way a deployed gateway would — before any gateway exists.