Import components.
Meet their A2A agents.

git-a2a is a cross-platform component dependency manager. It applies code through the consumer's own tools and carries the owning Agent Card and optional published surface at the same Git revision.

One agent is responsible for one repository. An external A2A client performs communication; git-a2a manages dependency code and metadata.

my-app — example session
$ git-a2a init --id my-app
Created a2amodule.yml.
$ git-a2a add https://github.com/acme/utils
utils added through npm.
$ git-a2a list
utils · acme-utils · npm/npm
$ git-a2a whose utils
agent: utils-agent
card: .git-a2a/agents/utils/agent-card.json
surface: .git-a2a/surfaces/utils
$ git-a2a pull utils
Updated code, Agent Card and surface.
$ git-a2a remove utils
Removed utils from this project.
$

Illustrative session · example repository, simplified output. Ask the owner through an external A2A client; then pull the updated component.

The owner loop in one diagram

Dependency metadata connects repositories; an external client connects agents. Code and conversation travel on visibly separate paths.

git-a2a applies and inspects the dependency. It exposes the Agent Card; it does not send the A2A request or run either agent.

Commands

Add components, find their owners, and keep dependencies up to date.

git a2a init

Set up git-a2a in your repository.

The schema 2 manifest

One component, at most one responsible external agent, an optional readable surface, and direct dependencies.

a2amodule.yml
schema: 2
component:
  id: acme-lib-utils
  repository: https://github.com/acme/lib-utils.git
  surface: docs/public
  exports:
    - adapter: npm
      name: "@acme/lib-utils"
    - adapter: pypi
      name: acme-lib-utils
agent:
  name: lib-agent
  card: .well-known/agent-card.json

component + exports

The repository publishes one component and names its platform adapters. All bindings use the same resolved commit.

agent.card

The Agent Card says how an external A2A client can reach the one agent responsible for this repository. git-a2a preserves the reference; it does not duplicate the card.

surface

An optional tracked part of the component published for reading at the applied revision. It is metadata, not an installation mechanism.

a2amodule.lock

Records the exact commit, adapter variants, usable card reference, and surface provenance after a successful transaction.

Works with what you have

Native managers own their declarations and locks. Build adapters share one submodule checkout; submodule is also the explicit fallback adapter.

Native Git dependencies
npmYarnpnpmBunuvPoetryPDMPEP 621GoCargoSwiftPMPubBundlerComposerHexCabalStackZigClojureNix
Submodule + build integration
CMakeGradleMSBuildMavenMeson
Dependency contract
one repositoryone responsible agentone applied commitoptional surfaceA2A Agent Card

Run the complete owner loop

The published ACME demo turns the diagram into a reproducible local run.

Docker with Compose · sibling repositories
git clone https://github.com/neprel/git-a2a-demo-acme-lib.git
git clone https://github.com/neprel/git-a2a-demo-acme-app.git
cd git-a2a-demo-acme-app
./demo/run.sh

# Short npm-only profile
DEMO_PROFILE=npm ./demo/run.sh

real boundaries

Deterministic agents need no LLM API keys. A separate demo client uses real A2A transport; git-a2a 2.0.0 manages dependency code and metadata.

local and reproducible

Temporary local Git remotes drive the owner commit and pull. The demo agents exist only for the run; they are not permanently available public services.

Install v2.1.1

One Go binary, distributed through the package managers you already use. Pin an explicit version in CI.

curl -fsSL https://git-a2a.com/install.sh | bash
irm https://git-a2a.com/install.ps1 | iex

The second command is for Windows PowerShell. Both installers verify release checksums.

Keep the boundaries clear

Agent Card

Describes how an external A2A client reaches the responsible repository owner.

External A2A client

Sends the request and carries the conversation. git-a2a does neither.

Published surface

Owner-selected, tracked material for reading at the applied component revision.

Native adapters

Apply, update, restore, inspect, and remove code through saved platform variants.