generalpython
A2a4af
21by 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.pyor 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
GenAiPluginDefinitionare used as agent skills; it should filter based on the agent - The
GenAiPluginDefinitiontable does not contain Standard Topics (though it does contain modified versions of them)
- Your need to supply both the Agent's Developer Name and its Id (prefix
- 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