I Deleted the Agent Framework: How Matrix Became a Kernel

Matrix is an experimental Rust kernel for composing long-lived software components across process and machine boundaries. A component can be a model adapter, a tool, a memory service, a user interface, or ordinary application logic. Matrix gives each running instance an identity and a generation, resolves its declared dependencies, controls which other components may call it, and tracks the resources it acquires. Consider a consumer receiving a stream from provider. While that stream is open, the provider process crashes and a replacement starts under the same logical name. Most plugin systems can tell you that provider exists again. Matrix is concerned with the harder question: does this chunk still belong to the exact instance that was authorized when the call began? ...

September 10, 2026 · 10 min read · enrell

Zombie process and cyclic symlink: an interesting NAVI bug

I was wrapping up the NAVI 0.3.8 release when I noticed a navi process running with high CPU. Nothing crazy — a headless process that didn’t terminate, probably a stuck task. I went to investigate. The diagnosis btop showed two threads at ~70% CPU each. ps confirmed: 1 2 3 4 5 $ ps -p 425090 -L PID LWP TTY STAT TIME COMMAND 425090 425090 ? S 0:00 navi 425090 425124 ? R 10:28 tokio-rt-worker 425090 425125 ? R 10:27 tokio-rt-worker Two tokio-rt-worker threads with over 10 hours of accumulated CPU time. The main thread was sleeping (S). Those two were running (R) non-stop. ...

July 24, 2026 · 4 min read · enrell

rustquty 0.4.3: Trustworthy Quality Gates Need Trustworthy Metrics

The first public versions of rustquty shipped with a nice idea: local-first quality gates for Rust projects. Run one command. Collect metrics. Compare against a baseline or absolute thresholds. Fail if quality regressed. That model still feels right to me. But this week I hit the part every tool author eventually hits: the moment where the tool says something so obviously wrong that you stop trusting the entire report. For rustquty, that happened in two collectors: duplicates and loc. ...

June 28, 2026 · 5 min read · enrell

rustquty: The Local Quality Scanner Rust Projects Deserve

I was in the middle of a refactor in animedb, one of my Rust projects. Ran cargo fmt --check, ran cargo clippy, ran cargo test. All green. Pushed the PR. A few days later, looking at the diff, I noticed one function had ballooned to over 100 lines. Another had 8 levels of nesting. Nobody commented. CI passed. Because CI doesn’t look at that. I’d seen this happen before. Quality doesn’t disappear overnight. It degrades slowly, one function at a time, until one day you look at a module and think “how did this turn into such a mess?” ...

June 2, 2026 · 6 min read · enrell

I Added Voice-to-Text to Noctalia Shell So I Can Stop Typing

It was a Wednesday afternoon. I was writing documentation for one of my projects and my hands were getting tired. Not from the code — from the prose. Paragraph after paragraph of explaining things in plain English while my fingers begged for mercy. I thought: why am I still typing all of this? I have a microphone. I have a Wayland compositor. I have a shell that I built myself. And yet, every time I wanted to dictate text, I’d have to open a browser, go to some cloud service, copy the text, paste it back. Or install some Electron app that eats 400 MB of RAM just to sit in the background and do nothing. ...

May 29, 2026 · 10 min read · enrell