This release is a pre-release and may not be stable for production use.
hivemind-a2a-agent-plugin
An agent-protocol plugin for HiveMind that connects the hive to external A2A (Agent-to-Agent) agents.
The plugin forwards natural-language queries from hive satellites to a configured A2A server over JSON-RPC 2.0 (tasks/send or tasks/sendSubscribe). It streams the response back to the satellite that sent the query.
What is A2A?
A2A is an open protocol for agent interoperability. An A2A server does two things:
- It publishes an agent card at
GET /.well-known/agent.json. The card describes the server's capabilities, skills, and the URL that accepts tasks. - It accepts task requests as JSON-RPC 2.0 at its root URL. A request is either a blocking
tasks/sendcall or a streamingtasks/sendSubscribecall (SSE).
Any compliant A2A server works as a backend for this plugin, including LangChain agents, Google ADK, CrewAI, and custom FastAPI services.
Installation
pip install hivemind-a2a-agent-plugin
The plugin registers itself under the hivemind.agent.protocol entry-point group. HiveMind-core discovers it automatically once it is installed.
Configuration
Add the following to your OVOS / HiveMind config, typically at ~/.config/hivemind/hivemind.conf:
{
"hivemind": {
"agent_protocol": "hivemind-a2a-agent-plugin",
"a2a_agent": {
"agent_url": "http://localhost:9999",
"auth_header": "Bearer secret",
"timeout": 60,
"streaming": false
}
}
}
| Key | Default | Description |
|---|---|---|
agent_url |
none | Required. Root URL of the A2A server. |
auth_header |
none | Optional Authorization header (e.g. Bearer …). |
timeout |
60 |
HTTP timeout in seconds. |
streaming |
false |
Prefer tasks/sendSubscribe (SSE) when true. |
Hive wiring example
HiveMind master
└── hivemind-a2a-agent-plugin ← loaded as agent_protocol
└── A2A server (http://localhost:9999)
└── your LLM / agent / tool backend
Satellite (voice client, phone, …)
→ "what's the capital of France?"
→ HiveMind master receives utterance
→ plugin forwards to A2A server via tasks/send
→ A2A server responds: "Paris is the capital of France."
→ HiveMind master streams answer back to satellite
Run a minimal FastAPI A2A server and the HiveMind master:
# 1. run the example mock A2A server (also used by e2e tests)
uvicorn tests.e2e.mock_a2a_server:app --port 9999
# 2. configure hivemind-core to use this plugin (see above)
# 3. start hivemind-core
hivemind-core listen
Session and context mapping
The plugin maps the HiveMind session_id directly to the A2A sessionId parameter, so multi-turn conversations keep their context on the A2A server side. The plugin stores no extra state. The A2A server owns the conversation history.
Error handling
The plugin never silences errors. The A2A server may be unreachable, return an empty response, or return a JSON-RPC error object. In each case, the plugin yields a human-readable error string to the satellite so the user always gets a reply.
Development
git clone https://github.com/TigreGotico/hivemind-a2a-agent-plugin
cd hivemind-a2a-agent-plugin
pip install -e ".[dev]"
pytest tests/ # unit tests (no server needed)
pytest tests/e2e/ # e2e tests (spins up a FastAPI mock server in-process)
Related projects
- JarbasHiveMind/HiveMind-core: the HiveMind master this plugin connects to.
Credits
Funded by NGI0 Commons Fund / NLnet under grant agreement No 101135429, through the European Commission's Next Generation Internet programme.
Metadata
Release files for hivemind-a2a-agent-plugin 0.1.1a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hivemind_a2a_agent_plugin-0.1.1a1.tar.gz | 11.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hivemind_a2a_agent_plugin-0.1.1a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.8 kB
Release files / hivemind_a2a_agent_plugin-0.1.1a1.tar.gz
| Download URL | hivemind_a2a_agent_plugin-0.1.1a1.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e29da90862b80231e6464c9310d4c7315e45fc50d729c5e86d73d37a39187876
|
|
BLAKE2b-256 checksum How to use checksums |
43fd5cc008ed9581e72077629300f5140d8d1e6596d37e9238c67c8df25713ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / hivemind_a2a_agent_plugin-0.1.1a1-py3-none-any.whl
| Download URL | hivemind_a2a_agent_plugin-0.1.1a1-py3-none-any.whl |
|---|---|
| Size | 9.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78ea1daefcdcfb2fd368c19aa16ae5f88582a62072e2b4a6ff5080c1e9ace249
|
|
BLAKE2b-256 checksum How to use checksums |
47f33ae0079d53c134b62736189335359ae73e1386b6ffcc00bd2adf3fa919aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|