ilo-0.9.1 is not a library.
Visit the last successful build:
ilo-26.5.0
ilo
A programming language AI agents write, not humans. Named from Toki Pona for "tool".
Python ilo
───── ───
def total(price, quantity, rate): tot p:n q:n r:n>n;s=*p q;t=*s r;+s t
sub = price * quantity
tax = sub * rate
return sub + tax
4 lines, 30 tokens, 90 chars 1 line, 10 tokens, 20 chars
0.33× the tokens. 0.22× the characters. Same semantics. Type-verified before execution.
Why
AI agents pay three costs per program: generation tokens, error feedback, retries. ilo cuts all three:
- Shorter programs - prefix notation eliminates parentheses; positional args eliminate boilerplate
- Verified first - type errors caught before execution; agents get
ILO-T004not a stack trace - Compact errors - one token, not a paragraph; agents correct faster, fewer retries
Install
# macOS / Linux
|
# npm (any platform with Node 20+)
# Rust
| Agent | Install |
|---|---|
| Claude Code | /plugin marketplace add ilo-lang/ilo then /plugin install ilo-lang/ilo |
| Claude Cowork | Browse Plugins → Add marketplace → ilo-lang/ilo → install |
| Other agents | Copy skills/ilo/ into your agent's skills directory |
npm/WASM mode runs interpreter only. HTTP builtins (
get,$,post) require the native binary.
Quick start
# Inline
# From file
Tutorial: Write your first program →
What it looks like
Guards - flat, no nesting:
cls sp:n>t;>=sp 1000 "gold";>=sp 500 "silver";"bronze"
Pipes - left-to-right composition:
run x:n>n;x>>dbl>>inc
Data pipeline - fetch, parse, filter, sum:
fetch url:t>R ? t;r=($!url);rdb! r "json"
proc rows:L ?>n;clean=flt pos rows;sum clean
pos x:?>b;>x 0
Auto-unwrap ! - eliminates Result matching:
Teaching agents
ilo ships as an Agent Skill. Install the plugin and the agent learns ilo automatically.
For manual context loading:
Key docs
| Introduction | What ilo is and why |
| Installation | All install methods |
| Tutorial | Write your first program |
| Types & Functions | Core language guide |
| Prefix Notation | Why prefix saves tokens |
| Guards | Pattern matching without if/else |
| Pipes | Function composition |
| Collections | Lists and higher-order functions |
| Error Handling | Result types and auto-unwrap |
| Data & I/O | HTTP, files, JSON, env |
| MCP Integration | Connect MCP servers |
| CLI Reference | Flags, REPL, output modes |
| Builtins | All built-in functions |
| Error Codes | ILO-XXXX reference |
| SPEC.md | Full language specification |
| examples/ | Runnable examples (also test suite) |
Community
- ilo-lang.ai - docs, playground, and examples
- r/ilolang - discussion and updates
- hello@ilo-lang.ai - get in touch
Principles
- Token-conservative - every choice evaluated against total token cost
- Constrained - small vocabulary, one way to do things, fewer wrong choices
- Verified - types checked before execution, all errors reported at once
- Language-agnostic - structural tokens (
@,>,?,^,~,!,$) over English words
See MANIFESTO.md for full rationale.