The concept of an Agent is not new in Artificial Intelligence. Previously, it was the term for an autonomous entity in RL (Reinforcement Learning). What we colloquially refer to as an AI Agent is referring to an LLM-powered agent.
An RL Agent operates in a controlled environment and has a set of actions it can perform. It aims to maximize reward or minimize regret. Its output translates to a specific action wired to its environment.
For an AI Agent, the environment is much more open-ended. It is closer to the environment that you and I operate in than a board game. Furthermore, the LLM itself can be thought of as part of the environment. In some ways, this is a lot trickier to implement well than an RL agent.
Domains which AI Agents find success in are usually domains where there is
This makes coding a very attractive domain for AI Agents. Code is ubiquitous, and a simple compilation can show bugs in the code.
The brain of an AI Agent is the LLM. I personally have an RTX 5090, and I run this model locally https://huggingface.co/cyankiwi/Qwen3.6-27B-AWQ-INT4. I serve inference over vLLM. This model uses up almost all of my 32GB VRAM, which is why I actually utilize my CPU to serve my embedding model (and hence why I chose the smallest embedding size -- to make it sane to run on a CPU). This is the current model that serves Mirgenta in production.
The actions an AI Agent can perform are its tools. I build my own tools using wrappers over the library functions that I downloaded. Currently, I have 21 open source libraries that I utilize, which are kept up to date using Git. I utilize Docker containers as servers for a subset of wrappers, grouped by libraries that either have matching dependencies, or are semantically similar. Each container exposes a simple HTTP /run endpoint that the agent's executor calls to run a tool. I opt out of using MCP because I don't need it -- I already provide the context for the tools in my Agent prompt, and the Tool servers aren't exposed to agnostic Agents.
A few library functions require GPU, which I currently don't have the VRAM available for, so I have implemented the wrappers but have disabled the tools themselves.
Currently Mirgenta has 110 total tools in the registry, with 4 disabled, and 106 enabled.
I also track tool versions as well as environment versions which get updated with changes to either the wrapper or library code.