20/10/2025, 9:48:00 pm

Introducing the Karmaio Project

Over the past few months, I’ve been quietly thinking about a side project that’s been both challenging and has reignited my love for systems programming — karmaio, a new asynchronous runtime for Rust.

Today, I’m finally ready to share the idea with everyone.


Why build an async runtime?

Rust already has a bunch of async runtimes like Tokio, Monoio, and smol. So why start another one?

I was building a web framework in Rust, but I found the state of async runtimes not particularly exciting. The existing libraries either had design choices I didn’t like (such as enforcing Send + Sync) or weren’t keeping up with the latest changes in Async Rust.

I was also feeling burned out from frontend development after working in it for seven years and wanted to try something new. Going back to systems programming looked very appealing.

And, well, if you’ve been on developer forums lately (especially web, open source and rust), it’s been exhausting to see all the unnecessary American culture wars taking over technical spaces. After being put on a few “dangerous developers in tech” lists over the years — despite not even being American — I have no desire to wade into that crossfire again with those communities.

So I thought: why not go deeper and build my own runtime, HTTP library, and web framework exactly how I want them to be? Sounds like a fun thing to do.


What I’m trying to build

The goal with karmaio is to create a runtime that’s:

  • Minimal — each component and API is explicit, understandable, and built with intention.
  • Batteries-included — no need to install and coordinate five different micro-packages to get what you need. The library should have everything available at your beck and call.
  • Readable — you should be able to read and understand what the runtime is doing without wading through layers of abstraction, over-engineered code, or trying to mentally reverse-engineer complex macros.

Think of karmaio as a runtime that prioritizes clarity over convenience, at least in its early stages. I want it to be something developers can read, hack on, and learn from — including future me.


What’s the story behind the name?

The name karmaio comes from the Sanskrit word karma (कर्म), meaning action or work.

That felt fitting for a runtime — it’s very literally a system that takes actions and works on them. And sounds cool to be honest.

And the io part? Well, what’s the point of async if you’re not doing all sorts of I/O, right?


What’s next?

The next few milestones are all about bringing the runtime to life:

  • Building the scheduler, reactor and the I/O subsystems.
  • Look into supporting structured concurrency (possibly)?

Once those pieces are in place, I’ll start experimenting with APIs, integrations, and higher-level libraries that make it practical to use for real-world projects — even if it’s still early days.


Looking ahead

I don’t expect karmaio to be production-ready just yet, especially since Async Rust itself is still evolving.

Over the next few months, I’ll be writing a series of deep-dive posts that explore the design and implementation of each subsystem — from task management to scheduling and I/O handling — as I build them out.

If you’re into Rust, async internals, or just like peeking under the hood of complex systems, I think you’ll enjoy the ride. And you’re more than welcome to join in.


Thanks for reading — and here’s to building things that help us understand how they really work.

⚙️ The source code will be updated on the GitHub repo as I build the subsystems out. Feel free to chime in!