dvito.cloud is an AI lab for building practical products around AI infrastructure, agents, and developer tooling. The lab owns and builds zei.sh , an ephemeral microVM sandbox platform for AI agent execution. More products are in development.
zei.sh is a cloud platform providing ephemeral microVM sandboxes (Firecracker and Cloud Hypervisor) for AI agent execution. Clone, branch, and snapshot environments, built for reproducible agent runs, untrusted code execution, and evals. Currently in public beta (v0.1), with a TypeScript SDK, an HTTP API, SSH/WebSSH terminal access, and real-time metrics and logs dashboards. Highlights: 124ms…
I have been thinking about AI infrastructure from the compute side more than the model side. There is a lot of noise around AI infrastructure right now. Most of it is about models. The part I care about is everything around the model: where work runs, how fast sandboxes start, how isolated they are, how they reach private tools, how you measure usage, and how you keep the whole thing…
I have been thinking a lot about scheduling lately, especially once warm starts and reservations enter the picture. Schedulers are easy to make impressive in a slide deck. They are much harder to make honest. You can pack nodes aggressively, overcommit a little, and brag about utilization. Then a few bad placement calls land on the wrong hosts and the whole thing feels brittle. That is why I care…
I love logs, but logs alone have not been enough for the kind of machine lifecycle work I have been doing. You do not really know a platform until something slow or broken happens. That is when the nice diagrams stop helping. A request takes five seconds instead of two hundred milliseconds. A machine gets stuck during startup. A route exists, but traffic still fails. A node looks healthy until you…
I actually like SSH. It is useful, fast, and hard to avoid when you are building infrastructure. Still, there is a point in every infrastructure project where SSH becomes a bad habit. At first it feels fast. Jump into a box. Edit a file. Restart a service. Fix the thing. Then the fleet grows, and you realize your operating model is just "hope the last person remembers what changed." That is not a…
When I started thinking about exposing services from machines, one plain question kept showing up: How does traffic reach a machine? That question sounds smaller than it is. Public ingress is not just HTTP. It is TLS, SNI, raw TCP, SSH, WebSSH, machine ownership, and route cleanup when the guest disappears in the middle of the day. That is a lot of stuff to hand-wave. In this post, I want to…
Once private networking starts to work, DNS becomes the next obvious problem. If private networking is the road system, DNS is the street sign. And like street signs, you only notice it when it is wrong. Nothing makes a platform feel flaky faster than this: the machine is up the network path works the name still does not resolve That gap is small on paper and painful in real use. I have run into…
After getting machines to boot reliably, networking was the next thing that forced me to slow down and think properly. Private networking sounds simple when you say it quickly. "Just let the machines talk to each other." Then you try to do it across hosts, across regions, across reboots, without handing every guest a pile of custom firewall rules and mystery routing. That is where the clean model…
One of the things I care about most in a compute platform is startup time. People say they want fast machine starts. What they usually mean is they do not want to wait while your platform does cold work right in front of them. That distinction matters a lot. If you create a machine from scratch on demand, you are paying for a bunch of slow steps in public: prepare a root filesystem create overlays…
I like control planes that can die without drama. If a regional API process restarts, I do not want a rescue mission. I want it to come back, rebuild what it needs, and keep serving traffic. That pushes you toward a simple rule: The control plane should not own more durable state than it has to. I ran into this while thinking through the regional control plane. The more state I wanted to push into…
After removing the earlier draft for this slot, I still wanted a post here that explains one of the most important parts of the platform: what actually happens on the worker node when a machine gets created. This part matters because a lot of the rest of the system only makes sense once you know what the worker is responsible for. The control plane can pick a node. The proxy can expose traffic.…
While working on the worker side of the platform, one thing became obvious pretty quickly: machine lifecycle code looks easy only when you test happy paths. Create a machine. Start it. Stop it. Delete it. That idea falls apart the first time a host reboots halfway through startup. Now you have harder questions: Was the VM process created? Did networking finish? Did the root filesystem get…
Over the past couple of years, I have been spending a lot of time with Firecracker, microVMs, and a distributed compute platform I have been building. It started with a simple goal: run Firecracker on a machine I control and understand every moving part. That sounds small, but it really is not. The first few steps are easy enough to explain. Boot a VM. Get KVM working. Start Firecracker. Launch a…
I had a lot of files in a git repository, which I didn't want to add in git , So to remove all of them to a temporary directory I used a collection of Unix commands. git status - -porcelain | awk ' {print $2} ' | xargs mv - t ../scratch
Image generated using Adobe Firefly AI I picked up Animal Farm right after 1984 . I expected something smaller and easier. It is smaller. It is not easier. The plot is almost too neat. Animals kick out the farmer, promise a better world, and end up under a new set of tyrants. Orwell keeps it plain, which is exactly why it works. Nothing feels dressed up. You watch the hope drain out of the farm…
In the heart of Himachal's Parvati Valley lie its hidden gems: Pulga and Kalga. Picture-perfect villages embraced by towering mountains, where every corner tells a story of nature's magnificence. Here, snow-capped peaks stand tall, kissing the sky, while icy waterfalls dance down the slopes, painting the landscape with their pure, untamed beauty. Despite the biting cold, every moment…
Image generated using Adobe Firefly AI I knew the broad shape of 1984 before I read it. Big Brother. Surveillance. Thought Police. All that. What I was not ready for was how suffocating the book feels page by page. Orwell does not rely on giant twists or clever worldbuilding tricks. He just keeps pressing on the same sore spot. The telescreen is always there. The slogans are always there. The…
Image generated using Adobe Firefly AI The Idiot is not a smooth read. It is crowded, restless, dramatic, and at times almost too much. That is also why I liked it. Prince Myshkin is the reason the whole thing works. He is kind in a way that feels dangerous to everyone around him. Not flashy. Not saintly. Just open, honest, and weirdly free of the usual games people play. That makes him hard to…
VM on Google Compute Engine (GCE) supports nested virtualisation, unlike AWS, and allows to run KVM. We can create a VM on GCE to run and test Firecracker microVM. Here are the steps Setup GCP Project and Zone FC_PROJECT = y o u r _ n a m e - f i r e c r a c k e r FC_REGION = u s - e a s t 1 FC_ZONE = u s - e a s t 1 - b gcloud config set project $ { FC_PROJECT } gcloud config set…
In this article, we will be looking into setting up networking on a linux box from scratch. We will be creating a fresh new VM using Lima on macOS. You can create a new VM using VirtualBox, Vagrant, or even create a VM on OCI for free. Isolation based on Network Namespace The common thing that constitutes a network stack includes the: Network Devices Routing Rules Netfilter Hooks We can create a…
How to ignore new files Globally Add the path(s) to your file(s) which you would like to ignore to your .gitignore file (and commit them). These file entries will also apply to others checking out the repository. Locally Add the path(s) to your file(s) which you would like to ignore to your .git/info/exclude file. These file entries will only apply to your local working copy. How to…
I created a static website linkbin , Where I could save links in a markdown file that can be viewed later. It is serving its purpose and because it uses hugo , I don't have to think about VPS cost. Recently, I ran into an issue where my website serves links but when you click on it, It will open the link in the same tab. Ugggh! I don't want to close my website just to open a link.…
I personally love writing APIs. It's my favourite thing about backend development. As developers, we interact with APIs all the time: to process payments with Stripe, handle geolocation with Google Maps, retrieve tweets, etc. So what exactly makes a RESTful API great? What can you do to ensure that it's easy for other developers to use? Let's dive right in. Responses In your…
Scrapy is great for scraping static web pages with Python, but when it comes to dynamic pages it can only do so much. That's where Selenium usually comes in, but as good as Selenium is, Scrapy still beats it in terms of speed. The web these days is full of dynamic JS-based pages and AJAX. For exactly that scenario, the folks over at scrapy-plugins created scrapy-splash . Scrapy-Splash is a…
A couple of days ago (at the time of writing), I started my newest side project. It's a portfolio showcasing my (very very very) amateur photography. It's written in React.js with Sass and I have to say it was extremely enjoyable to work on. Unsurprisingly though, I ran into some issues while deploying to production which, after a lot of head banging against every possible flat surface I…
So I'd been working with Django, Flask, and Express.js for a while, and my database of choice for pretty much every project had, of course, always been Postgres. What makes these frameworks great (regardless of language) is the ability to use an ORM (Object Relational Mapper) that sits between your code and the DB. It does all the heavy lifting for you and takes care of executing SQL queries…
I'm a programmer. Like most programmers, I use an Apple laptop. They're just the best on the market and the best purchase you can make as a developer. No fanboyism here, just stating facts. They're fast, well built, and durable. I rely on this laptop for all my personal / client work. I run Vagrant boxes, Docker containers on it and all the usual stuff. As a result, I've…
I'm going to make a bold statement: Django replaced Ruby on Rails in the hearts of many developers. With this increase in popularity, we've seen tons of articles, videos, and websites dedicated to setting up Django and creating apps with the framework. Unfortunately, when it comes to deployment, many of these resources only mention heroku or pythonanywhere. While these are excellent…
In this short post (spoiler: it's actually quite lengthy), I'm going to walk through a list of useful methods in the os module (which is part of the Python standard library) for handling files and directories. 1. Create a directory This one is pretty straightforward. If you're comfortable with the linux shell, you know that mkdir is the command to use to create directories.…
A short list of Python tricks that make day-to-day code a little nicer. Nothing too magical, just handy stuff. 0 - Loop over a range of numbers Use range instead of xrange . In Python 3, the former creates an iterator-like object that produces values one at a time, which makes it much more efficient. nums = [ 0 , 2 , 34 , 55 , 32 ] for i in range ( nums ) : print i 1 - Looping backwards Just use…
As developers, we all (hopefully) use git. It's not extremely hard or time-consuming to get started with it, and you'll surely thank your future self for taking the time to learn it. Ok, that was the cringy intro. Now let's get down to business: what I really want to share in this post is a list of tricks I've learned during the past 2 1/2 years of using git. Some of it…
I'm currently sitting at the most boring meetup I've probably ever attended in Delhi. It's about chatbots. I don't care about chatbots, I care about free stickers and pizza. So I'm using this opportunity to open up about a subject that's dear to my heart: vim. I used to believe vim was exclusive to this superior race of developers who gulp coffee like it's water…
Some theory Bubble sort is one of the most commonly known sorting algorithms. The idea is simple: scan a list of items (say integers) sequentially, from left to right, and compare consecutive pairs of elements starting at index 0. Example: my_numbers = [ 92 , 11 , 45 , 2234 , 0 , 7 , 65 ] # 92 is index 0 and the consecutive pairs are # (92,11), (11,45), (45,2234) and so on ... First we compare…
Theory Quicksort is a "divide and conquer" type of algorithm. One good thing about it is that the worst case can almost always be avoided by using what's called a randomized version of quicksort (more on that later). The idea of Quicksort is to take an unsorted list and select one element from it called a "pivot". Then the list is rearranged such that all elements greater (in value) than the…