Ikanos v1.0.0-beta1 — "Ketch"
Pre-releaseIkanos v1.0.0-beta1 — "Ketch" ⚓ — Release Notes
⚓ A ketch is a sturdy two-masted vessel built for longer voyages — and beta1 is exactly
that: the first release confident enough to leave the alpha harbor. After four alpha
releases that hardened the spec, the engine, and the agent toolchain, beta1 ships the
Binary Content feature end-to-end (spec → engine → MCP → REST), closes the last
known native-image gaps, and adds first-class CI quality automation. The spec is stable
enough for real integrations.
What is Ikanos?
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.
Ikanos comes from the Greek ικανός — capable.
This v1.0.0-beta1 release builds on v1.0.0-alpha4 ("Yawl") with a focus on
feature completeness: the Binary Content blueprint ships across all four phases (spec,
engine, REST, MCP), native-image stability is fully resolved, and the version-sync
machinery is drift-proof. It introduces no breaking schema change since alpha3 —
a deliberate signal that the spec is maturing toward stability.
🌐 Ecosystem
Polychro — Spec Linting for Ikanos Capabilities
Polychro remains the companion spec linting engine
for the Ikanos ecosystem. It validates Ikanos capability files against rulesets declared in
YAML, surfacing diagnostics as SARIF, JSON, or LLM-native output — directly inside your
editor, CI pipeline, or AI agent. See the Polychro release notes for its own changelog.
✨ Highlights
🗂️ Binary Content — End-to-End (#598)
The flagship feature of beta1: capabilities can now declare, serve, and document binary
outputs natively — without any Java or custom serialization code.
The feature shipped in four sequential phases:
- Phase 0 — Spec (
1e18090,
9848133): new binary-content schema
fields (mimeType,encoding,maxBinarySize) added to consumed and exposed output
parameters; reviewed and tightened in the same PR - Phase 1 — Engine (
b98bd1c):
binary-content runtime core wired into the orchestration pipeline — MIME dispatch,
base64/raw byte handling, size capping - Phase 2 — REST (
270ce46):
binary outputs promoted to first-class citizens in the REST adapter — correct
Content-Typeheaders, streaming, and OpenAPI documentation generated from the spec - Phase 3 — MCP (
eda1dca,
4ec4ca6,
b3965c8): MCP tool results and
resource contents returnBlobResourceContentsfor binary payloads — dynamic resources,
static resources, and tool outputs all covered - Adapter cap (
5e93a28):
maxBinarySizeis wired through REST and MCP exposures so each adapter can enforce its
own size limit independently
🔧 Native CLI — Fully Fixed (#581, #594)
The native-image regressions that affected alpha4 are fully resolved in beta1:
- Complete GraalVM
reflect-config.jsonforserve(Restlet/Jetty) andvalidate
(MaxLengthValidator) —ClassNotFoundException/NoSuchMethodExceptiongone
(4daac7a) - Conditional Jetty reflection classes registered correctly — fixes the intermittent
servecrash on some JVM distributions
(f595aa0) - CI job now checks out sources so the native-regression fixture resolves at test time
(d6d8daa) - A real-HTTP regression guard snippet is documented to prevent future regressions
(d3b2df1)
🌙 CI / Quality Automation
- Dependabot enabled for Ikanos — automated dependency update PRs for Maven and GitHub
Actions (ca41daf) - Slack notifications on nightly failures — the quality-gate now pages the team when a
nightly run fails (dcfd891) @Nonnullannotations added to OTelSpanProcessor/MetricReaderoverrides so JDT
null analysis stays clean (f93cfdf)
🧷 Beta1 Migration & Version-Sync Hardening
The hop from alpha4 to beta1 closed the remaining version-sync gaps:
- Remaining hardcoded spec versions removed from test fixtures across multiple passes
(467ea5b,
188bd7d,
d1e97a6) scripts/sync-ikanos-version.pyextended with additional search paths to cover all
fixture locations (1829644).env.localadded to.gitignoreto prevent machine-specific environment paths from
leaking (0003739)
📚 Documentation
- README restructured around reader personas (operator, integrator, contributor) for
faster onboarding (406b47b). Thanks Priyatham Kattakinda for the suggestion. - Links tightened and converted to relative Shipyard docs paths
(f4cc10b) - Links updated to point to
shipyard.naftiko.io/ikanos/1.0.0-alpha4then to the live
Playground (b3adad3,
8f27d35) - Apache 2.0 License badge added to README
(d185668) - Binary-content cookbook reference added to the skills documentation
(8740fd1) bugfixSKILL.md updated with lessons from beta1 workflow
(87608f0)
⚠️ Known Issues & Limitations
- CLI pre-built binary installation — running the CLI binary directly is not
straightforward on macOS (Gatekeeper quarantine requiresxattr -dr com.apple.quarantine
or system approval) and on Windows (SmartScreen warning, unsigned binary). Workaround: run
viajava -jar ikanos.jarfrom the JAR instead (#281) - Reverse tunnel remains declarative-only in the schema — capabilities that declare
tunnel:parse and validate today, but the engine still dials the publicbaseUri
directly until the embedded tunnel feature is enabled. Use the sidecar pattern from the
Reverse Tunnel guide for production today. - CLI pre-built binaries available for macOS ARM64, Linux AMD64, Linux ARM64, and
Windows AMD64.
🔢 By the Numbers
- 34 commits merged since v1.0.0-alpha4
- 138 files changed, +6,406 / −288 lines
- 4 contributors
🙏 Contributors
Huge thanks to the team for shipping this release:
- @jlouvel — Binary Content end-to-end (spec → engine → REST → MCP), README restructuring, documentation, release coordination
- @eskenazit — Native CLI fixes (#581, #594), beta1 version-sync hardening, regression guard documentation
- @farah-t-trigui — Dependabot setup, Slack nightly notifications, version-sync script extension
- @jeremnaf — Release coordination
Full Changelog: v1.0.0-alpha4...v1.0.0-beta1