ilo: A Programming Language for AI Agents, Not Humans

Loading ilo, Part 1: System Message

Before any of this, the cheapest test was to paste a compact version of the ilo language spec into the agent’s chat as a user message at the start of a conversation, or to tell the agent to read it. That worked, but only for as long as the conversation did. Most coding agent CLIs clear or auto-compact long sessions, and when they do the spec drops out and the agent forgets ilo exists.

The first durable version of ilo integration was the same paste into the coding agent CLI’s system message instead (Claude Code in my case). The system message survives compaction, isn’t part of the user’s chat history, and persists across every turn. I added a short instruction telling the model to use ilo for the tasks I cared about, and let the agent loop run.

It works

An agent armed with the compact spec generates working ilo. Short tasks (data pipelines, string manipulation, simple validation) come out in the right syntax with no further nudging. The spec is small enough to read in one pass at agent speed, and the syntax is unambiguous enough to generate sequentially without the model guessing at builtins.

I needed to answer that first. If a paste hadn’t been enough, no amount of skill packaging or harness wiring later would save it.

Trade-offs

The paste works, but four things bother me about it:

  • It uses context on every turn. The spec clogs up context whether or not the conversation touches ilo. The cost is small per call but compounds across thousands of calls.
  • The agent can’t install ilo for me. The system message can describe ilo help ai and tell the agent how to install, but it can’t put the binary on PATH. The agent generates a program, then I have to install or update ilo myself before the program runs.
  • The pasted spec doesn’t update when ilo does. Any time the language spec changes, I have to re-paste by hand. Otherwise the agent works from a stale version.
  • It only applies where I configured it. The same agent in a different tool, or in a different project, has no idea ilo exists.

The first three are about how the spec gets delivered; the fourth is about where the delivery lives.