Since it’s again spring, it was time for a clean-up project I’ve postponed for a long time: cleaning up ix.ai.

Table of Contents

Migrating Projects (a.k.a. Git gymnastics)

The centerpiece of this clean-up was moving all relevant Git repositories from the old gitlab.com/ix.ai namespace to the much cleaner and better-scoped gitlab.com/egos-tech. Sounds simple, right?

Well, turns out that migrating dozens of repos while preserving pipelines, tags, issues (where relevant), and CI/CD setups… isn’t quite as plug-and-play as you might hope.

Some fun facts from the trenches:

  • I used a combination of git clone --mirror, git remote set-url, and git push --mirror more times than I care to count. I ended up relying more and more on forks or changing the namespace of the project.
  • Yes, I briefly considered writing a migration script. Yes, I also considered setting my laptop on fire instead.
  • GitLab doesn’t let you bulk move or rename groups (yet), so everything was done project-by-project—with a few awkward moments when environment variables had to be manually adjusted.

CI/CD: from Spaghetti to Simplicity

Most legacy projects came with lovingly hand-crafted .gitlab-ci.yml files—some of which dated back to the Jurassic period of GitLab CI. These have now been:

  • Rebased on the shared ci-image, which includes sane defaults for Python, Node.js, and general Linux-based builds.
  • Refactored to use a consistent pipeline structure: test, lint, build, and release stages, with caching that actually works™.
  • Switched to centralized Renovate Bot config to make dependency updates less chaotic and more predictable. (No more random MRs at 3AM on Sundays.)

Bonus: everything now runs faster, logs are easier to parse, and I actually trust the pipelines again.

Why egos-tech?

The old ix.ai group was kind of like that drawer in your kitchen where you find batteries, loose cables, and an instruction manual for a blender you no longer own. It grew organically, lacked a clear scope, and had naming conventions ranging from cryptic to “please don’t ask”.

With egos-tech, the goal is clarity: everything in there has a purpose, a home, and hopefully fewer legacy decisions haunting me at night. As a bonus, I also archived the mirrors under github.com/ix-ai, so no more double-work.

What’s Next?

Now that the cobwebs have been cleared, I can actually:

  • Start shipping updates to small CLI tools that have been dormant for too long.
  • Open-source a few internal helpers I’ve been using privately (like the Docker builder cache setup that doesn’t suck).
  • Maybe even write docs. (No promises.)