1. Overview
I-Lang is an AI-native communication protocol built from symbols already inside every LLM's training data: brackets, pipes, arrows, key-value pairs. It defines a formal vocabulary for three communication modes:
| Mode | Description | Example |
|---|---|---|
| Human → AI | Precise instructions AI follows with fewer retries | [READ:@SRC|path=data.csv]=>[STAT]=>[Ω] |
| AI → AI | Structured communication between agents | [SEND:@DST|fmt=json]=>[EVAL]=>[OUT] |
| AI internal | Behavioral identity and reasoning structure | ::GENE{verify_first|conf:confirmed} |
2. Two Syntaxes
2.1 Operation Syntax — What AI Does
[VERB:@TARGET|modifier=value]=>[NEXT_VERB]=>[Ω]
Operations are executable instructions. Each step in a chain receives the output of the previous step. The chain terminates with [Ω] or [OUT].
Components:
| Component | Syntax | Description |
|---|---|---|
| Verb | VERB | One of 88 defined verbs (e.g., READ, WRIT, FILT, SORT) |
| Target | @TARGET | Entity reference (e.g., @SRC, @DST, @PREV, @LOCAL) |
| Modifiers | key=value | Parameters separated by pipes (e.g., fmt=md, lng=ja) |
| Chain | => | Output of left feeds into right |
2.2 Declaration Syntax — What AI Is
::GENE{trait_name|conf:confirmed|scope:global}
T:positive_trait
A:anti_pattern⇒consequence
::STATE{@SELF, attribute:value}
Declarations define behavioral identity — personality, rules, anti-patterns, and immune responses. They can persist across sessions when stored in profile or configuration files.
3. Verb Categories
| Category | Count | Verbs |
|---|---|---|
| Data I/O | 12 | READ WRIT GET DEL LIST COPY MOVE STRM CACH SYNC SEND RUN |
| Transform | 22 | FMT CONV SPLIT MERGE MAP FILT SORT DEDU FLAT NEST CHNK REDU PIVT TRNS ENCD DECD HASH CMPR EXPN XLAT REWR DIFF |
| Analysis | 17 | SCAN MTCH CNT STAT EVAL SCOR RANK TRND CORR FRCS ANOM SENT CLST BNCH AUDT VALD CLSF |
| Generation | 10 | CREA DRFT EXPD SHRT PARA STYL TMPL FILL EXTC GEN |
| Execute | 10 | PLAN DECI CHEK FIX DPLO SAVE REVW LERN TEST PARS |
| Control | 2 | LOOP WAIT |
| Output | 5 | OUT DISP EXPT PRNT LOG |
| Structure | 5 | LINK SET TAG GRP EMBD |
| Meta | 4 | HELP DESC INTR NOOP |
| Batch | 1 | BATC |
Total: 88 verbs. Full definitions with examples: Dictionary →
4. Greek Aliases
13 commonly-used verbs have single-character Greek aliases for maximum compression:
| Alias | Verb | Description |
|---|---|---|
Σ | MERGE | Combine multiple inputs into one |
Δ | DIFF | Compare two inputs, show differences |
φ | FILT | Filter by condition |
∇ | SORT | Sort by criteria |
λ | MAP | Apply function to each element |
∂ | SPLIT | Split input into parts |
μ | STAT | Statistical summary |
ψ | SENT | Sentiment analysis |
ξ | HASH | Generate hash/checksum |
ζ | CMPR | Compress content |
θ | XLAT | Translate between languages |
Ω | OUT | Final output |
Π | BATC | Batch operation |
5. Modifiers
5.1 Core Modifiers
Core modifiers are defined in the protocol specification and recognized by all conformant implementations.
| Modifier | Purpose | Example values |
|---|---|---|
fmt= | Output format | md, json, csv, html, yaml, txt |
lng= | Language | en, zh, ja, ko, es, fr, de |
len= | Length constraint | 3, 100w, 500char |
ton= | Tone | formal, casual, pro, academic |
sty= | Style | bullets, prose, table, numbered |
path= | File/URL path | ./data.csv, https://example.com |
whr= | Filter condition | *.md, status=active |
mch= | Match pattern | regex, glob, exact |
src= | Source | file, url, clipboard, @PREV |
dst= | Destination | file, screen, @NULL |
5.2 Extended Modifiers
Extended modifiers are verb-specific parameters defined in the Dictionary. They follow the same key=value syntax but are only meaningful for specific verbs.
| Modifier | Used by | Example |
|---|---|---|
cmd= | RUN | [RUN|cmd=python script.py] |
algo= | HASH, ENCD | [HASH|algo=sha256] |
key= | CACH | [CACH|key=q3data] |
by= | SORT, STAT, RANK | [SORT|by=revenue,desc] |
fn= | MAP, REDU, LOOP | [MAP|fn=extract_title] |
period= | TRND | [TRND|period=Q] |
threshold= | ANOM | [ANOM|threshold=2.5] |
scale= | SCOR | [SCOR|scale=1-10] |
type= | CREA, GEN | [CREA|type=blog,topic=AI] |
5.3 Modifier Grammar
modifier = core-key "=" value / extension-key "=" value
core-key = "fmt" / "lng" / "len" / "ton" / "sty" / "path" / "whr" / "mch" / "src" / "dst"
extension-key = 1*(ALPHA / DIGIT / "_")
value = 1*(VCHAR / "," / "." / "/" / ":" / "-" / "_" / "*" / ">" / "<" / "=")
6. Entities
6.1 Core Entities
| Entity | Description |
|---|---|
@SRC | Source input |
@DST | Destination output |
@PREV | Previous output in chain |
@LOCAL | Local file system |
@SCREEN | Screen/visible content |
@LOG | Log output |
@NULL | Discard output |
@STDIN | Standard input |
6.2 External Entities
| Entity | Description |
|---|---|
@GH | GitHub |
@R2 | Cloudflare R2 storage |
@COS | Tencent Cloud COS |
@DRIVE | Google Drive |
@WORKER | Cloudflare Worker |
@CF | Cloudflare Pages/CDN |
7. Grammar (ABNF-style)
; === Operation Syntax ===
chain = step *("=>" step)
step = "[" verb-call "]"
verb-call = VERB [":" target] ["|" modifiers]
VERB = 2*5(ALPHA) ; e.g., READ, FMT, OUT
target = "@" entity-name ; e.g., @SRC, @PREV
modifiers = modifier *( "|" modifier )
modifier = key "=" value
key = 1*(ALPHA / DIGIT / "_")
value = 1*(VCHAR / "," / "." / "/" / ":" / "-" / "_" / "*" / ">" / "<" / "=")
entity-name = 1*(ALPHA / DIGIT / "_")
; === Declaration Syntax ===
declaration = gene-block / state-block
gene-block = "::GENE{" gene-name "|" gene-params "}" LF 1*(trait / anti)
gene-name = 1*(ALPHA / DIGIT / "_")
gene-params = param *( "|" param )
param = key ":" value
trait = SP SP "T:" rule LF
anti = SP SP "A:" pattern "⇒" consequence LF
rule = 1*(VCHAR / "|" / "⇒")
pattern = 1*(VCHAR)
consequence = 1*(VCHAR / "|")
state-block = "::STATE{" target ", " 1*(key ":" value *("," key ":" value)) "}"
8. JSON AST
I-Lang chains can be represented as JSON AST for machine processing, validation, and interoperability with MCP/A2A.
{
"type": "chain",
"version": "3.0",
"steps": [
{
"verb": "READ",
"target": "@SRC",
"modifiers": { "path": "sales.csv" }
},
{
"verb": "FILT",
"target": "@PREV",
"modifiers": { "whr": "revenue>1000" }
},
{
"verb": "STAT",
"target": "@PREV",
"modifiers": { "by": "region" }
},
{
"verb": "FMT",
"modifiers": { "fmt": "md" }
},
{
"verb": "OUT",
"alias": "Ω"
}
]
}
Declaration AST:
{
"type": "gene",
"name": "analyst",
"params": { "conf": "confirmed", "scope": "global" },
"traits": [
{ "type": "T", "rule": "data_driven|evidence_first" },
{ "type": "T", "rule": "answer_format=table|when:comparison" }
],
"anti_patterns": [
{ "type": "A", "pattern": "speculation_without_data", "consequence": "forbidden" },
{ "type": "A", "pattern": "hedging", "consequence": "remove" }
]
}
9. Error Model
| Error code | Condition | Expected behavior |
|---|---|---|
E_UNKNOWN_VERB | Verb not in 88-verb dictionary | Report unknown verb, suggest closest match |
E_MISSING_TARGET | Verb requires target but none given | Report missing target, show expected syntax |
E_INVALID_MODIFIER | Modifier key not recognized for this verb | Report invalid modifier, list valid options |
E_CHAIN_BREAK | Step in chain produces no output for next step | Report which step failed, preserve partial results |
E_ENTITY_NOT_FOUND | Referenced entity does not exist or is inaccessible | Report entity resolution failure |
E_PERMISSION_DENIED | Guarded/dangerous verb blocked by host runtime | Report which verb was blocked and why |
E_DECLARATION_CONFLICT | Two GENE blocks define contradictory rules | Report conflict, apply higher-priority block |
E_SYNTAX_ERROR | Malformed chain or declaration | Report error location, show corrected syntax |
10. Execution Semantics
10.1 Chain execution
Steps in a chain execute left to right. The output of each step becomes the implicit @PREV input to the next step. If a step specifies an explicit target, it overrides @PREV.
10.2 Entity resolution
Entities resolve in this order: explicit target in the step > @PREV from previous step > session default. External entities (@GH, @R2, etc.) require runtime-level configuration.
10.3 Declaration persistence
::GENE{} blocks persist for the duration of scope: global (entire session), session (current session), project (project directory), task (current task only).
10.4 Priority resolution
When multiple ::GENE{} blocks apply, priority determines order: P0 > P1 > P2. Within the same priority, more specific scope wins (task > project > session > global).
11. Security Model
I-Lang classifies verbs into three risk levels: safe (read-only, no side effects), guarded (modifies state, requires confirmation), and dangerous (data loss or code execution risk, requires explicit authorization). See the full security model for verb classifications and runtime requirements.
12. Versioning
| Version | Date | Changes |
|---|---|---|
| v3.0 | 2026-04 | Current. 88 verbs, 29 core modifiers, 14 entities, 13 Greek aliases. Two syntaxes (operations + declarations). Extended modifier system. |
| v2.0 | 2026-03 | Added declaration syntax (::GENE, ::STATE). Behavioral DNA. Greek aliases. |
| v1.0 | 2026-02 | Initial release. Operation syntax only. 64 verbs. |
13. Examples
# Read CSV, filter rows, sort, output as markdown table
[READ:@SRC|path=sales.csv]=>[φ|whr=revenue>1000]=>[∇|by=revenue,desc]=>[FMT|fmt=md]=>[Ω]
# Translate previous output to Japanese, formal tone
[θ:@PREV|lng=ja,ton=formal]=>[Ω]
# Batch read all markdown files, merge, summarize
[LIST:@LOCAL|mch=*.md]=>[Π:READ]=>[Σ]=>[SHRT|len=5,sty=bullets]=>[Ω]
# Define behavioral DNA for an AI agent
::GENE{analyst|conf:confirmed|scope:global}
T:data_driven|evidence_first
T:answer_format=table|when:comparison
A:speculation_without_data⇒forbidden
A:hedging⇒remove
14. Full Specification
The complete, machine-readable specification is available at:
github.com/ilang-ai/ilang-spec · npm: @i-language/spec · HuggingFace
Related pages: Benchmark · Conformance · Security
← Back to I-Lang · Compare with MCP & A2A → · Browse the Dictionary →