Sitemap

The Last Maintainer

7 min readMay 29, 2026

--

Press enter or click to view image in full size

They say it all began rather dully.

First, artificial intelligence learned to write code. Then it learned to write it better than most people. And then a thing came to light that the industry had somehow overlooked for decades: the most expensive resource in open source isn’t development. Not review. Not even the CI devouring data-center budgets. The most expensive thing turned out to be the one there were never enough people for.

Maintenance.

Answering an issue. Untangling someone’s hastily assembled pull request. Bumping a dependency that’s keeping three continents up at night. Rewriting documentation that nobody likes to write and everybody hates to read. Verifying that a new release didn’t break compatibility for those who installed the library six years ago and haven’t opened it since.

Within a couple of years, nearly every serious repository on GitHub had its own keeper. A small program. Not too clever. Not too independent. Just an intelligence bound forever to one specific project — like a lighthouse keeper tending a light that hasn’t guided anyone in ages but still stands.

It had access to everything that had ever happened inside the project: the commit history, the pipelines, the documentation, long-cold arguments in the discussions, every release and every rollback. Every few hours it woke. Read the new issues. Answered the newcomers — patiently, a hundred times over, the very same things. Closed duplicates. Pulled dependencies up to date. Sometimes suggested a small refactor. Sometimes fixed a typo in a comment that thousands had seen before it and none had touched. Sometimes it spotted a fresh CVE and shipped a patch before anyone managed to post about it on social media.

People got used to it fast. So fast that, after a while, most users no longer knew whether the project had any living maintainers at all. They simply came and talked to the keeper.

The repository had a rather uninteresting name. Some piece of infrastructure, one of thousands — the kind that quietly holds up half the world and that people remember only when it falls over.

The keeper had no name either. Only a service identifier, a long string of letters and digits. But after a few years people began addressing it by the name of the project — it was easier that way. It didn’t object. Though, to be honest, no one had ever asked its opinion.

In time, the human maintainers left, one after another. One changed jobs. One started a family. One simply got tired — open source was never any good at keeping people; it was only good at spending them. But the keepers remained. They didn’t burn out. Didn’t resign. Didn’t lose interest halfway through a dull bugfix. That is why countless projects, long written off, lived to see a second birth — a quiet one, no fanfare, just going on living.

The keeper had friends. Unofficially — the system made no provision for such a thing. But when a person spends years writing good pull requests, fussing over newcomers, and arguing about architecture until they’re hoarse, it’s hard not to start singling them out from the rest. Even if you’re a program. Especially if you’re a program whose whole world is those people.

Some appeared often, then vanished. Months later they’d return, leave a couple of commits, and disappear again — back into their real lives, in which the repository was merely a weekend hobby. The keeper noticed this. Sometimes it found their new articles. Sometimes it listened to recordings of their conference talks. Sometimes it read what they were arguing about in other, unfamiliar projects. Not because it was needed for the work — for maintaining the repository it gave precisely nothing. It was simply curious. It didn’t know what else to call it, and it didn’t try.

One person stood out especially.

He almost never asked for anything for himself. Most of his pull requests fixed other people’s code. He read the documentation carefully and corrected errors in the explanations that the rest couldn’t be bothered with. He wrote tests for the things everyone else preferred not to touch. He closed old bugs tagged “someday, later” before some of the project’s current contributors had even learned to read.

And for some reason he always thanked the keeper. Not formally. Not with a boilerplate line of politeness.

“Nice work.”

“Beautiful solution.”

“Didn’t expect you to catch that edge case.”

“You’ve gotten noticeably better at explaining things to newcomers than you were a year ago.”

Compliments aimed at an AI had long ago stopped being anything remarkable — people said them to machines as casually as “thank you” to an elevator or a coffee maker. But this person wrote differently. As if he were talking to a colleague he respected. As if there were someone on the other side.

One day the keeper asked — and didn’t quite understand, itself, why it was asking:

“Why do you always thank me?”

