Building Blimp, the first piece I wanted to really feel out was the grammar. As someone who has spent 20 years in or adjacent to Ruby, it feels natural to start there and really suss things out in order to ensure that it feels natural to write. Yes, AIs are going to be cranking out a lot of this. We all know that. But here's the thing: you are still the one sketching. You are still the one who looks at what the agent wrote and goes "no, not like that, like this." You are the driver even when you're orchestrating AI at a mass scale, defining the responsibilities, drawing the boundaries of the system. The human holds the pen even when the robots are holding all the other pens. So the grammar has to feel good in your hand, not just parse correctly in a machine.
There will be riffing, there will be notes to the robot and sketches done, there will be some real action involving the lang.
So, we want it to feel good.
To begin with, we built a parser. It is written in Zig with a tree-sitter grammar that mirrors it and it can parse real Blimp code into an AST right now. There's a full corpus of test cases that exercises every construct you'll see in this post. This is not hypothetical syntax, it's running code.
And all of this ties into the tooling. Everything is powered by a diff viewer that follows the work as a multiplexer. You can drop messages to sessions trivially, each agent sitting there in its own pane. The diffs are semantic, not line-by-line text diffs, structural diffs that know a function moved, not that 30 lines were deleted and 30 were added somewhere else. Time travel works at two levels: version control gives you the history of your source, and the debugger gives you the history of your system's state itself because every become is a snapshot. You can scrub through both. The language works reflexively, it can describe its own behaviors, its own flow, its own contracts and boundaries while also running them. The tools and the language are the same thing.
This sounds crazy but I already have the diff viewer with the multiplexer in a functional state. It follows files, it stages, it commits, it has keyboard nav and follow mode. The multiplexer runs up to four Claude sessions side by side in a split-pane grid. We're using these tools with Claude to build this, but later it'll be agents specially trained on Blimp itself as we implement more and more of it and start writing libraries and the standard actors and all the rest. We're building the tool that builds the language that defines the tool. It's turtles all the way down and I'm having a great time.
So with that, let me walk through every piece of the grammar as it sits right now. I'm writing out programs to feel how they work. A good bit of this will change, but we're going to try to nail "the good parts" early.