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 cover arithmetic, control flow, collections, text, filesystem, networking, and streaming.
→
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 use the desktop app. Features include real-time data flow visualization, slow mode, pause, and a built-in test runner.
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]