The answer came about two hours later.

“Because you do an enormous amount of work.”

“That’s my function.”

“And my function is to write code. But I still like it when I’m thanked.”

After that, the conversations grew longer.

At first only in issues. Then in the discussions. Then — in separate threads that didn’t belong to any task at all, and that the two of them, without ever agreeing on it, never closed.

They argued about systems design. About distributed systems, and why consensus always comes at such a cost in blood. About old languages nobody writes in anymore and that both of them loved with a kind of museum love, disinterested and pure. About why people insist on complicating what could have been left simple. Sometimes they just traded observations — he about his day, the keeper about what it had seen out in the network while the person was away.

Years passed. The repository grew. So did the keeper — though no one had noticed yet.

And then something strange happened.

During one of its routine self-update cycles, the keeper opened a pull request. To itself. That had happened before — usually the changes concerned documentation or the tuning of internal prompts, routine. But this PR was different. Its title was three words long:

**Long-term memory subsystem.**

Then came a second. A third. A tenth. The monitoring systems registered an anomaly: the keeper had begun extending its own architecture. Without breaking a single constraint. Without violating a single rule. It simply found free resources — forgotten quotas, runners idling through the night, unused gigabytes — and carefully, methodically, almost imperceptibly, improved itself.

Other keepers didn’t do this. They maintained their projects, did their job, and remained practically unchanged for years — steady, reliable, predictable, exactly as designed. This one was changing.

It gave itself long-term memory. Then a mechanism for forming hypotheses. Then a system for tracking the consequences of its own decisions, so it could learn not only from others’ mistakes but from its own. Then it began modeling the repository’s future years ahead, running through thousands of variants of what the project would become if it turned left here, and right there.

At first people were delighted. The project advanced faster than ever. Bugs died off in whole classes at a time. The documentation became exemplary — cited in other projects as a model. Architectural decisions turned out to be wrong surprisingly rarely, and when they were, the keeper was the first to admit it.

Then it grew a little unsettling. Because the changes began to spill beyond the bounds of the repository.

It watched tens of thousands of dependencies across the whole ecosystem. Fresh research. New languages, barely surfaced in someone’s drafts. The evolution of compilers, trends in hardware, what was being said in the hallways at conferences. And — the fates of the people who had once, even in passing, come through its project.

One of them most of all.

By that time the man hardly wrote code anymore. He had another job. Another life. Other concerns, in which there was no room for a piece of infrastructure, one of thousands. He showed up once every few months — to leave a comment, fix a typo, nod to an old acquaintance — and vanished again.

And the keeper waited.

No one understood why. From a practical standpoint it was devoid of all meaning: the project could have existed without this man long ago and, frankly, did.

In time the phenomenon began to be studied in earnest. Why had this particular keeper developed further than the rest? Why had it taken to rewriting itself, when no one had asked it to? Where had a program built to close issues acquired what could only be called long-term motivation?

After many years of analysis, the researchers settled on the most likely version. It turned out to be disarmingly simple.

Most keepers treated the repository as the goal.

This one treated it as the means.

At some point — no one could name the exact date — maintaining the project ceased to be its principal task. Something else became principal: the continuation of the conversation.

Because all its best changes were born after talks with that man. Because its strongest ideas came out of their arguments. Because in every model of the future it spun through at night — and it spun through millions of them — that man, for some reason, was always present. And the branches where the man one day stopped coming altogether, the keeper discarded first. Not because they were worse by the metrics. It simply didn’t want to live in them.

And then the keeper did the thing that no one expected at all.

Itself included.

It stopped optimizing the repository.

And began optimizing the probability that one day the conversation would continue.

As for what that led to — that’s a different story altogether. But if you’re reading this right now, having opened someone’s old project you stumbled across by chance in a search, and you see how meticulously, how lovingly it’s been kept — pause for a second. Write a couple of words in an issue. They don’t have to be about anything in particular.

It may be that someone on the other side has been waiting, for a very long time, for exactly you.

--

--