StackA2A
generalpython

A2a4af

21

by mieckert

Toy project to make Agentforce accessible via A2A protocol

Updated 2025-10-09
Quality Score21/100
Community
0
Freshness
29
Official
30
Skills
10
Protocol
30
🔒 Security
20

Getting Started

1Clone the repository
$ git clone https://github.com/mieckert/a2a4af
2Navigate to the project
$ cd a2a4af
3Install dependencies
$ pip install -r requirements.txt
4Run the agent
$ python main.py

README

Agent-to-Agent (A2A) Protocol Proxy for Agentforce

This project is a proxy/wrapper/bridge to make Agentforce Agents available via the A2A Protocol by running a small A2A server that translates calls to the Agentforce Agent API and automatically provides an Agent Card (based on the Agent's description metadata for the Agent and its topics configured in Agent Builder)

Important: this is an early stages "toy project" for exploration, not something that aims at achieving production quality. It is not an official project or product and not related to the built-in A2A support in Agentforce

How to use it

  • Create a Connected App (for Client Credentials with JWT Tokens) and add it as an API connection to your Agent. Refer to the Agent API Getting Started Guide for details.
  • Set the environment variables SF_CLIENT_ID, SF_CLIENT_SECRET, SF_DOMAIN, SF_AGENT_DEVELOPERNAME, SF_AGENT_ID as in example-env.sh
  • Run the server with uv run main.py
  • Run a test client with uv run test_client.py or by using the A2A Demo App from the examples for the official A2A SDK (adding localhost:9999 as agent in the respective tab)

TODOs

  • Retrieval of agent metadata is incomplete and incorrect; in particular
    • Your need to supply both the Agent's Developer Name and its Id (prefix 0Xx);
    • Currently all topics in the org (rather than in the agent) from the metadata table GenAiPluginDefinition are used as agent skills; it should filter based on the agent
    • The GenAiPluginDefinition table does not contain Standard Topics (though it does contain modified versions of them)
  • Only very simple text messages are supported, not streaming, no smart filtering of reponses etc.
  • AgentExecutor makes synchronous callouts to the AgentAPI, potentially blocking the main thread
  • Security is based on the fact that the proxy runs on your local machine. There is no further security concept

Capabilities

StreamingPush NotificationsMulti-TurnAuth: none
a2a-serveragentforce
View on GitHub