# ilo
*A programming language AI agents write, not humans. Named from [Toki Pona](https://sona.pona.la/wiki/ilo) for "tool".*
[](https://github.com/ilo-lang/ilo/actions/workflows/rust.yml) [](https://codecov.io/gh/ilo-lang/ilo) [](https://crates.io/crates/ilo) [](https://www.npmjs.com/package/ilo-lang) [](LICENSE)
```
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-T004` not a stack trace
- **Compact errors** - one token, not a paragraph; agents correct faster, fewer retries
## Install
```bash
# macOS / Linux
# npm (any platform with Node 20+)
npm i -g ilo-lang
# Rust
cargo install ilo
```
<details>
<summary>Agent-specific install</summary>
| **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.
</details>
## Quick start
```bash
# Inline
ilo 'dbl x:n>n;*x 2' 5 # → 10
# From file
ilo program.ilo functionName arg1 arg2
```
**[Tutorial: Write your first program →](https://ilo-lang.ai/docs/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:
```bash
ilo 'inner x:n>R n t;~x outer x:n>R n t;~(inner! x)' 42 # → 42
```
## Teaching agents
ilo ships as an [Agent Skill](https://agentskills.io). Install the plugin and the agent learns ilo automatically.
For manual context loading:
```bash
ilo -ai # compact spec for LLM system prompts
ilo help lang # full spec
```
## Key docs
| **[Introduction](https://ilo-lang.ai/docs/introduction/)** | What ilo is and why |
| **[Installation](https://ilo-lang.ai/docs/installation/)** | All install methods |
| **[Tutorial](https://ilo-lang.ai/docs/first-program/)** | Write your first program |
| **[Types & Functions](https://ilo-lang.ai/docs/guide/types-and-functions/)** | Core language guide |
| **[Prefix Notation](https://ilo-lang.ai/docs/guide/prefix-notation/)** | Why prefix saves tokens |
| **[Guards](https://ilo-lang.ai/docs/guide/guards/)** | Pattern matching without if/else |
| **[Pipes](https://ilo-lang.ai/docs/guide/pipes/)** | Function composition |
| **[Collections](https://ilo-lang.ai/docs/guide/collections/)** | Lists and higher-order functions |
| **[Error Handling](https://ilo-lang.ai/docs/guide/error-handling/)** | Result types and auto-unwrap |
| **[Data & I/O](https://ilo-lang.ai/docs/guide/data-io/)** | HTTP, files, JSON, env |
| **[MCP Integration](https://ilo-lang.ai/docs/integrations/mcp/)** | Connect MCP servers |
| **[CLI Reference](https://ilo-lang.ai/docs/reference/cli/)** | Flags, REPL, output modes |
| **[Builtins](https://ilo-lang.ai/docs/reference/builtins/)** | All built-in functions |
| **[Error Codes](https://ilo-lang.ai/docs/reference/error-codes/)** | ILO-XXXX reference |
| **[SPEC.md](SPEC.md)** | Full language specification |
| **[examples/](examples/)** | Runnable examples (also test suite) |
## Community
- **[ilo-lang.ai](https://ilo-lang.ai)** - docs, playground, and examples
- **[r/ilolang](https://www.reddit.com/r/ilolang/)** - discussion and updates
- **[hello@ilo-lang.ai](mailto:hello@ilo-lang.ai)** - get in touch
## Principles
1. **Token-conservative** - every choice evaluated against total token cost
2. **Constrained** - small vocabulary, one way to do things, fewer wrong choices
3. **Verified** - types checked before execution, all errors reported at once
4. **Language-agnostic** - structural tokens (`@`, `>`, `?`, `^`, `~`, `!`, `$`) over English words
See [MANIFESTO.md](MANIFESTO.md) for full rationale.