$ blitz

A terminal coding agent that scripts itself

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

A sidebar from one prompt

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

What it does

Tools, agents, commands and TUI widgets are all Lua.

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

Sub-agents

Defined in Lua, optional. The harness comes with great defaults for common usecases: code-review and research agents.

/review · /team

Hot reload

Edit blitz.lua while the session runs. Tools, agents, commands, keybinds and hooks reload on save.

~/.config/blitzdenk/blitz.lua

Minimal by design

Less is more, models are getting better by the day. There are no guardrails, system prompts and tool descriptions are tiny.

SSH remotes

An optional tunnel layer runs the tools on another host over plain SSH.

/ssh user@host:~/project

MCP and skills

Connect MCP servers and load skill files from project and user layers.

blitz.mcp.add

03 // extend

The config is the API

Start with one file: ~/.config/blitzdenk/blitz.lua, or ./blitz.lua per project. Tools, agents, commands, keybinds and hooks go there. Everything is Lua!

~/.config/blitzdenk/blitz.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

also in the file

add_agent
agent types, models, prompts
add_command
slash commands
bind
keybinds
hooks.*
lifecycle hooks
draw.*
custom TUI widgets
state.*
session state
agent.spawn
sub-agents from scripts

ships with

/plan
scope the task before code
/review
code-reviewer agents over the diff
/team
multi-agent orchestration
/show
explain with Mermaid diagrams
/improve
review the session, patch the harness

04 // tutorials

How to write Extensions

05 // faq

FAQ

What is Blitzdenk?

A terminal coding agent. It plans tasks, edits code, runs commands, spawns sub-agents and registers new Lua tools for the project.

What does it depend on?

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.

Does my code leave my machine?

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.

Which models are supported?

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.

How do I extend it?

Edit blitz.lua. Save it, and the running session reloads. The agent can write the files for you mid-task.

How do I install it?

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.

Is Blitzdenk free?

Yes. MIT licensed and open source. You pay only the model provider you choose, or nothing at all with local models.