Playground
Kukicha
Output
Click Run to compile and execute your code.

v0.1.11 — latest release ↗

Brewed from Go

Readable Single Binary

Readable Kukicha forms — list of string, onerr return, and/or/not — while you're learning. Plain Go — []string, != nil, && — when you're fluent. Same file, same compiler. Keep using the easy-to-use Kukicha stdlib.

Get Started →

Stem Panic is a game written in Kukicha, running live as WASM.

View the Stem Panic source. Kukicha game stdlib wraps Ebitengine, a Go game engine.

Loading source…

Want to build your own? The 8-lesson game tutorial takes you from Hello World to a playable game in Kukicha.

Scannable by design

Kukicha forms like list of string, onerr return, and equals let a beginner skim a file and follow what it does. No dense syntax to decode first.

Graduate into Go

When you want terser code, drop back to []string, != nil, and &&. Kukicha is a strict superset of Go.

No lock-in, ever

Rename a .go file to .kuki and it compiles unchanged. Run kukicha brew to convert any .kuki file back into standalone, idiomatic Go.

Two Tiers, One Compiler

Start with the Kukicha forms while you're learning. Drop to plain Go when you're fluent. Both compile to the same thing.

Plain Go

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"
}

Kukicha forms

result := fetchData()
    |> parse()
    onerr return explain "pipeline failed"

label := if count == 1 then "item" else "items"

Every .go file is valid .kuki unchanged.

Compile-time security

The compiler detects SQL injection, XSS, SSRF, path traversal, and command injection before your code runs.

Stdlib that stays skimmable

42+ packages: fetch, slice, sort, MCP, LLM, HTML, shell. The same readable API whether your surrounding code is Kukicha forms or plain Go.

Native Go performance

Compiles to a single binary with no runtime overhead. Built-in WASM support and Go's concurrency model.

Start here