So I posted about OCTAVE v1.0.0 back in January. I’ll concede it’s much easier to just let Claude explain it, so the remainder of this post is copy/paste so I’ll get over the fact it’s written it in “American” when I’m from London, but any actual questions, I can answer. I understand what I’ve built pretty well and can actually read the language it writes. Quick recap: OCTAVE is a structured document format designed for LLM-to-LLM communication. It’s a deterministic syntax that gives you loss accounting, schema validation, and audit trails when text passes between agents, tools, or compression steps. Think of it as a protocol layer that makes AI communication reliable rather than hopeful. pip install octave-mcp — it ships as an MCP server with CLI. We just released v1.5.0, and rather than post about each minor, here’s the meaningful stuff that landed since 1.0. The big one: Three-Zone Model (v1.3.0) OCTAVE documents used to have one mode — everything gets normalized to canonical form. That’s great for consistency but terrible when you need to preserve something exactly as-is. Now there are three zones: Zone 1 — The normalizing DSL (same as before — KEY::VALUE gets canonicalized) Zone 2 — YAML frontmatter, preserved byte-for-byte through round-trips Zone 3 — Literal zones (fenced code blocks) that pass through with zero processing This matters because real-world agent and skill files need YAML frontmatter for tool discovery (Claude Code uses it, for example), but the OCTAVE body still needs to be validated and normalized. Now octave_write handles both — one tool writes and validates the full file. Frontmatter validation (v1.5.0) takes this further: schemas can now define required YAML fields. The SKILL schema validates that name , description , and allowed-tools exist in the frontmatter and validates the OCTAVE body. Schema Sovereignty (I5) now extends across both zones. New tool: octave_compile_grammar (v1.5.0) Grammar compilation was always there via debug_grammar=True , but now it’s a first-class MCP tool. You feed it a META.CONTRACT and get back a GBNF grammar directly. Useful if you’re doing constrained decoding with llama.cpp or similar backends and want the schema to drive generation. 4 tools total now: octave_validate , octave_write , octave_eject , octave_compile_grammar . HTTP transport (v1.2.0) MCP was stdio-only before. Now there’s a Streamable HTTP transport — single /mcp endpoint, DNS rebinding protection, localhost binding by default, health checks for load balancers, stateless mode for serverless. –transport http --port 8080 and you’re serving. Parser resilience (v1.4.0–v1.5.0) This is the unsexy-but-critical work. 20+ parser and emitter fixes across these releases: Annotation syntax moved from NAME{qualifier} to NAME<qualifier> (curly braces conflicted with bracket parsing) Constructor arguments ( NAME[args] ) now survive round-trips Comments inside arrays, numbered keys in lists, literal zones in block bodies — all fixed The write tool got hardened: structure detection, baseline parse failure handling, curly-brace repair scoped to Zone 1 only Tests went from ~1,610 to 2,258. Every bundled spec and primer now parses cleanly — we eat our own dogfood. Compression primers got practical (v1.1.0) The token budget in the spec was wrong — said 60 tokens, actual measurement was ~200-300 (OCTAVE operators like :: , → , ⊕ tokenize to ~5x word count). Fixed that. Added decision scaffolding so agents can choose compression tiers (LOSSLESS through ULTRA) with explicit PRESERVE/DROP rules per tier. What’s next The focus has been on making the parser bulletproof and the tool surface complete. The spec is stable at v6, the three-zone model handles real-world file formats, and the grammar compiler is exposed for constrained generation workflows. If you’re building multi-agent systems and tired of structured output that silently breaks, give it a look. GitHub: https://github.com/elevanaltd/octave-mcp PyPI: pip install octave-mcp Happy to answer questions about the design or share what we’ve learned about LLM-to-LLM communication patterns. submitted by /u/sbuswell
Originally posted by u/sbuswell on r/ClaudeCode
