Readable by design
English operators, pipes that flow left-to-right, onerr for error handling, and named enums. Skim a file and follow what it does — no dense syntax to decode first.
v0.13.0 — latest release ↗
Readable Single Binary
A readable language that ships as a single binary, brewed from what Go leaves on the table. English operators, pipes, onerr, and a friendly stdlib — fetch, concurrent, llm, table, color — out of the box.
Stem Panic is a game written in Kukicha, running live as WASM.
Loading source…
English operators, pipes that flow left-to-right, onerr for error handling, and named enums. Skim a file and follow what it does — no dense syntax to decode first.
fetch, concurrent, llm, mcp, db, shell, html, table, color — 40+ packages with the same readable API. Reach for a stdlib package, not a third-party dependency.
Rename a .go file to .kuki and it compiles unchanged. Run kukicha brew to convert any .kuki file back into standalone, idiomatic Go.
Most Go compiles unchanged — &&, *T, if err != nil. Kukicha just adds readable forms on top. Mix and match in the same file.
data, err := fetchData()
if err != nil {
return fmt.Errorf("fetch: %w", err)
}
result, err := parse(data)
if err != nil {
return fmt.Errorf("parse: %w", err)
}
label := ""
if count == 1 {
label = "item"
} else {
label = "items"
}
result := fetchData()
|> parse()
onerr return explain "pipeline failed"
label := if count == 1 then "item" else "items"
Every .go file is valid .kuki unchanged.
The compiler catches SQL injection, XSS, SSRF, path traversal, and command injection before your code runs. Errors are values, handled with onerr.
fetch.GetJson, slice.Filter, concurrent.MapWithLimit, sort.ByKey, safe.Wrap, table.PrintWithStyle. Reads the same whether your code is Kukicha forms or plain Go.
kukicha build produces a single static binary — copy it to a server and run. Built-in WASM support, no runtime, Go's concurrency.
kukicha-blend main.go: See your Go code with Kukicha idioms