Mila for your industry and team
Your own Mila — 3 days for $5Recommended budget →
By size
Catalogue: turnkey businesses →A question, two or three options with what happens after each, her pick marked ★. You tap, she acts. No tap, and nothing goes out. Every line below links to the code.
Cards come from the kartochki skill; the buttons are part of the open Telegram plugin, shakhruz/mila-telegram.
The format is set by a script, not by mood: kartochki.py checks a card before writing it and refuses a bad one with the reason. Then she rewrites it instead of going around. skills/kartochki:17
The first line is the decision itself, up to twelve words. Under it, a line or two on why now. Two decisions mean two cards.
kartochki.py:161-168skills/yasno:21-29Each option says what will happen after it. Fewer than two or more than three, and the script does not write the card.
kartochki.py:169-174Her pick is the green button with ★ and a line “I suggest: A”. A pick that is not one of the options is refused.
kartochki.py:135-145“Needed by” with a date and time in your time zone. 🔴 Urgent only when tomorrow would be too late.
kartochki.py:137-138skills/kartochki:14-16Your tap comes back to her as “[button] …” with the label, and the script matches it to the card she showed. A voice note or a text instead of a tap is an answer too.
Nothing leaves on your behalf automatically. A tap from yesterday does not cover today’s text: a new text needs a new tap. It is law 3 of her constitution.
CONSTITUTION.md:17“Mailing: N people”, the whole text and two buttons, ✅ Send N and Cancel. Without ✅ she does not even file the request, and a repeat needs a new ✅.
Runs on Milas hosted by MILAGPT: the sending service lives on the host.
skills/bot-send:13-19skills/bot-send:31Routine tool runs pass by rule and are logged; refused ones are refused without waking you; the rest come as a card with a deadline. No tap by then means no, and she says out loud that she did not do it.
install/permission_policy.ts:8-15receiver.ts:618-633If the rules file cannot be read, every tool run becomes a card. When a runaway loop fires a flood of requests, cards stop and the requests are refused.
install/permission_policy.ts:114-117receiver.ts:600-611Only what is in the code today. Each one is a file with a line per event.
| File | What is recorded |
|---|---|
inbox.jsonl | Her questions to you. A new line for every change; old lines are not edited; the current state of a card is its last line. kartochki.py:5-6 kartochki.py:66-71 kartochki.py:74-88 |
inbox.jsonl · answer | Which option, who answered (you or Mila), how (chat, voice, mini app) and when. kartochki.py:244-246 |
proposals.jsonl | Task cards for the team, kept the same way: accepted, rejected, edited, handed to another Mila. kartochki.py:5-6 |
cards.jsonl | The plugin’s list of cards with buttons: chat, who may tap, text, buttons; then a “used” line with who tapped and when. Only the owner of the process can read it. receiver.ts:1285-1292 receiver.ts:818 |
permission-log.jsonl | Every tool decision: passed or refused by rule, sent as a card, refused at the deadline or by the flood cap. mila doctor checks the file mode. install/permission_policy.ts:143-164 receiver.ts:586-590 install/doctor.py:248-256 |
auth-log.jsonl | Every decision on connecting a group, rejections included. mila-telegram · README:15 |
suspicious.jsonl | Taps on a card by someone it was not sent to. receiver.ts:1309-1313 |
tasks/sent.jsonl | Every outgoing message, written by a hook. skills/mila-tasks:27 |
| File | What it does |
|---|---|
| skills/kartochki | how a card is written and answered |
| kartochki.py | checks, writes and shows cards; takes the tap |
| test_kartochki.py | tests, including “no second answer” |
| skills/yasno | plain-language rules for cards and buttons |
| skills/bot-send | mailings from your public bot after ✅ |
| install/permission_policy.ts | rules for tools: allow, deny, ask |
| permissions.example.json | starting rules, each with a reason |
| CONSTITUTION.md | law 3: nothing goes out on your behalf automatically |
| mila-telegram · receiver.ts | buttons: register, gate, switch off, deliver |
Both repositories are open: the kit with its skills, hooks, tools and templates, and the Telegram plugin. 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) and github.com/shakhruz/mila-telegram (main), checked 18 Oct 2026. “Mila”, “MILAGPT” and the logo are trademarks of MILAGPT.