Skip to content

Using the SDK

Install

Jeff has SDKs in five languages. They share the same functions, decisions, errors and error messages. Choose your language in the tabs of any example on these pages, and every page will show code in that language.

LanguagePackageNeedsMore
Pythonjeff-sdk (imported as jeff)Python 3.13 or laterPython
Nodejeff-sdkNode 22 or laterNode
Rustjeff-sdk (imported as jeff_sdk)Rust 1.99.1 or later, TokioRust
C#Jeff.Sdk.NET 8 or laterC#
Javaai.jeffhub:jeff-sdk (Java package ai.jeff.sdk)Java 21 or laterJava

The packages are published on PyPI, npm, crates.io, NuGet and Maven Central:

bash
pip install jeff-sdk                   # Python
npm install jeff-sdk                   # Node
cargo add jeff-sdk                     # Rust
dotnet add package Jeff.Sdk            # C#

For Java, add ai.jeffhub:jeff-sdk:1.4.0 to your Maven or Gradle build (Java). The source of every package is in the repository github.com/firelex/jeff.

An SDK package is all you need to call a Jeff server through the API. Each also includes a copy of the catalogue: the manifest for every open adapter, describing each function, the context it takes and the answers it can return.

On your machine

The models run only in the Jeff engine, the Python package jeff-runtime. To run them on your own machine, install it with the Python SDK:

You want toInstall
Call a Jeff server from Pythonpip install jeff-sdk
Serve Jeff's functions to an AI agent as MCP tools (jeff mcp)pip install "jeff-sdk[mcp]"
Run the models on your own machine, from any languagepip install jeff-sdk jeff-runtime

jeff-runtime selects its backend automatically: on an NVIDIA GPU it uses its fast path, on Apple silicon it uses MLX, and anywhere else it uses PyTorch on the CPU. Two jeff-runtime extras provide the dependencies for the first two backends:

bash
pip install jeff-sdk "jeff-runtime[mac]"    # Apple silicon: MLX
pip install jeff-sdk "jeff-runtime[cuda]"   # NVIDIA GPU: the fast path's kernels

Python loads the engine into its own process with Jeff.local. Without jeff-runtime, Jeff.local raises RuntimeMissing; on Apple silicon without the mac extra, it raises BackendUnavailable, naming the extra to install. Node, Rust, C# and Java attach to an engine you start with jeff runtime serve, which comes with the Python packages (see Connect).

The Python package also includes the jeff command (see The jeff command).

Check that it works

This check needs no server or model: it reads the catalogue included with the package.

import jeff

catalogue = jeff.Catalogue.shipped()

print(len(catalogue.manifests()), "adapters in the catalogue shipped with jeff")

Next steps

  • Connect: reach a server, or run the models on your own machine.
  • Functions: bind a function and read its decisions.
  • Quick start: one call with curl and from Python, end to end.