Today we’re shipping Ikanos v1.0.0-beta1 — the first release stable enough for real integrations. After four alpha releases that hardened the spec, the engine, and the agent toolchain, beta1 ships Binary Content end-to-end, closes the last known native-image gaps, and adds first-class CI quality automation.
But before the changelog, it’s worth revisiting why Ikanos exists in the first place.
The Problem: Someone Else’s Generic Server
The first wave of MCP adoption was simple advice: “point your agent at the vendor’s MCP server.” The complaints are now in, and they rhyme:
- Stability. The hosted server has its own uptime, rate limits, and breaking-change cadence — none of which you control. When it flakes, your agent flakes.
- Feature gaps. The vendor exposes the operations they chose to expose. Notion’s comments API is a frequent casualty — the agent can read and write pages but can’t post or resolve a comment, because the MCP surface lags the HTTP API it wraps.
- Tool bloat. A generic server lists every tool a generalist agent might ever call — 50, 100, 200+ tools. That floods the context window, degrades tool-selection accuracy, and burns tokens on every turn before the agent does any real work.
- Governance duplication. A SaaS MCP endpoint is a new third-party surface IT must onboard, audit, scope, and monitor — re-running the API onboarding process a second time, on a transport their gateway and identity tooling don’t yet understand.
- No server at all. For most of an enterprise’s real estate — legacy SaaS, internal applications, databases, queues, mainframes — there is no vendor MCP server, and there never will be.
None of these are intrinsic to MCP. They’re intrinsic to consuming someone else’s generic server.
The Ikanos Answer: Spec-Driven Integration
Ikanos is the first open-source engine for Spec-Driven Integration. Capabilities are declared entirely in YAML — no Java, no code generation, no compilation step. The engine reads the spec at startup and immediately serves it as a multi-protocol server: MCP, Skill, REST, and Control. The spec is the artifact and the runtime contract.

That means you build the MCP server your agent actually needs: curated to exactly the tools one use case requires, fused from several upstream APIs — public and private — and running inside your own governance perimeter. The vendor’s generic server is removed from the hot path entirely.
The key insight is that the unit of match is the agent’s use case, not the vendor’s API. A real “doc-review agent” reads Notion comments, cross-references a ticket in an internal Jira behind the firewall, and posts a status to a public Slack webhook. The right MCP surface for that agent is three or four tools drawn from three or four different APIs, fused into one coherent contract. No per-vendor server can produce that. Only a capability that consumes several upstream APIs and re-exposes a use-case surface can.
What’s New in Beta 1
🗂️ Binary Content — End-to-End
The flagship feature of beta1: capabilities can now declare, serve, and document binary outputs natively — without any Java or custom serialization code. It shipped across four sequential phases:
- Spec — new binary-content schema fields (
mimeType,encoding,maxBinarySize) added to consumed and exposed output parameters. - Engine — the runtime core wired into the orchestration pipeline: MIME dispatch, base64/raw byte handling, size capping.
- REST — binary outputs promoted to first-class citizens in the REST adapter, with correct
Content-Typeheaders, streaming, and OpenAPI documentation generated from the spec. - MCP — tool results and resource contents return
BlobResourceContentsfor binary payloads, covering dynamic resources, static resources, and tool outputs alike.
Each adapter can also enforce its own maxBinarySize independently, wired through both the REST and MCP exposures.
🔧 Native CLI — Fully Fixed
The GraalVM native-image regressions that affected alpha4 are fully resolved. Complete reflect-config.json for serve and validate, correctly registered conditional Jetty reflection classes, and a real-HTTP regression guard to prevent future regressions. Pre-built binaries are available for macOS ARM64, Linux AMD64, Linux ARM64, and Windows AMD64.
🌙 CI & Quality Automation
Dependabot for automated dependency updates, Slack notifications on nightly failures, and @Nonnull annotations keeping JDT null analysis clean.
📚 Documentation
The README was restructured around reader personas — operator, integrator, contributor — for faster onboarding, with links tightened and pointed at the live Playground. Thanks Priyatham Kattakinda for the suggestion.
A Deliberate Signal Toward Stability
Beta1 also evolves the capability schema itself — the new binary-content fields (mimeType, encoding, maxBinarySize) extend consumed and exposed output parameters, a deliberate signal that the spec is maturing toward stability. And here’s the sharpest argument for owning the spec rather than the server: MCP itself is a moving target. A major, largely stateless transport revision is expected this summer, and it will force every MCP framework into a new major version — and then force every hand-built or generated server to be regenerated or migrated onto it.
Because an Ikanos capability owns the spec, not the server, that upgrade is a one-line engine bump — with no change to your YAML.
By the Numbers
34 commits merged since v1.0.0-alpha4. 138 files changed, +6,406 / −288 lines. 4 contributors.
The spec is stable enough for real integrations. Ikanos comes from the Greek ικανός — capable.