Skip to content

03  ·  2026

Donna

A multi-agent assistant on a self-managed VPS, with cost-aware model routing.

Role
Sole engineer
Stack
Node.js, TypeScript, Docker, systemd, Telegram Bot API
Status
Running in production for one user

The problem

Running a capable agent continuously is expensive, and the obvious approach, sending everything to the largest model, costs far more than most tasks justify. The interesting problem was keeping capability while making cost a first-class design constraint.

Treating model choice as a routing problem rather than a default turned an unaffordable system into a cheap one.

What I built

A supervisor process hosting several specialised sub-agents, each with its own persona and tool surface, reachable over chat. A routing layer sends each task to the cheapest model that can handle it and escalates only when needed, with session resets and prompt caching to bound idle cost.