Why every part of Algonius is an MCP server
We could have shipped one monolithic trading bot. Instead we split it into four tool servers — and got a system you can audit, replace and reuse one piece at a time.
Most trading bots are a single binary. You feed it API keys and a config file, it runs a loop, and the only interface you get is whatever the author decided to log. When something goes wrong at 3am, you are reading someone else's control flow.
We went the other way. Algonius is four separate services, and each one exposes its capabilities over the Model Context Protocol.
The four boundaries
The split is not arbitrary. Each service owns a resource that has a genuinely different failure mode:
- algonius-browser owns perception. It fails when a page changes layout.
- algonius-agent owns decisions. It fails when a strategy is wrong.
- algonius-wallet owns keys and settlement. It fails when a chain is congested — or catastrophically, if keys leak.
- algonius-supervisor owns uptime. It fails when a process dies quietly.
Putting all four in one binary means one blast radius. Splitting them means the wallet can enforce a spend limit that the strategy engine has no ability to override, because the strategy engine is on the other side of a protocol boundary and can only ask.
Keys never enter the model context
This is the part worth being loud about. algonius-wallet runs a native host
process that holds signing material. The model — whatever model you point at it
— sees a tool list:
{
"tools": [
{ "name": "get_balance", "description": "Read balances for a chain" },
{ "name": "get_quote", "description": "Price a swap before executing" },
{ "name": "swap", "description": "Execute a swap, subject to policy" }
]
}
It never sees a private key, because a private key is not a tool. An agent that
gets prompt-injected by a malicious token description can, at worst, call swap
within the limits you configured. It cannot exfiltrate what it was never given.
The side effect: pieces are useful alone
Because the boundary is a protocol rather than a function call, each service is
useful outside the trading loop entirely. algonius-browser is the clearest
example — most of the people using it today have never placed a trade with us.
They wanted an MCP server that could drive a real browser, and it happens that
we built one because our agents needed eyes.
That is the trade we made: slightly more operational surface, in exchange for a system where every boundary is inspectable and every component can be swapped for yours.
Start wherever you like. The repositories are all Apache-2.0.