MILAGPT
Start with “For business”: three steps to launch.
Try 3 days for $5The $5 goes to your Mila’s balance · Telegram will open
RU·EN
Docs · Updates

Updates — only when you decide

A new version of Mila comes as a card: what is new in a few lines and a button. She updates only when you tap it. Your files, memory and keys are never touched, and any update can be undone. Every line below links to the code.

New skills come to you. Your work stays as it is.

How a new version arrives

A check at night, the button is yours

The mila-update skill knows the installed version, compares it with the latest release and brings only what helps. skills/mila-update:9-12

01 · AT NIGHT

Is there a newer version

Once a day Mila looks for a release newer than hers. Test builds (-rc) and withdrawn versions are skipped.

skills/mila-update:38-40 update.py:117 update.py:523-534
02 · TRIAL RUN

Checked before anything is written

The release list, the skill headers and the hook code are checked first. One error and the version is turned down; nothing is written.

update.py:422-433 update.py:557-561 test_nightly.sh:67
03 · CARD

What is new, in plain words

“There is an update”, a few lines from the release notes, what stays untouched, and two buttons: ✅ Update and ⏸ Not now. The same version is not offered twice.

update.py:481-486 update.py:565-571 test_nightly.sh:41
04 · YOUR BUTTON

Update for this version only

Mila updates after ✅ on this exact version. A tap from yesterday, for another version or from someone else does not count. After “Not now” she waits for the next release.

skills/mila-update:59-60 skills/mila-update:63 skills/mila-update:80
What is never touched

Your work stays as it is

An update brings core skills, hooks and tools, the mila launcher, the constitution and the canons. The exact list is in the release file. skills/mila-update:27 release.json:6-58

A list built into the script is stronger than any release: those paths are never written, even if a release by mistake asks for it. update.py:52-57 update.py:63-65 release.json:60-78

Never overwritten
Your edits

Edited a skill? It stays yours

Before writing, every file is compared with what is installed. There are four outcomes. update.py:244-257

01 · NEW

Added

A skill or a tool you did not have yet is installed.

skills/mila-update:32
02 · UNCHANGED

Replaced

You have the previous version and did not edit it. It is replaced with the new one.

skills/mila-update:33
03 · YOUR EDIT

Left alone

You changed the skill. Your version stays; the new one is put aside in mila-update/new/, and Mila tells you about it.

skills/mila-update:34 update.py:363 test_update.sh:53
04 · DIFFERENT

Not taken without a look

On the first check a file may even be newer than the release. It is taken only by name, after a comparison.

skills/mila-update:35 test_update.sh:34
If something goes wrong

A backup first, undo in one command

Every update is written to a journal: when, which version, from where, who decided and where the backup is. skills/mila-update:22-23 update.py:375-377

01 · BACKUP

Before any write

Everything that will change goes into a .tgz in mila-update/backups/ first.

skills/mila-update:36 update.py:291-297 update.py:358
02 · UNDO

rollback

One command returns everything as it was before the last update: new files go, old ones come back from the backup.

update.py:608-612 test_update.sh:56
03 · HEALTH

Check after

Files in place, skills readable, hooks compile, the version recorded. In night mode a failed check means an automatic rollback and a card: “I put everything back”.

update.py:436-458 update.py:575-580 test_nightly.sh:61-63
04 · WITHDRAWN

yanked.json

The developers can withdraw a version. It is never installed; if it is already installed, Mila warns you.

skills/mila-update:45 update.py:150-161 test_nightly.sh:75
Settings

How often and from where

Channel stable (the default) takes only released versions. canary follows the main branch. manual means Mila does not check by herself. skills/mila-update:18-20 update.py:588-596 test_nightly.sh:84

By default auto is off: at night only a card, the update after your button. If you turn auto on yourself, she updates at night on her own, with a backup, a check and an automatic rollback, and then sends “what is new”. update.py:33 update.py:572-582 test_nightly.sh:52

Each home gets its own night slot of 0–119 minutes, so Milas do not all go at once. update.py:604-605

$ update.py status
$ update.py check
$ update.py diff --tag v1.5.2
$ update.py nightly --dry-run
$ update.py rollback
$ update.py config --set channel=stable
Honestly

What this page does not claim

In the repository

Read every line yourself

Files behind updates in the mila repository
FileWhat it does
skills/mila-updatehow Mila updates and what she never touches (in Russian, short English part)
update.pycheck, compare, update, rollback, night step, health check
release.jsonwhat a release updates and what it never touches
yanked.jsonwithdrawn versions
test_nightly.sh23 checks of the night step
test_update.sh27 checks of update and rollback
CHANGELOG.mdwhat is new in every version
Open source · Apache-2.0

Fork it, teach it, send a PR

The kit is open: skills, hooks, tools and templates. Run test_nightly.sh and test_update.sh yourself; every pull request is read by a person and by Mila Quality.

Facts on this page: github.com/shakhruz/mila (main, 8a6b97d, v1.5.2), checked 22 Oct 2026; test_nightly.sh passed 23 of 23, test_update.sh 27 of 27. The chat in the phone is an illustration. “Mila”, “MILAGPT” and the logo are trademarks of MILAGPT.