Visual rendering
Mermaid diagrams and images render inline in the TUI if your terminal supports it. Pairs well with Ghostty or Kitty
mermaid · kitty-graphics
$ blitz
Native Zig core with a hot Lua sandbox. The agent can interact directly with its VM in codemode or write durable tools into a blitz.lua, permanently molding to the project you are building.
// install
$ curl -fsSL https://raw.githubusercontent.com/Lommix/blitzdenk/master/install.sh | sh
no sudo · binary in ~/.local/bin · read install.sh · prebuilt binaries
<2 MB
single binary
<99 MB
memory used
0
dependencies to install
<3 ms
startup
01 // demo
Ask for a sidebar, and the agent loads the blitzdenk-lua skill, writes the Lua, smoke-tests it in the sandbox, then hot reloads the tool.
02 // features
Tools, agents, commands and TUI widgets are all Lua.
Mermaid diagrams and images render inline in the TUI if your terminal supports it. Pairs well with Ghostty or Kitty
mermaid · kitty-graphics
Defined in Lua, optional. The harness comes with great defaults for common usecases: code-review and research agents.
/review · /team
Edit blitz.lua while the session runs. Tools, agents, commands, keybinds and hooks reload on save.
~/.config/blitzdenk/blitz.lua
Less is more, models are getting better by the day. There are no guardrails, system prompts and tool descriptions are tiny.
An optional tunnel layer runs the tools on another host over plain SSH.
/ssh user@host:~/project
Connect MCP servers and load skill files from project and user layers.
blitz.mcp.add
03 // extend
Start with one file: ~/.config/blitzdenk/blitz.lua, or ./blitz.lua per project. Tools, agents, commands, keybinds and hooks go there. Everything is Lua!
blitz.register_tool({
name = "todo_add",
description = "Append a task",
args = { text = { type = "string", required = true } },
func = function(ctx, call)
local todos = blitz.state.get("todos") or {}
todos[#todos + 1] = call.arguments.text
blitz.state.set("todos", todos)
return { msg = "added" }
end,
})
save and the running session picks it up
04 // tutorials
01 · tools & state
Four tools with persistent state, plus an inject hook that keeps open tasks in the model's context.
Read tutorial
02 · permissions
A small model reviews every permission ticket and blocks calls the user never asked for.
Read tutorial
03 · TUI drawing
Register a render callback and paint your own terminal region with the buf API.
Read tutorial
04 · web access
Pages as markdown and ranked results from the Brave Search API.
Read tutorial
05 · herdr
A Lua script reports idle, working and blocked to the herdr sidebar, with live model, context and cost tokens.
Read tutorial
05 // faq
A terminal coding agent. It plans tasks, edits code, runs commands, spawns sub-agents and registers new Lua tools for the project.
No dependencies. It is one Zig binary with vendored Lua, and file IO uses the POSIX tools (ls, tee, cat) that your system already ships.
Only to the model provider you choose. Sessions, config and state are files on your disk, and API keys come from environment variables. Use a local Ollama endpoint and nothing leaves your machine.
Any OpenAI- or Anthropic-compatible endpoint (chat or response schema), plus Ollama for local models. Every agent can bind its own model and reasoning effort.
Edit blitz.lua. Save it, and the running session reloads. The agent can write the files for you mid-task.
Run
curl -fsSL https://raw.githubusercontent.com/Lommix/blitzdenk/master/install.sh | sh
. No sudo; the binary goes to ~/.local/bin. Prebuilt binaries are on the GitHub releases
page.
Yes. MIT licensed and open source. You pay only the model provider you choose, or nothing at all with local models.