# Codetyper.a2a, Born From the Chaos of Working With AI Agents

> Source: <https://dev.to/cargdev/codetypera2a-born-from-the-chaos-of-working-with-ai-agents-3jaj>
> Published: 2026-10-24 03:23:33+00:00

Imagine this: you are a developer with access to AI tools and the CLI; everything is normal as usual. You use opencode as you normally do: open tmux, then open the project you are about to work on. In one pane of the terminal, open Neovim as the editor; in the other, just type “opencode” once again. You start interacting with the plan agent and build the agent as usual.

Suddenly, you need to create another task in another project that communicates with the first project you are working on. It is a huge deal to make the changes in different repositories for a single feature. You start typing a huge prompt file in the editor just to keep the context across the project.

At the end, you have 5 projects running all in one tmux window, 1 opencode in another window, and the editor in another window. You suddenly notice that LLMs are losing context, and you type the "/compaction" command here and there. And a change that is supposed to be easy is a nightmare, and the code the LLMs are typing has issues over and over again.

You suddenly think—how can I get the opencode to start communicating with agents? You have different agents at this point set on the opencode configuration that you need to select every single time, give context, and review again if the actual change is correct with the way you want.

What if you suddenly have an orchestrator that actually understands the task for you, getting the correct agents to understand the task -> create the plan -> create the architecture, and, if it is an issue, investigating where the issue is coming from by running tests, playwright, debuggers, etc., for you.

All this while, you get the tokens as low as possible by calling each agent in the best way possible. Then the orchestrator is the only agent you communicate with, you tell what you want, and every agent starts to actually work for you, and the best you can review the code if you want, but at the end, remembers the way the project is coded, adding an audit on security, testing changes, asking you questions, and running agents at the same time.

So you are still there at 2 a.m., with a lot of projects running at the same time across different ports, and praying the agent finds the correct answer this time so you don't have to code manually again. At that moment, you are tired, and you start a new project with an architecture in mind.

I wrote codetyper a2a as a solution to agent-related misguidance and miscommunication, and, at the end of the day, because I'm still lazy and I want to be able to talk with one agent only, not run more commands to switch agents. So I started typing manually again to create the orchestrator this time, as agent-to-agent communication. And why does this mostly solve my problem? Well, because the communication A2A is a protocol that differs from MCP, for example, with the MCP, you connect tools to a certain agent to give more context to let the agent take a look for itself, with the A2A, you let the agent communicate in the way they want by following certain rules, the rules I wrote manually, and the architecture I wrote manually.

Then, to select the language, I chose Rust because it compiles, and because I am learning it nowadays. Even though I haven't written most of the code, I have been sketching the architecture by hand (forgive me for using my hands). It was an option to add it with C or Go; both languages work well in the terminal, especially with the tools I want to integrate into the project, which are opencode and tmux.

I did not use C because I don't want to expend time on read the code enough to path memory and certify the project works correct with the memory - jugde me for that - in the other hand, I didn't choose Go because i have no experience on the language or at least the enough experience to let the code to the AI, I have this idea to know what im doing even when im vybe coding.

So I started the project to help to introduce a new feature that touches different repos to avoid myself repeat my self with every single agent, so now the agent communicate each other, give the context that is needed for only the task, for example I need to add a banner on a UI on the page why the build agent has to worry why i am creating this banner for? The agent will start to overthink and tell me things I don't want on the banner simply because I don't want to add all the context.

The reality is that I want an agent to manipulate all other agents and give them only what they need for a specific task. This will save me tokens at the end because the model is doing what it is supposed to do, nothing else.

The project is available at [https://github.com/CarGDev/codetyper.a2a](https://github.com/CarGDev/codetyper.a2a), where you can install it using brew, download it from GitHub, or install it directly with cargo.

```
brew install CarGDev/codetypera2a/codetypera2a
codetypera2a --version        # codetypera2a 1.4.0
git clone https://git.cargdev.io/CarGDev/codetyper.a2a.git
cd codetyper.a2a
cargo install --path . --force        # installs codetypera2a into ~/.cargo/bin
```

Once you install it, you can select which model you want to use for every agent. You will have on the same table a model recommended based on the agent. The best thing is that you need to use models like Opus or similar, since the project is delegating tasks through agents and communicating with each other. Simplifying the task is really helping to save tokens.

Codetyper.a2a also shows how much you have used each agent and how many tokens/cost you have used on each task, giving you a color-coded view of your budget.

At this point, I will just tell you: smoke if I don't use it, right? well i have used my own product that I created, I used it first on the very beginning stage and helped me to refactor a repo correctly more than 300 files, more than 30k lines and work perfectly, again i coded with the agents but I have created the architecture and I want to know what to do, I had the test created already i add a constrain to do not modify any testing.

Second project: I migrated a legacy project I used to have from Node.js 16 to Node.js 24 over the weekend. Again, I knew what I wanted to create and how I wanted it; I just didn't have the time to type all the code myself.

So I think harness engineering helps you if you are doing the engineering part, if you know the desired output, if you create the architecture, and, most importantly, if you know the language you are working with.

I have written projects with AI just for fun, encountering issues with languages I don't understand or don't know, then trying to debug or translate them into another language. I think if you are not working on a team and you are doing a project by yourself, you still need to code it manually and understand every single part of what the software does.

I hope you find this lecture helpful, and take a look at the project.
