Ikanos v1.0.0-beta2 — "Shooner"
Pre-release⛵ A schooner trades the ketch's stability for reach — and beta2 is exactly that: no flagship feature, but the plumbing that lets Ikanos, Polychro, Crafter, Warden, and Shipyard stay in lockstep gets faster and more independent. The engine and schema versions are decoupled for the first time, cross-repo version sync grows a fourth spoke (Shipyard tutorials), skill maintenance moves fully to the served
agents-sharedcapability, and the release pipeline drops its last dependency on a personal Gist. A quieter release that hardens the machinery behind the last four.
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-beta2 release builds on v1.0.0-beta1 ("Ketch") with a focus on release infrastructure and version governance: the engine version (driven by pom.xml) and the schema version (driven by ikanos-schema.json) are now tracked as two independent values, the automated cross-repo sync grows to cover Shipyard's tutorial YAMLs, and CI switches from a personal-access-token bot to a GitHub App. No breaking schema change since beta1.
🌐 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
🔀 Engine Version and Schema Version Decoupled (#639)
The most structural change of beta2: Ikanos now tracks two independent version numbers instead of one.
VersionHelper.getEngineVersion()— read frompom.xml'srevisionproperty, tracks the engine's own release cadenceVersionHelper.getSchemaVersion()— read fromproperties.ikanos.constinikanos-schema.json, tracks the specification's compatibility contract independently of the engine build- This decoupling means a future engine patch release will no longer force a schema version bump (and vice versa) — the two axes evolve on their own cadence going forward
🔄 Cross-Repo Version Sync — Now Reaching Shipyard (#651, #652)
The automated version-sync machinery that keeps consumer repos aligned with the spec gains a new target and a clearer structure:
synchronize-schema-and-rules.ymlextended so schema-version sync also propagates to Shipyard's tutorial YAML files, in addition to the existing Warden target (part of Crafter#67)- Sync scripts renamed and consolidated for clarity:
sync-ikanos-version.py→sync-schema-version.py, plus newsync-engine-version-to-crafter.py,sync-schema-version-to-warden.py, andsync-schema-version-to-shipyard.py, backed by a new sharedscripts/ikanos_version.pyhelper - Workflow files renamed to make the engine/schema distinction explicit:
synchronize-engine-version-in-other-repos.yml(new),synchronize-schema-version-in-other-repos.yml,synchronize-schema-version-in-repository.yml
🔐 GitHub App for Automated PRs (#636, #624)
Automated version-sync PRs now authenticate via a GitHub App instead of a personal access token — tightening the security posture of the release automation and removing a token tied to an individual account.
🌙 CI / Badge Infrastructure
- Coverage/quality badge publishing no longer depends on a personal Gist (#641, partially closes #587) — badges are now published to a persistent dedicated branch instead (#646)
quality-gate.ymlandnightly-quality-gate.ymlboth hardened as part of this migration- A stray "skip checks" shortcut on PR creation was removed, so the full check suite always runs
🤝 Agent & Contributor Experience
bugfixandikanos-capabilityskills are now served from theagents-sharedcapability ingolden-repo-naftiko, mirroring thepr-reviewpattern — their committed copies are removed from the repo (de-tracked, kept on disk as git-ignored synced copies), accounting for most of this release's large deletion count (#640)golden-repo-naftikorename (fromnaftiko-golden-repo) propagated acrossAGENTS.md,.gitignore, and theagents-shareddiscovery shim- Internal "blueprint" vocabulary renamed to "design doc" across the repo (issue naftiko/blueprints#6), aligning with the same rename shipped in Polychro
📚 Documentation
- README repositioned to lead with "build the MCP server your agent needs, not use the one your vendor ships", restructured around reader personas (AI agent builders, API owners, single-source-of-truth seekers), and all documentation links bumped from
1.0.0-alpha*to1.0.0-beta1(#644)
⚠️ Known Issues & Limitations
- CLI pre-built binary installation — running the CLI binary directly is not straightforward on macOS (Gatekeeper quarantine requires
xattr -dr com.apple.quarantineor 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 publicbaseUridirectly 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
- 28 commits merged since v1.0.0-beta1
- 133 files changed, +552 / −3,061 lines (the large deletion count reflects de-tracking the skill copies now served from
golden-repo-naftiko) - 4 contributors
🙏 Contributors
Huge thanks to the team for shipping this release:
- @jeremnaf — engine/schema version split (#639), Shipyard version-sync extension (#651, #652), release coordination
- @farah-t-trigui — GitHub App for automated PRs (#636), Gist-to-persistent-branch badge migration (#641, #646), CI check-skip fix
- @eskenazit — golden-repo-naftiko skill extraction and rename (#640), design-doc vocabulary rename
- @jlouvel — README repositioning for beta1 (#644)
Full Changelog: v1.0.0-beta1...v1.0.0-beta2