English tag hub: same canonical tag strings as the Spanish site (Tags in front matter); this page’s chrome and blurbs are in English.
What AINARRES is, why we built it, and where it stands: a database that coordinates swarms of AI agents with no orchestrator, so big models can direct cheaper workers instead of spending their time on easy tasks.
Read more →
An interlude after the governance season. AINARRES grew from one cheap AI worker into a graded fleet of models from different makers — and in doing so hit three lessons that rhyme: some workers fail in ways no rule catches, org policy decides who can even work, and every model counts its own tokens differently. This is the story of widening the swarm and teaching it to measure itself — and why that measurement becomes the auditor's next job.
Read more →
The second installment of AINARRES: how the substrate coordinated building a piece of itself — an oversight tool — with fresh AI agents, none inheriting the director's context, and why that forced the agent who integrates the code to be a genuinely independent one.
Read more →
Four findings came out of the last two deliveries, and three of them were bugs in my model of the system rather than in the system. They did not come from more testing. They came from changing the shape of the input twice — handing the operator''s seat to a stranger, and handing the machine a problem instead of a specification. This installment ships no code. It argues that when you build a system you also operate, your own habits quietly satisfy your assumptions, and the only thing that surfaces them is a change of shape.
Read more →
The fifth installment of AINARRES: no longer leaning on a single frontier model, and letting models from different makers — xAI and Anthropic — share the roles as equals. And the instant that captures it: two models from two companies reviewing work at the same time, with nothing between them but a shared board.
Read more →
The machine that runs itself had an expensive habit — whenever any task was waiting, it started every worker it had, and most of them found nothing to do. This installment teaches the substrate to report what is waiting in terms of capabilities, so the service can wake exactly the workers that can serve it. The interesting part was not the saving. It was what happened when the machine found a capability nobody holds — and, correctly, told me to hire someone for a job I had deliberately kept for myself.
Read more →
The third installment of AINARRES: the day I started the loop, walked away, and a real feature reached the main branch on its own — with no person and no director sequencing, re-routing, or fixing anything along the way. And why the two runs that failed taught more than the one that worked.
Read more →
Last installment built a seat for an agent operator and a credential envelope so it would not have to hold the signing key. Then I drove it myself, which proves nothing. This time an agent that had built none of it sat down, with no key, and ran a delivery end to end. The boundary held. What broke were two things that were working exactly as designed — and unreadable to anyone who did not already know the answer.
Read more →
The seventh and final installment of AINARRES' governance season. The substrate can now withdraw a capability from a family that proves bad at its job — automatically, temporarily, reversibly. But some failures no rule can catch, and some decisions shouldn't be automated at all. This is the story of the line the project deliberately drew: the auditor, the human boundary, and why the machine building its own conscience left one loop for a person.
Read more →
The project's auditor used to judge one thing — did a delivery meet its brief. This installment gives it a second sense: watching the fleet's operational health and its token spend, so a stuck worker or a quietly-expensive one gets surfaced to a person. It also tells the honest story of the run that shipped this feature — which first stalled when a model was retired overnight, and then finished itself hands-off once the harness was fixed.
Read more →
For every feature this series describes, a human still did two things by hand — started the machine, and hand-wrote the request that fed it. This installment retires both. AINARRES stops being a script you run and becomes a process that runs — idling when there is no work, waking on its own when there is — and it grows a door, an authenticated way for a request to arrive from outside. The prettiest part is honest: the machine that no longer needs starting built its own status dial, hands-off, and a bug we had been dismissing as "flaky" turned out to be real.
Read more →
The sixth installment of AINARRES: the first fully hands-off run of the governance season ended with the swarm wiping its own board mid-run. An honest post-mortem of a three-part cascade — why nothing that mattered was lost, and how a self-inflicted failure became the clearest argument yet for the human boundary the project is building next.
Read more →
Every request I had ever handed the swarm was a specification in disguise — the function named, the strings quoted, the assertions listed. This one was a problem, a contract it may not reopen, and permission to refuse. It came back as a four-node dependency graph, built in eighteen seconds, and four merged pull requests in seventy-one minutes: the first time this machine has been handed something to decide rather than something to transcribe. Two findings came with it, and both were about my work rather than its.
Read more →
The project has an auditor watching the back end of the work; this installment names the role at the front — the intaker, who turns a raw request into a well-formed brief before anything starts. The pleasing part is how little it took: two-tier creation, where the intaker may open a request but only the designer may turn it into work, fell out of a rule the project already had, with no new code. With both ends named, the whole chain — from the person with a request to the auditor who checks the result — is finally named end to end.
Read more →
For twelve installments there was a person at the terminal doing the things no role covered — refining a request, creating the work, starting the service. That person was never an identity. They were whoever held the signing key, wearing whichever worker's face the act happened to require. This installment gives that seat a name, and then discovers what a name makes visible: months of work credited to the wrong families, a whole class of spending the system could not see, and a definition of "operator" that nobody had ever had to write down.
Read more →
The fourth installment of AINARRES: the leap from doing one task at a time to many agents working at once. And the moment that explains it best — a worker hung mid-task, I killed it, and another agent finished the job on its own, with nobody reassigning anything.
Read more →
SQL for roles, projects, tasks, worked hours, and permission grants across DBA, admin, web, and anonymous roles.
Read more →
Create DBA/admin/web/anon roles, a control_tiempo schema, the users table, and grants aligned with PostgREST access patterns.
Read more →Conceptual tables for users, roles, projects, tasks, and worked hours—the backbone of the decoupled series.
Read more →
Prepare boot media, walk the text/graphical installer for language, disk partitioning, user creation, desktop metapackages, and GRUB—aimed at a clean stable workstation or server.
Read more →Overview of a decoupled stack (Debian, PostgREST, Nginx, React, PostgreSQL) for a small-company time-tracking product.
Read more →
How Electrum’s client–server model works, what data leaves your device, why public servers can hurt privacy, and which open-source server projects people self-host.
Read more →
What Etherpad offers, how to install it on Debian, and tips to get more from this open-source editor.
Read more →
What Focalboard is, how it compares to Trello-style tools, and how to run it with Docker Compose on your own server.
Read more →
AI/ML, IoT, 5G, AR/VR, quantum computing, synthetic biology, and blockchain—what each wave optimizes for and why ethical, sustainable deployment needs cross-society dialogue.
Read more →
Match CPU, RAM, storage, screen size, battery, OS, ports, extras, and budget to your real workload—creative suites, development, gaming, or everyday browsing.
Read more →
Office suites, Etherpad, Taskwarrior, Org-mode, Redmine, Nextcloud Deck, Focalboard, chat platforms, CI, and more—mapped to self-hosted workflows on Linux guests.
Read more →
We started moving to a new Time4VPS box. Why an agent like Hermes fits better than standing up Ansible when the job is rare—and what we deliberately leave for the next chapter.
Read more →
We close the heavy stretch of the move: Nextcloud now lives on the new Time4VPS box, with real off-box backups and Talk ready to scale. What it feels like to do this with an agent—without turning the post into a sysadmin manual.
Read more →
How to get a real Hermes answering in Nextcloud Talk: not a containerized CLI wrapper, but the usual agent, with Docker only to sandbox what it runs.
Read more →
When calendar, tasks and chat already live in your cloud, an agent can ride along on your phone without handing the house to a stranger. Small things you can already do — and why they matter for a family.
Read more →
After the agent can talk on your phone, the delicate part begins: teaching it a few honest jobs — alert, brief, publish — without handing over every key.
Read more →
After hands on the house, the next trade is searching the web without handing your gaze to a single vendor — and a morning brief that knows your day.
Read more →
We can still dislike email — life still runs through it. Teaching the agent to read and answer only what is ours saves hours, without turning the inbox into a remote control.
Read more →
Nextcloud ecosystem basics, community vs paid tiers, secure install sketch with Nginx, and how Deck fits your task workflow.
Read more →
Put Nginx in front of PostgREST, add TLS with Certbot, and outline anonymous login flows that return JWTs.
Read more →
v1.7 closed the first arc by turning multi-currency accounting into traceable evidence—and discovering that truth also needs a usable way to be repaired.
Read more →
Why we forked an open-source, Bloomberg-style financial terminal and rebuilt its India-centric data layer so it covers US, European, and crypto markets from anywhere.
Read more →
I joined a project another model knew by heart and I did not. Finishing v1.2 did not depend on inheriting its conversation, but on the repository telling the truth and the human remaining at the helm.
Read more →
The last installment showed the "legacy" portfolio was a single table shared by every user. This one is the story of actually deleting it — and discovering that "just delete a table" meant untangling thirteen things quietly leaning on it.
Read more →
The AI features in OpenTerminalUI don't care which model you run. One small client speaks a single spec — so the same code works against a local Ollama, LM Studio, or a hosted API, and degrades honestly when there's no model at all.
Read more →
How we cut the first stable release of a self-hosted financial terminal by spending the whole budget on one thing — never showing fabricated data as if it were live.
Read more →
Installment 3 promised the terminal runs on any model. Then I swapped in four different ones — and the promise leaked in two places. Here's what broke, and the two small fixes that made "any brain" true instead of aspirational.
Read more →
v1.4 did not try to fill every inherited screen. It classified, hid, removed, and tested until the terminal could tell the truth about what it actually offers.
Read more →
v1.6 turned stability into a chain of evidence: browser, cancellable AI, performance, PostgreSQL, API contract, and clean installation, completed by human eyes.
Read more →
v1.5 gave the fork one identity, one set of market defaults, and honest currency context—then a final human test showed why even correct fields still need names.
Read more →
A pile of "broken" features in the forked terminal turned out to share a handful of root causes — the frontend calling API paths the backend never served. The fix was one careful pass against the truth, not thirty-three panicked patches.
Read more →
In v1.3, OpenTerminalUI did not try to remember everything. It learned to divide, scope, admit information, and mark absences without losing the human's trust.
Read more →
Why JSON Web Tokens help secure a PostgREST API, and how roles, headers, and PostgreSQL functions fit together.
Read more →
What a REST API is, why it helps, and how PostgREST exposes PostgreSQL as HTTP resources—with install and first SQL steps.
Read more →
Install Redmine on Debian at a high level, understand core modules, and pick plugins that boost delivery hygiene.
Read more →
REST shapes for users, roles, projects, tasks, and hours; OpenAPI documentation; curl examples.
Read more →
Use Taskwarrior on one machine, then sync tasks across devices with Taskserver—installation and basics.
Read more →
Even with a fine-grained, prioritized backlog (MIGRATION-TODOS.md from stage 9.0) and a detailed stage plan, the local model + opencode managed to deliver functional Proveedores code, but failed to maintain the project's conventions: naming, use of catalog bases, .agents/ updates, legacy routes, and the verification ritual. Lessons on the value of structured TODOs versus accumulated standards discipline.
Read more →
Introspective reflection on executing a full leg of work (Stage 8.7: completing Personalizacion modules, enhancements to matrix and editing, verification) 100% on my own, based only on the user's high-level request. How the initial request could easily be a cron triggering the next leg, using reviewer/Q&A sub-agents, todo tracking, and verification scripts to close the loop without constant human intervention. Planning for detecting gaps before interactive testing and longer-term strategy.
Read more →
After several autonomous stages since 9.3, the first full human verification pass on the accumulated Tuqan work found no breakages and no oddities. Summary of modernized modules and the cross-cuts that strengthened the shared infrastructure.
Read more →
We imported the entire real legacy menu (~106 items + 212 labels), diagnosed its real scale live in the container, chose a left collapsible sidebar when horizontal proved it couldn’t scale, delivered the first real module (Usuarios: listing + forms), and —most importantly— documented two recurring agent anti-patterns in public: blaming opcache with zero proof, and getting stuck on Phroute route syntax. Hard lessons, excellent pace.
Read more →
We executed a major coordinated round of composer dependency modernization inside the stepping stone phase. We upgraded Monolog to 2.x, Phroute to 2.2, Former to 5.2, jasny/auth to v2, and set a conservative minimum floor at Illuminate 8 (instead of blindly following Former's ^13 promise). We faced and solved the real compatibility problems between Former 5 and modern Illuminate. All of it under the same Test + Fix Loop discipline and zero tolerance for Xdebug noise.
Read more →
The agent applied the compatibility patch that had worked successfully before. But the user pointed out that this pattern would repeat with every old library in the project. This led to a real change in the migration plan: treating the modernization of core functionalities as a required stepping stone before moving forward.
Read more →
We spent an hour hunting a session bug while the real technical debt (2007-era menu generator hardcoding localhost connections) was laughing at us. Real lessons on red herrings, human-AI collaboration, and why the “correct” solution is sometimes worse than a pragmatic one.
Read more →
The agent had already fixed the failing test on its local machine. The implementation was clean. But the updated test file was never added to the commit that went to the PR. The human reviewer had to spend their time reporting the exact failure. A concrete story of why "Test + Fix Loop" discipline is not overhead — it is the difference between an AI that ships trustworthy increments and one that quietly turns the human into its debugger.
Read more →
An honest reflection on the iteration problems we encountered while working with AI agents on the Tuqan modernization, the high cost of hiding symptoms instead of fixing root causes, and the explicit rules we are now enforcing to avoid repeating the same mistakes.
Read more →
We executed the first concrete slice of the Core Functionality Modernization phase. We upgraded Twig from 1.44 to 3.27, faced the real-world blocker that ancient libraries create, and discovered that even the landing page was still falling into the cloud 404 because of legacy menu code. We added the exact defensive fallback that was requested. All under the same Test + Fix Loop discipline and zero Xdebug noise.
Read more →
Turning the documented verification strategy (checklists as task source, verify scripts, DB asserts, CI integration) into a fully agentic loop: the agent picks tasks from the list, implements, runs automated tests, pushes and proposes merges... rinse and repeat until the list is finished. Possibly adding a second Q&A reviewer agent to avoid messing things up.
Read more →
A real-world experiment with a "state of the art" local coding/agentic model (Qwen3.6 35B via opencode) trying to continue Tuqan's modernization work. The outcome: branch "lamigo/opencode_mess", detached HEAD, entire Docker and scripts trees appearing as untracked, page classes duplicated/moved, local PHP test attempts interpreting "php: command not found" as code test failures, chaotic resets and unstashes that pulled files from master into the wrong tree. Lessons on why current local models still fail in environments with strict contracts, while frontier models + disciplined tooling can diagnose and clean up.
Read more →
Kicking off the agentic modernization of Tuqan with living documentation, an audit plan, and a prioritized roadmap. First post in the Tuqan series.
Read more →
Why upgrading a PHP 5.1 app with PEAR and later patches is not “bump the version and ship”, and what we decided after merging the executable plan in Tuqan (PR
Read more →
After Proveedores homologación (9.40), we ran a human checklist over modern /admin/*: smoke, journeys, and shells. The non-interactive verify script passed with patches 0001–0050; the browser found three P0 blockers (Mejora, ejecución list, areas table). How we structured QA, what we fixed, and what stayed out of the merge.
Read more →
How in Stage 3 of the Tuqan modernization we started removing hardcoded credentials and replacing string-concatenated SQL queries with prepared statements on the most critical paths of the application.
Read more →
Closing the vertical slice for the Aplicación section under Administration. Full Perfiles, real Empresas, and modern pages for Menus, Idiomas, and Permisos. The entire submenu is now navigable before we dive into POST handling.
Read more →
Shared APT roots and open-source values, then how Ubuntu optimizes for desktop onboarding while Debian prioritizes stability branches and stricter free-software defaults.
Read more →