Skip to main content

Fast, lightweight AI agents powered by a Rust core

Project description

Ferrant Logo

ferrant Python wrapper

This directory is an optional, thin Python binding around the Rust ferrant crate. The agent loop, providers, MCP, graph scheduler, persistence, streaming, and retrieval remain implemented in Rust. Installing this package does not change the Rust crate or its examples.

pip install ferrant

Then import it directly:

import asyncio
import os
from ferrant import Agent

async def main():
    agent = Agent.openai("gpt-5-nano", os.environ["OPENAI_API_KEY"])
    print(await agent.run("Explain Rust ownership in one paragraph."))

asyncio.run(main())

For local wrapper development, use maturin develop --release from this directory. End users do not need Maturin or a Rust toolchain when installing a prebuilt wheel.

pip install ferrant also installs the ferrant command. Run ferrant init to create a function-based Python agent, ferrant run to host it locally, and ferrant deploy to start a new container from ferrant-runner:latest. See the repository's docs/deployment.md for the deployment contract.

The wheel uses PyO3's stable ABI for Python 3.9+. Rust futures are exposed as normal asyncio awaitables. Python custom-tool and graph-node callbacks are synchronous by design; keep expensive execution in Rust tools, MCP servers, or model calls.

See examples/ for Python counterparts of every top-level Rust example and matched advanced workflow examples.

Focused Python examples

Run these from the python-wrapper/ directory after installing the package:

python examples/streaming.py
python examples/memory.py
python examples/rag.py
DOCUMENT_PATH=invoice.pdf python examples/document_extraction.py
DOCUMENT_PATH=invoice.pdf python examples/rag_document_extraction.py
  • streaming.py prints content_delta events as the model generates them.
  • memory.py stores a session in .ferrant/sessions and recalls a prior turn.
  • rag.py persists a local hybrid vector index, retrieves relevant documents, and provides the matches as grounded agent context.
  • document_extraction.py base64-encodes a local PDF and asks OpenAI to extract invoice fields. Set DOCUMENT_PATH to a PDF and OPENAI_API_KEY before running it.
  • rag_document_extraction.py transcribes a local PDF with OpenAI, indexes the text locally, retrieves invoice-relevant passages, and returns schema-validated extraction results. Set DOCUMENT_PATH to a PDF.

The exposed surface covers OpenAI-compatible and Anthropic agents, Python tools, MCP-discovered tools, coordinator teams, multimodal input/output, streaming callbacks, schema-validated output, persistent retrieval, and durable workflow graphs with routes, parallel joins, retry/timeout policies, interrupts, resume, and recovery.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ferrant-0.1.13-cp39-abi3-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.9+Windows x86-64

ferrant-0.1.13-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

ferrant-0.1.13-cp39-abi3-macosx_11_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file ferrant-0.1.13-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: ferrant-0.1.13-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ferrant-0.1.13-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c2f6eb551af5f7394a4ca9955bf49cb4c4736507276976d5f11d7512ccd0abe4
MD5 b0edb691d3b973f971e3978475328039
BLAKE2b-256 e9d9adf4b19127255e9c18293051382a8dcdb2c0ed522287545b6586f2a8b437

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferrant-0.1.13-cp39-abi3-win_amd64.whl:

Publisher: python-wheels.yml on avinash31d/ferrant

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferrant-0.1.13-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ferrant-0.1.13-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 51e49cb10148694bcde2163e319d0483961920df9707f00285d789c0967d03b1
MD5 09e7cbd4631472c1fec397b40e66d9be
BLAKE2b-256 95d8ba92294c3f9cb1d63f4de484e9865a8c2f15af49f2e484b64cca04d0e908

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferrant-0.1.13-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-wheels.yml on avinash31d/ferrant

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ferrant-0.1.13-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ferrant-0.1.13-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf7746baf8960982049b37ceb22f40daeb82fc305033668fbfd10c0320c002b5
MD5 146c242f557fe37c2c6237390052e015
BLAKE2b-256 5947afee37eb523abeed7deb6f7ffbd69839a101e5bd4b23a335b2383cf822d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ferrant-0.1.13-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: python-wheels.yml on avinash31d/ferrant

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page