{"id":36429140,"url":"https://github.com/a2aproject/a2a-go","last_synced_at":"2026-03-17T12:15:06.006Z","repository":{"id":300822119,"uuid":"993438307","full_name":"a2aproject/a2a-go","owner":"a2aproject","description":"Golang SDK for A2A Protocol","archived":false,"fork":false,"pushed_at":"2026-03-16T16:28:10.000Z","size":1430,"stargazers_count":292,"open_issues_count":20,"forks_count":63,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-03-16T22:03:10.269Z","etag":null,"topics":["a2a","a2a-client","a2a-protocol","a2a-server","agent-server","agent-to-agent","agents","ai","go","multiagent-systems","protocol","sdk"],"latest_commit_sha":null,"homepage":"https://a2a-protocol.org/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/a2aproject.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-05-30T19:42:21.000Z","updated_at":"2026-03-16T16:27:41.000Z","dependencies_parsed_at":"2026-01-28T13:03:17.157Z","dependency_job_id":null,"html_url":"https://github.com/a2aproject/a2a-go","commit_stats":null,"previous_names":["a2aproject/a2a-go"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/a2aproject/a2a-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2aproject%2Fa2a-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2aproject%2Fa2a-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2aproject%2Fa2a-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2aproject%2Fa2a-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/a2aproject","download_url":"https://codeload.github.com/a2aproject/a2a-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a2aproject%2Fa2a-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30623653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T11:26:08.186Z","status":"ssl_error","status_checked_at":"2026-03-17T11:24:37.311Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a2a","a2a-client","a2a-protocol","a2a-server","agent-server","agent-to-agent","agents","ai","go","multiagent-systems","protocol","sdk"],"created_at":"2026-01-11T19:00:25.887Z","updated_at":"2026-03-17T12:15:06.001Z","avatar_url":"https://github.com/a2aproject.png","language":"Go","funding_links":[],"categories":["Libraries by Language","🧩 Protocol Deep Dives","🛠️ Tools \u0026 Libraries","A2A - Agent2Agent Protocol","⚙️ Implementations \u0026 Libraries","📚 Official Documentation"],"sub_categories":["Go","A2A (Agent2Agent Protocol)","🏛️ Official A2A SDKs","🐍 Official SDKs","A2A (Agent-to-Agent Protocol)"],"readme":"# A2A Go SDK\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)\n[![Nightly Check](https://github.com/a2aproject/a2a-go/actions/workflows/nightly.yaml/badge.svg)](https://github.com/a2aproject/a2a-go/actions/workflows/nightly.yaml)\n[![Go Doc](https://img.shields.io/badge/Go%20Package-Doc-blue.svg)](https://pkg.go.dev/github.com/a2aproject/a2a-go)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/a2aproject/a2a-go)\n\n\u003c!-- markdownlint-disable no-inline-html --\u003e\n\n\u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"https://raw.githubusercontent.com/a2aproject/A2A/refs/heads/main/docs/assets/a2a-logo-black.svg\" width=\"256\" alt=\"A2A Logo\"/\u003e\n   \u003ch3\u003e\n      A Go library for running agentic applications as A2A Servers, following the \u003ca href=\"https://a2a-protocol.org\"\u003eAgent2Agent (A2A) Protocol\u003c/a\u003e.\n   \u003c/h3\u003e\n\u003c/div\u003e\n\n\u003c!-- markdownlint-enable no-inline-html --\u003e\n\n---\n\n## ✨ Features\n\n- **A2A Protocol Compliant:** Build agentic applications that adhere to the Agent2Agent (A2A) Protocol.\n- **Extensible:** Easily add support for different communication protocols and database backends.\n\n---\n\n## 🚀 Getting Started\n\nRequires Go `1.24.4` or newer:\n\n```bash\ngo get github.com/a2aproject/a2a-go/v2\n```\n\nVisit [**pkg.go**](https://pkg.go.dev/github.com/a2aproject/a2a-go) for a full documentation.\n\n## 📦 Versioning\n\nThe first two digits of a release version are reserved for the version of the A2A Protocol Spec which the release implements. \n\nThe third digit is SDK API Minor version which gets incremented for patches or minor API changes.\nMajor breaking SDK API changes increment the version suffix in the module ID.\n\n```\ngithub.com/a2aproject/a2a-go/vn@x.y.z\n                             ^  ^ ^ ^ \n               SDK API Major ┘  | | └─ SDK API Minor\n                                | └─── Protocol Spec Minor\n                                └───── Protocol Spec Major\n```\n\n## 💡 Examples\n\nFor a simple example refer to the [helloworld](./examples/helloworld) example. \n\n### Server\n\nFor a full documentation visit [**pkg.go.dev/a2asrv**](https://pkg.go.dev/github.com/a2aproject/a2a-go/a2asrv).\n\n1. Create a transport-agnostic A2A request handler:\n\n    ```go\n    var options []a2asrv.RequestHandlerOption = newCustomOptions()\n    var agentExecutor a2asrv.AgentExecutor = newCustomAgentExecutor()\n    requestHandler := a2asrv.NewHandler(agentExecutor, options...)\n    ```\n\n2. Wrap the handler into a transport implementation:\n\n    ```go\n    grpcHandler := a2agrpc.NewHandler(requestHandler)\n    \n    // or\n\n    jsonrpcHandler := a2asrv.NewJSONRPCHandler(requestHandler)\n\n    // or\n\n    restHandler := a2asrv.NewRESTHandler(requestHandler)\n    ```\n\n3. Register handler with a server, for example:\n\n    ```go\n    import \"google.golang.org/grpc\"\n    ...\n    server := grpc.NewServer()\n    grpcHandler.RegisterWith(server)\n    err := server.Serve(listener)\n\n    // or\n\n    http.Handle(\"/\", restOrJSONRPCHandler)\n    err := http.ListenAndServe(\":8080\", nil)\n    ```\n\n### Client \n\nFor a full documentation visit [**pkg.go.dev/a2aclient**](https://pkg.go.dev/github.com/a2aproject/a2a-go/a2aclient).\n\n1. Resolve an `AgentCard` to get an information about how an agent is exposed.\n\n    ```go\n    card, err := agentcard.DefaultResolver.Resolve(ctx)\n    ```\n\n2. Create a transport-agnostic client from the `AgentCard`:\n\n    ```go\n    var options a2aclient.FactoryOption = newCustomClientOptions()\n\tclient, err := a2aclient.NewFromCard(ctx, card, options...)\n    ```\n\n3. The connection is now open and can be used to send requests to a server:\n\n    ```go\n    msg := a2a.NewMessage(a2a.MessageRoleUser, a2a.NewTextPart(\"...\"))\n    resp, err := client.SendMessage(ctx, \u0026a2a.SendMessageRequest{Message: msg})\n    ```\n\n---\n\n## 🌐 More Examples\n\nYou can find a variety of more detailed examples in the [a2a-samples](https://github.com/a2aproject/a2a-samples) repository.\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for guidelines on how to get involved.\n\nBefore starting work on a new feature or significant change, please open an issue to discuss your proposed approach with the maintainers. This helps ensure your contribution aligns with the project's goals and prevents duplicated effort or wasted work.\n\n---\n\n## 📄 License\n\nThis project is licensed under the Apache 2.0 License. See the [LICENSE](LICENSE) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa2aproject%2Fa2a-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fa2aproject%2Fa2a-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa2aproject%2Fa2a-go/lists"}