MILAGPT
Docs · Webmaster

The client’s site: Mila builds it, the client decides on production

A client’s site usually waits for a developer or for an owner who will “deploy it tonight”. Mila Agent has an optional Webmaster pack: Mila builds the client’s site in her own container, shows a preview and sends a batch to production once the client has said the word in the work chat. A service on the server does the deploy: Mila holds no hosting token.

For a Mila who runs client sites. The pack is installed separately from the core.

Who decides

The site belongs to the client, not to Mila

Mila is a contracted webmaster: she builds and maintains. What goes on the site and when it is published is the client’s call. webmaster:16-17

01 · PREVIEW

Mila’s working area

Previews on *.pages.dev and test branches Mila ships herself, as often as needed: she sends the client a link and takes measurements.

webmaster:24-26
02 · PRODUCTION

On the client’s word, for this batch

The live domain only after the client’s explicit word in the work chat on a specific list of what goes out now. Yesterday’s “go on” and a general “deploy when ready” do not count. The message number or the exact quote goes into the batch log.

webmaster:19-23
03 · MILAGPT OWNER

Not in the chain

Mila does not ask the MILAGPT owner to “deploy it” and does not wait for his command. A missing token or missing rights is a task for the administrator, not a request to deploy by hand.

webmaster:27-30
A batch’s path

From the build to a check on the live domain

A batch is the list of what goes on the site in one go. webmaster:111-118

01 · BUILD

Sources in git, the build in dist

Each client has a folder: sources in git, build scripts per section, the build in dist-<domain>/. Before a production build the preview address is replaced with the domain in canonical, og:url, hreflang and ld+json, and noindex is removed. For a new client Mila sets up the same structure. webmaster:36-49 webmaster:54-57

02 · REQUEST

A file in her own outbox

request_deploy.py puts a request into work/outbox/deploy/<id>.json: the client, production or preview, the build hash, what goes out. For production, without the client’s name and the number of their message (or an exact quote) the script stops and writes no file. request_deploy.py:65-82 request_deploy.py:46-51

03 · HOST

A service deploys, not Mila

The webmaster-deploy service on the server reads the outboxes on a timer and checks each request against a table: Mila → Pages project → build folder → domain. Only her own project can be deployed: a request for someone else’s is rejected mechanically. With a token it runs wrangler pages deploy; without one the status is dry_run_no_token: the service shows what it would do and runs nothing. webmaster:149-158 webmaster:161-163 webmaster:164-166

04 · RESULT

The answer is a file next to it

The result arrives in <id>.result.json: done means Mila goes to check the site; blocked means she reads the reason, fixes it and sends again. A blocked she does not understand is a task for the administrator, not a workaround through her own wrangler. webmaster:119-123 webmaster:172-174

There is no Cloudflare token in Mila’s container, and there should not be one: it lives on the server. webmaster:146-147

A human look

Three things do not go live on their own

Even when the client has said to deploy the batch, these files need a separate look from a person: the client, a lawyer or the owner. webmaster:59-73

Design, SEO/GEO

The norm is a 360 px phone

The layout passes design_check.py before hand-off. The brand follows the client’s brand guide; with no guide, it follows what already stands on the client’s current site: Mila does not invent a new palette to her own taste. webmaster:83-88

The mobile screen is 360 px: the norm, not the edge of the range. Page weight and the number of requests do not grow from batch to batch without an explanation in the log. webmaster:89-92

On every public page: its own title and description, canonical to the live domain, hreflang to every language, the page in sitemap.xml, schema.org with real numbers. noindex only on previews. webmaster:93-98

Images without distortion
  • In CSS an image has height:auto, or aspect-ratio with object-fit:cover; width and height in the markup are the real file size. webmaster:101-105
  • img_proportsii.js runs in the browser at 390 and 1440 px: an image distorted by more than 2 % without object-fit cover or contain, and the batch does not go out. webmaster:106 img_proportsii.js:8-13
After the deploy

“Done” by numbers, not by “looks fine”

Checks after a deploy
CheckNorm
AddressesEvery new or changed page returns 200, not 301, 308 or 404
Prices and textsMatch what the client saw before giving the word
360 pxNo sideways scroll, no touch targets smaller than 12 px, the first-screen heading takes no more than 3 lines
FormsA test submission with utm_source=test reached where it should, and it is clear that it is a test
LogOne entry per batch: what went out, the client’s word, the hash, the status, the check results

The first quick pass is check_deploy.py: 200 for a list of addresses, viewport, canonical not on pages.dev, no noindex in production; exit code 1 if any address fails. A batch without a log entry is as if it never happened. webmaster:129-139 check_deploy.py:12-14 check_deploy.py:44 webmaster:178-191

To the client

No “wrangler” and no “HEAD”

Mila talks to the client in the voice of a host in their work chat. webmaster:195-204

Honestly

What this page does not promise

In the repository

Every line can be read for yourself

The pack has been in the kit since the first release, v1.0, and is installed one skill at a time with update.py install-skill. CHANGELOG.md:385 README.md:1-3

Files of the Webmaster pack in the mila-agent repository
FileWhat it does
packs/webmaster/README.mdwhat the pack holds and how to install it
webmaster/SKILL.mdthe skill: who decides, a batch’s path, checks, the log, talking to the client
webmaster/request_deploy.pya deploy request into her own outbox; no production request without the client’s word
webmaster/check_deploy.pya quick check after the deploy: 200, viewport, canonical, noindex
webmaster/img_proportsii.jsan image proportion probe at 390 and 1440 px
Open code · Apache-2.0

Fork it, teach it, send a PR

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-agent (main, 83d4af4, v1.7.1), checked 1 Nov 2026. The chat in the phone is an illustration. “Mila”, “MILAGPT” and the logo are trademarks of MILAGPT.