Mila for your industry and team
Your own Mila — 3 days for $5Recommended budget →
By size
Catalogue: turnkey businesses →Before a paid video, voice or picture she works out what it will cost. Above the threshold she shows a card and waits for your tap. Afterwards she tells you the real cost next to the estimate. Every line below links to the code.
Three parts: the rashod skill for paid generations, the subscription skill for your Claude plan, and two ledgers for the books.
Videos, voices, pictures and other people’s models cost real money: OpenRouter, fal.ai, HeyGen, ElevenLabs. The rashod skill and its script set the order. skills/rashod:3
She prices the job from the service’s price list, and the script adds a 10% buffer on top. Every estimate becomes a line in the ledger: service, what, how much, who asked.
skills/rashod:9-10rashod.py:55-62Under the threshold the job runs right away, with one line about the cost in her answer. Above it comes a card: what she will do, roughly how much, what the sum is made of, and three buttons, ✅ Go ahead, ✏️ Change, ✖️ Not now. No tap, no spend.
rashod.py:27skills/rashod:11-14The script checks what is left of the month before anything else. When the cap is used up, she does not spend and asks you in one line whether to raise it.
rashod.py:57-61skills/rashod:15After the job: the result and “it cost X (the estimate was Y)”. If she does not know the exact figure, she writes “≈” and where the number comes from.
skills/rashod:19-20Mila runs on your own Claude subscription. The subscription skill shows the five-hour window, the week and the per-model limits as what is left, not what is spent, with the exact reset time and a countdown. A column next to it compares the burn rate with the time passed: steady, melting fast, with room to spare, empty.
Send the bot /usage for your plan, /usage all for every plan you have connected, /usage watch on for an hourly watcher. It writes once per reason, when the week or the strong model is at 20% or less, or the five-hour window at 30% or less, and repeats no sooner than three hours later.
README.md:17-18 · skills/subscription:76-94 · skills/subscription:96-102 · skills/subscription:41-46 · skills/subscription:63-65
$ subscription.py
window · left
5 hours ███████████░ 99% steady
week ████░░░░░░░░ 36% steady
week · Fable █░░░░░░░░░░░ 2% empty
reset
5 hours today 18:50 — in 2 h 45 min
week Sat 12.09 08:00 — in 2 d 15 h
When a plan hits its limit, Claude Code answers with an error, and a bot without a watcher simply goes quiet. Mila’s sensor reads the end of the session transcript, finds that error and takes the reset time from the provider’s own record. It never makes one up.
Two ledgers for two questions: what happened, and how much money actually left. They are kept apart on purpose. docs/uchet.md:3-5
| Where | What it answers |
|---|---|
mila usage | Tokens per day and per model, cache reads and writes apart, priced from a table. Counted per model response, not per transcript line: figures written before 10 September 2026 are inflated by about 1.7×. docs/REFERENCE.md:192-197 docs/REFERENCE.md:216-225 |
mila usage --by-chat | Which client costs what. Work is credited to the chat it ended with a reply in: an order of magnitude, good enough to see who is expensive, not good enough for an invoice. usage_collect.py:256-267 |
conversations.db | One row per exchange: model, tokens, latency, tools, price. On a subscription that price is notional: nobody charged it. records.py:24-29 |
external-spend.db | Paid calls to outside services, real money. A row without the provider’s request_id is not accepted, so every line can be checked against the statement; a test covers it. records.py:377-379 test_records.py:212-218 |
MILA_RECORD_TEXT | What is kept of the conversation texts: full, length or none. The folder is 700, the databases 600. records.py:35-40 docs/uchet.md:14 |
mila doctor | Both databases present, complete, still being written, not shrinking; the hourly collector installed and actually run in the last two hours. install/install.sh:216-220 docs/REFERENCE.md:286-290 |
limit_watch.py and the feeder that holds messages are in the repository, but the self-host installer does not install them yet. There is no client billing in the repository either: invoices and payments belong to the hosted service. install/install.sh:118-119| File | What it does |
|---|---|
| skills/rashod | the order around every paid generation |
| rashod.py | estimate, threshold, monthly cap, budgets, summary |
| skills/subscription | subscription windows, /usage, the hourly watcher |
| subscription.py | reads the windows; the token goes nowhere else |
| skills/subscription-limits | what to say at a limit and after it |
| install/limit_watch.py | finds the limit error and the reset time |
| install/companion-feeder.py | holds incoming messages during a limit |
| install/usage_collect.py | mila usage: by day, model, chat |
| install/records.py | the two ledgers: turns and paid calls |
| docs/uchet.md | how the books are kept (in Russian) |
The kit is open: skills, hooks, tools and templates. Every pull request is read by a person and by Mila Quality.
Facts on this page: github.com/shakhruz/mila-companion (main, v1.3.0), checked 18 Oct 2026. Sums in the chat example come from the example in the script’s own help. “Mila”, “MILAGPT” and the logo are trademarks of MILAGPT.