A2A

How AI Agents Drive Cost-Effective Supply Chain Operations

A2A is an open protocol for letting small programs pass work to each other. Here is how to build an analytics job out of a few single-purpose services you host yourself.

Updated 11 September 2026 · first published 20 May 2026 · 6 min read

Runink Logistics Operations Team

How AI Agents Drive Cost-Effective Supply Chain Operations

What are the Key Takeaways from this Executive Summary?

Quick answer

A2A, or Application-to-Application, is an open protocol. It lets small programs find each other and pass work between them. You can use it to build an analytics job out of a few single-purpose services instead of buying one large tool. Each service does one step. Each can be changed or replaced on its own. What you spend is your own time and your own hardware, not a licence fee.
  • A2A is a protocol, not a product. It is open, it runs over plain web standards, and there is no licence to buy.
  • Each step is its own small program. Fetch the data, score it, write the summary. Three small services, not one platform. You add a step when you need it.
  • The cost to compare is your own. Write down what one report costs you today and how long it takes to produce. That is the figure no vendor can argue with.

How Does Pairing A2A With Data Processing Change Your Budget?

Quick answer

It moves the spend from licences to your own people and hardware. A2A itself is free to use. You pay for the machine each service runs on and the time it takes to write it. That trade is a good one when you have a small number of clear questions to answer, and a poor one when you need a finished tool on Monday.

Most teams want answers out of their data without a large software bill. A2A is one route to that. It is worth understanding what it is before deciding whether it fits.

What is A2A?

A2A is an open protocol. It gives separate programs a shared way to announce what they can do, to ask each other for work, and to hand back a result. Nothing in it is specific to analytics. It is plumbing.

Why teams use A2A for low-cost work

Cost

A licensed reporting suite carries a fee whether or not you use it that month. A2A carries none. It runs over HTTP, JSON-RPC and Server-Sent Events, all of which are public standards. The cost you are left with is the machine and the engineer.

One step at a time

You do not have to build the whole chain. Write the one service you need now. Add the next one when the question arrives. Each step — pull the data, clean it, score it, draw it — is a separate program you can test on its own.

Fits what you already run

Because the protocol is plain and public, a service can sit beside the tools you already have. The Python data libraries most teams already use need no change to be called this way.

How the modules divide the work

Before the code, the shape. Four modules, each with one job, and the rule that decides when one hands over to the next. This is the part worth getting right first, because it is what lets you add, test and replace a step on its own later.

How to build a small A2A workflow for supply chain analytics

An analytics workflow built from small single-purpose services that talk over the open A2A protocol, so each step can be added, tested and replaced on its own.

1

Configure the router module

Start with the module that receives the question, for example what is the transit delay on Route 4. Its only job is to decide which other module should answer.
2

Add the simple answer module

Connect a small local script or database query to the router. Send plain data lookups and simple totals here, because they do not need a model to answer them.
3

Add the reasoning module

Connect a larger model for the questions the simple module cannot answer. Read its output before trusting it, and check what leaves your network when you call it.
4

Define the handoff rules

Write down when one module passes a question to the next. If the simple module cannot answer with confidence, it should hand the question on rather than guess.

Building a small workflow: a step-by-step guide

Here is a short worked example: pull customer reviews, score the sentiment, write a summary.

Step 1: Environment Setup

Ensure Python (>=3.9) is installed. Install essential libraries:

1
pip install python-a2a langchain openai

Step 2: Create A2A Service Modules

Define simple, task-specific modules using python-a2a.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from python_a2a import A2AServer, agent, skill
import requests

@agent(name="ReviewScraper", description="Module to scrape customer reviews")
class ReviewScraper(A2AServer):
    @skill(name="fetch_reviews")
    def fetch_reviews(self, url: str, limit: int = 20):
        response = requests.get(url)
        reviews = response.json()
        return reviews[:limit]

ReviewScraper().run(port=8000)

Step 3: Sentiment Analysis Module

Deploy a module to perform sentiment analysis on scraped data.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from python_a2a import A2AServer, agent, skill
from textblob import TextBlob

@agent(name="SentimentAnalyzer", description="Analyzes sentiment of reviews")
class SentimentAnalyzer(A2AServer):
    @skill(name="analyze_sentiment")
    def analyze_sentiment(self, reviews):
        sentiments = []
        for review in reviews:
            analysis = TextBlob(review['text'])
            sentiments.append({
                'review': review['text'],
                'sentiment': analysis.sentiment.polarity
            })
        return sentiments

SentimentAnalyzer().run(port=8001)

Step 4: Integrate Processing Libraries for Summarization

Use workflow libraries to integrate these modules and summarize insights.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
from langchain.chains import SimpleChain
from langchain.llms import OpenAI
import requests

llm = OpenAI(api_key="YOUR_OPENAI_KEY")

def fetch_reviews():
    response = requests.post("http://localhost:8000/", json={"method": "fetch_reviews", "params": {"url": "http://example.com/api/reviews"}})
    return response.json()['result']

def analyze_sentiment(reviews):
    response = requests.post("http://localhost:8001/", json={"method": "analyze_sentiment", "params": {"reviews": reviews}})
    return response.json()['result']

chain = SimpleChain(llm=llm)
reviews = fetch_reviews()
sentiments = analyze_sentiment(reviews)
summary = chain.run("Summarize customer sentiment based on the following data: {}".format(sentiments))

print(summary)

Why pair the two at all?

The services move the data. The processing libraries do the reading and the writing up. Keeping them apart means you can swap either side without touching the other. If the summary step turns out to be wrong for the job, you replace that one program and the rest stands.

Two honest notes on this example. A model call made over the public internet sends your text to whoever runs that model, which may not be acceptable for your data. And the summary is only as good as the scoring step feeding it, so read the middle output, not just the last one.

Where it is used

  • Customer feedback. Pull reviews, score them, and read one short summary instead of four hundred comments.
  • Market research. Collect from several sources, clean each one, then summarise what the set says.
  • Day-to-day monitoring. Watch logs or alerts and write a short digest of what changed.

Conclusion

A2A gives small programs a common way to talk. Paired with ordinary Python data libraries, it is a way to answer a few clear questions without buying a platform first. It is not less work than a finished tool. It is work you own, on hardware you own, that you can change when the question changes.

Before you compare it with anything: find out what one of your current reports costs to produce, and how many days old it is when people read it. Those two numbers decide whether this trade is worth making.

A2A integration analytics open source data protocol data pipelines low-cost analytics modular workflows task orchestration sentiment analysis open standards

All articles

Runink: Data You Can Trust. Decisions You Can Defend.

Runink FACE reads the logistics records you already hold, compares them against the rules that govern them, and drafts an action for the person who owns the decision. It runs on infrastructure you control.