A2A configuration has no runtime effect in `jarvis serve`: clarify library-only versus mounted protocol support

Author: SeCuReDmE-main-devCreated Aug 21, 2026Updated Aug 24, 2026
Labelsworkstream:agentsplatform:windows

Problem

While following up on the focused-issue guidance in #298, I found that A2AConfig.enabled is part of the loaded configuration, but toggling it does not change the FastAPI surface created by jarvis serve.

This is not a claim that OpenJarvis must expose A2A over the network. PR #416 explicitly described the authenticated A2AServer as defense in depth because the library was not mounted at that time. I am asking which contract is intended before proposing code.

Reproduction

At 759bfd0b98e9f0d391aa8482ca7b3c7dbd5bceea, I created the real app with a deterministic mock engine and sent ASGI requests with a2a.enabled=false, then true.

Probe disabled enabled
/.well-known/agent.json 404 404
/a2a/tasks 404 404
/.well-known/agent-card.json 404 404
/message:send 404 404
/tasks/{id} 404 404
/tasks/{id}:cancel 404 404

Both apps exposed 67 routes and no A2A route. Direct calls to A2AServer.handle_request did pass send/get/cancel and bearer-auth tests. The result is therefore a configuration/runtime wiring gap, not a failure of the existing library tests.

The probe was reproduced twice on Windows/Python 3.13.7. Four laboratory tests and the relevant OpenJarvis suites passed (241 passed, 4 skipped).

Protocol boundary

I did not mount the existing route declarations because the current official A2A contract differs from the local historical surface: the public discovery path is /.well-known/agent-card.json, HTTP+JSON uses /message:send and task resource routes, and requests participate in A2A-Version negotiation. The official Python v1.0 migration also changes the data model and offers direct Starlette/FastAPI integration.

I have not run the A2A TCK as a conformance claim because OpenJarvis currently does not advertise a mounted version/transport. That result is marked NOT_APPLICABLE, not pass or fail.

Relationship to existing work

  • #298 asked that any remaining bridge become a focused issue with an executable acceptance test.
  • #416 secured the library in anticipation of a possible future mount.
  • #474 discusses a broader coordination substrate; this issue does not propose Mycelium, shared memory, or distributed coordination.
  • #438 already completed the independent Windows installation/service work.

Maintainer question

Should A2A remain a library-only capability, in which case a2a.enabled should be clarified/deprecated, or should it activate a mounted protocol surface in jarvis serve, in which case which A2A version and transport should be the supported contract?

I will not open a PR until that boundary is clear. I can provide the complete probe and machine-readable results if useful.

Disclosure: I used Codex to assist with repository analysis, test execution, and drafting; I reviewed the reproduction and conclusions before posting.