Backend for Agents SDK (BFA) & IRC-A Protocol
A generic and opinionated framework and SDK to implement the BFA (Backend for Agents) pattern and the IRC-A (Internet Relay Chat for Agents) protocol, featuring native support for FAISS-based Semantic Routing (vector search), asymmetric zero-trust security boundaries, and standard abstractions for A2A Agents and MCP Servers.
Read the official protocol specification: 👉 IRC-A Protocol Whitepaper (v1.0.0) - Decentralized Agent Networks, Semantic Capability Routing, and Secure-by-Design Software Architecture.
Multilingual Documentation
BFA / IRC-A Protocol Architecture
The BFA Gateway acts as a semantic middleware and registry broker layer between consumers (e.g., messaging UIs, chat systems) and specialized agents/tools.
graph TD
Consumer["Consumer UI / Whatsapp / WebApp"] -->|1. Resolve Query| BFA[BFA Gateway]
subgraph BFA_Gateway ["BFA Gateway (Backend for Agents)"]
Router[Semantic Router] -->|2. Search Embeddings| FAISS[FAISS Vector Store]
Registry[Registry] -->|Load metadata| Router
end
BFA -->|3. Route & Invoke| Agent1["Cuentas Agent (A2A)"]
BFA -->|3. Route & Invoke| Agent2["Tarjetas Agent (A2A)"]
BFA -->|4. Execute Tool| MCP1["MDBank MCP (FastMCP)"]
Key Features
- FAISS-Based Semantic Routing: Instead of matching exact keywords (like BM25), the BFA Gateway indexes the descriptions, tags, and examples of agents and tools in a local FAISS vector index. This resolves queries to matching functions even when synonyms are used (e.g., matching "plastic" to "credit card").
BFAAgentAbstraction: Simplifies building A2A agents using thea2a-sdkand Starlette. Forces standard metadata declarations (tags,examples,description) required for semantic indexing.BFAMCPAbstraction: Wraps and extendsFastMCPservers. Automatically exposes a standardized/toolsendpoint returning input schemas, descriptions, and custom tags/examples for discovery.- Secure-by-Design IRC-A Security (Roadmap): Employs asymmetric challenge-response registration handshakes, logical channel masking (via container-level
IRCA_CHANNELSenv variables) to segregate vector search spaces, and Ephemeral DET (Delegated Execution Tokens) to enable direct decentralized P2P invocation without gateway bottlenecks. - Serverless (AWS Lambda) Ready: Includes a built-in Mangum adapter in the Gateway. Combined with the cloud-based
OpenAIEmbedder, the BFA Gateway runs serverless on demand with zero cold-starts.
Configuring Embedding Providers & Chunking
The BFA Gateway uses semantic embeddings to index agent/tool metadata in FAISS. You can choose between local models, cloud APIs, or offline mock routing via environment variables:
| Mode / Provider | Environment Variables | Dependencies | Description |
|---|---|---|---|
| Local Real (Default) | None | bfa-sdk[local] |
Uses sentence-transformers locally. Recommended for Python <= 3.12 environments. |
| OpenAI (Cloud) | BFA_USE_OPENAI_EMBEDDINGS=true, OPENAI_API_KEY="..." |
openai |
Queries OpenAI's text-embedding-3-small endpoint. Perfect for serverless/Lambda environments. |
| Offline Mock (Feature Hashing) | BFA_USE_MOCK_EMBEDDINGS=true |
None | Uses a stable MD5 feature hashing trick to route queries based on keywords. Zero dependencies, fast, and local. |
Installation
You can install the BFA SDK directly from GitHub using pip:
# Install the development version from the main branch
pip install git+https://github.com/SandroG1977/bfa-sdk.git
# Or install a specific version with the secure IRC-A protocol support
pip install git+https://github.com/SandroG1977/bfa-sdk.git@feature/docstrings-init
Running the Demo
2. Run the MDBank Demo
The demo launches three mock servers in the background:
- A mock MDBank MCP server (
examples/mock_mdbank_mcp.py) on port8001. - A mock Cuentas A2A Agent (
examples/mock_cuentas_agent.py) on port8002. - A mock Tarjetas A2A Agent (
examples/mock_tarjetas_agent.py) on port8003. - The BFA Gateway on port
8000, running dynamic discovery and performing test queries.
To run:
python examples/run_demo.py
3. Run the UI Dashboard (IRC-A Central Hub)
We have included a React-based UI Dashboard under examples/frontend to visually monitor the active agents/tools registry, register new microservices dynamically (plug-and-play), and chat with the routed banking agents:
# Navigate to the frontend folder
cd examples/frontend
# Install dependencies
npm install
# Start the development server
npm start
Open http://localhost:3000 to interact with your local agent hub in real-time.
Credits & Acknowledgements
This SDK is a community-driven implementation and expansion of the BFA (Backend for Agents) architectural pattern originally designed and documented by Michael Douglas Barbosa Araujo (Staff AI Architect).
You can read his original article introducing the pattern here: 👉 O padrão Back-end para Agentes (BFA) - Medium
The goal of this project is to provide a standardized, packaged SDK extending his original concept with semantic vector routing (FAISS) and unified base adapters. All credit for the underlying protocol and architectural vision belongs to him.
Release files for bfa-irc-a-sdk 0.1.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 | |
|---|---|---|---|
| bfa_irc_a_sdk-0.1.0.tar.gz | 32.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bfa_irc_a_sdk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.7 kB
Release files / bfa_irc_a_sdk-0.1.0.tar.gz
| Download URL | bfa_irc_a_sdk-0.1.0.tar.gz |
|---|---|
| Size | 32.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f53fd03771f78b7d6918589296e34ea3a0e4f7abce3023110f71a02fd587701
|
|
BLAKE2b-256 checksum How to use checksums |
bb0890912d0ea01990f3308aacbee8407e14266bfc56c47d3717faef833298bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 14, 2026.
Transparency logRelease files / bfa_irc_a_sdk-0.1.0-py3-none-any.whl
| Download URL | bfa_irc_a_sdk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
229741bbf2b6ed329fd437ed75e5a5127c27174af0ff5771de1d8546eae6ffa7
|
|
BLAKE2b-256 checksum How to use checksums |
335357bdf32d90fbd3443ff514fcf021805343a8bf30000b0b9f8829eacac4c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 14, 2026.
Transparency log