Early preview — work in progress
kitengi

A dataflow programming language designed for humans and AI. Programs are graphs of nodes and threads — readable at a glance, writable with minimal context.

Māori
kitenga
noun
seeing, sighting, finding, observation, perception, view.
East Africa
kitenge
noun
cotton fabric printed in various colours and designs with distinctive borders.
The language

Programs as graphs

A kitengi program is a graph of nodes connected by threads. Data flows through the graph as messages. There is no global mutable state and no implicit sequencing — a node runs only when all of its required inputs have received a message.

Nodes
The fundamental processing unit. Each node has typed input and output ports. Built-in kinds include value, add, branch, print, and more.
Threads
Directed connections from an output port to an input port. A single output can fan out to multiple inputs. Messages carry an ID, a port name, and a data payload.
{ }
Patterns
Reusable subgraphs packaged as a single node. Share patterns as .ktip files on GitHub and reference them directly in any program.
Visual editor
Build and run programs visually in the browser at app.kitengi.dev — or write .kti files by hand and load them into the app.
Design goals

Built for humans and AI to work together

Kitengi is designed so that humans can understand programs at a glance, and AI can write them accurately with minimal context.

Easy for humans to read
Programs are explicit graphs. Every connection is visible. There is no hidden control flow, no shared mutable state, and no execution order to reason about — each node does one thing.
Small context for AI
Strong conventions mean that an AI only needs to know the available node kinds and port types to write a correct program. There are no idioms to guess and no ambiguous syntax.
Strong conventions
One way to declare a node. One way to connect ports. One way to define a pattern. Consistent structure across every program makes both reading and writing predictable.
Composable by design
Patterns let you package any subgraph as a reusable node. AI can generate a pattern for a well-defined task; humans can snap it into a larger program without reading its internals.
Plain text

Human-readable programs

Programs are stored as plain .kti files. The format is line-oriented and unambiguous — a human can read it, an AI can write it, and a machine can parse it without any preprocessing.

program:Hello World!
| A simple program that prints "Hello World!" when triggered.

-> start -> hello_world:trigger

literal:hello_world = Hello World!
| Hello World
<- trigger[null]
-> value[text] -> print:value

print:print
| Print Output
<- value[any]
program:Adder
| Adds 2 + 3 and prints the result

-> start -> two:trigger
         -> three:trigger

value:two = 2
<- trigger[null]
-> value[number] -> add:a

value:three = 3
<- trigger[null]
-> value[number] -> add:b

add:add
<- a[number]
<- b[number]
-> result[number] -> out:value

print:out
<- value[any]
Open source

Free and open

Kitengi is open source. The language spec, standard library, and runtimes are all available on GitHub.

The language specification and standard node definitions. All built-in node kinds are defined as .ktip files.
Community patterns. Reusable .ktip files ready to reference in any program.
The Go runtime. Parse and execute .kti programs from the command line or embed kitengi in a Go application.
The JavaScript runtime. Runs in Node.js and in the browser — the same runtime powering app.kitengi.dev.

Start building

The kitengi editor runs entirely in the browser — no install required.

Open app.kitengi.dev ↗