The problem: JSON wastes tokens. Curly braces, quotes, colons, commas - all eat into your context window.
ISON uses tabular patterns that LLMs already understand from training data:
JSON (87 tokens): { "users": [ {"id": 1, "name": "Alice", "email": "alice@example.com"}, {"id": 2, "name": "Bob", "email": "bob@example.com"} ] }
ISON (34 tokens): table.users id:int name:string email 1 Alice alice@example.com 2 Bob bob@example.com
Features: - 30-70% token reduction - Type annotations - References between tables - Schema validation (ISONantic) - Streaming format (ISONL)
Implementations: Python, JavaScript, TypeScript, Rust, C++ 9 packages, 171+ tests passing
pip install ison-py # Parser pip install isonantic # Validation & schemas
npm install ison-parser # JavaScript npm install ison-ts # TypeScript with full types npm install isonantic-ts # Validation & schemas
[dependencies] ison-rs = "1.0" isonantic-rs = "1.0" # Validation & schemas
Looking for feedback on the format design.
dtagames•12h ago
Any tokens you saved will be lost 3x over in that process, as well as introducing confusing new context information that's unrelated to your app.
maheshvaikri99•12h ago
ISON isn't inventing new syntax. It's CSV/TSV with a header - which LLMs have seen billions of times. The table format:
table.users id name email 1 Alice alice@example.com
...is structurally identical to markdown tables and CSVs that dominate training corpora.
On the "3x translation overhead" - ISON isn't meant for LLM-to-code interfaces where you need JSON for an API call. It's for context stuffing: RAG results, memory retrieval, multi-agent state passing.
If I'm injecting 50 user records into context for an LLM to reason over, I never convert back to JSON. The LLM reads ISON directly, reasons over it, and responds.
The benchmark: same data, same prompt, same task. ISON uses fewer tokens and gets equivalent accuracy. Happy to share the test cases if you want to verify.