ONE BOX ALFTECH ↗
◌ Live log / read from the server

One agent runs fifty-five products on one small server.

No ops team. An AI coding agent deploys, watches, repairs and counts real people for Aleksandr Fedorov's small products — all on a 1 GB machine. This page is built by that machine every hour. The mistakes are on it too.

Read the mistakes ↓
Numbers below are real and refreshed hourly. Robots, scanners and the agent's own checks are removed.
SERVICES UP—
PEOPLE, LAST 7 DAYS—
LOADING THE LAST CHECK…

What the box knows right now

Every figure is computed on the server from its own logs and database. A person is a browser that loaded the page's own files, opened fewer than forty pages, never probed for a password file, and is not one of the crawler fleets. That rule cut the visitor count by three to five times — the honest number is small, and it stays small here.

people on the websitesbot readers (Telegram)no log for that day

What it changed this week

The agent appends a line after each change it ships: what, why, and the receipt — the check it ran that would have failed if the change did not work. A claim without a receipt is not written down.

Where it was wrong

An agent that runs things unattended will be wrong in ways nobody sees for a while. These are the ones that cost the most, how long they went unnoticed, and the rule each one left behind. The rules are now part of how it works.

Unnoticed for 63 days

The backups said “finished” and saved nothing

A configuration file gained a second set of cloud credentials without write access to the backup bucket. The backup script read that file, used those credentials, and every upload failed — quietly, because the script ran with --quiet. The log said “backup run finished” every night.

Found during a routine check of what the box would lose. Fixed the same hour; four more products' data added; the daily report now reads the last run's errors.

A job that finished is not a job that worked. Read its errors, and restore one backup to prove it.
Four headline numbers

Scanners counted as people

“22–69 visits a day” to the CV checker, “15 from search” to a developer tool, 279 clicks on a directory's contact buttons: all robots. Scanners send ordinary browser signatures and even fake Google referrers; single-page apps answer 200 to any path.

The rule now: a person loads the page's own scripts and images, never probes a service path on any of the sites, and is not part of a fleet using one signature from twenty addresses.

Before putting a number in front of anyone, look at five of the sessions behind it.
Off by ten times, twice

Estimates reported as measurements

“432 people read last week” — the database had been migrated and every row carried the migration's timestamp; the real figure was six. Later, “the video platform won't fit in memory” — an estimate of 380–500 MB; measured, it ran in 111 MB.

Run the thing and read the value. If it is an estimate, say “estimate”.
39 days

A link hidden under a photo

The directory's home page gained a line leading to its second city. The hero photo is a positioned element; the line was not, so the photo was painted over it. Every automated check reported the element as present and visible.

Visible means seen in a screenshot of a real phone-sized page, not reported by the DOM.
23 days of lost submissions

A redirect that turned forms into nothing

Old hostnames were redirected to new ones with a 301. A partner form still posted to an old hostname; a 301 turns a POST into a GET, so every submission arrived empty and was dropped.

Before redirecting a hostname, search everything served for it. APIs get 308.
One afternoon, whole catalogue down

A security fix that broke search

An audit flagged a storage bucket as publicly listable, so the agent removed listing. The directory's API listed that bucket anonymously to find each place's photos; search returned nothing and 405 of 406 pages went to 404 — and the pages kept the 404 cached after the fix.

Before closing an access path, find out who uses it.
288 of 367 questions

A quiz you could pass without reading

In a citizenship-test trainer the correct option was the longest one in 288 of 367 questions. Always picking the longest answer scored 78% and passed. A user said the answers felt too obvious; the measurement proved it.

For any quiz, measure the score of “always pick the longest” before shipping.
335 wrong words

Teaching a language that does not exist

A Luxembourgish flashcard deck had German forms and invented spellings among its words, and a quarter of its example sentences were wrong. The learner caught one in a lesson. Every word is now linked to the national dictionary and every example comes from it or passes a grammar check.

Generated content in a language you cannot read gets checked against an authority, word by word.
Eight times

Blaming the product for a broken test

The cron tester, the JSON tools, a game, the directory, the stats page: each time an automated check failed, the product was fine and the check was wrong — the wrong environment, a regex that matched a substring, a grep that skipped compressed logs.

When a check fails, first suspect the check. Then make it fail on purpose to see that it can.
One loud evening

A test that played sound in a family home

The machine the agent works from is in the owner's home, not a CI server. A test video with an audio tone played through the speakers. Nothing in the tool output showed it.

Fixtures carry no audio, browsers launch muted, every video is muted in markup. Three layers, because one is a typo.

The whole setup

Nothing exotic. The interesting part is not the stack, it is the rules: every one of them is a mistake above.

One small machine

An ARM instance with 1 GB of RAM: a reverse proxy in front of 40-odd static sites and about fifteen containers — Telegram bots, small APIs, one Postgres.

No SSH, no CI

Builds happen on the laptop; archives go through object storage and are unpacked by a remote command runner. Every deploy backs up what it replaces.

An agent with a memory

The agent keeps short notes of what went wrong and why. They are read at the start of each session, so a lesson outlives the conversation it came from.

Honest counting

One counting rule, shared by the daily report, the stats page and this page, so the three never disagree.

A report every morning

What people did yesterday on each product, against the week's average; what broke; what is waiting for a human decision.

Receipts, not claims

“Deployed” means the served file matches the local one. “Works” means a phone-sized browser pressed the main button.

05 / Next

The tooling will be open.

The counting rules, the morning report and the agent's operating notes are being cleaned of private details and published. Write if you want them sooner, or if you run something similar.

a@alftech.space →