A dataflow programming language designed for humans and AI. Programs are graphs of nodes and threads — readable at a glance, writable with minimal context.
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]