Installation
Via curl (macOS/Linux):
curl -fsSL https://ocx.kdco.dev/install.sh | bashVia npm (all platforms including Windows):
npm install -g ocxManual download:
Download the appropriate binary for your platform from the assets below.
Checksums
SHA256 checksums are provided for each binary. Verify with:
sha256sum -c SHA256SUMS.txt[2.0.0] - 2026-02-27
✨ Features
-
Finalize OCX v2 clean break by @kdcokenny(7a62373)
-
Use hash-based canonical ids by @kdcokenny(c0786ce)
-
Implement profile layering (global + local merge) by @kdcokenny(2201860)
-
cli: Remove diff command by @kdcokenny(2473ecb)
-
cli: Standardize --dry-run across all commands by @kdcokenny(6915182)
-
cli: Standardize V2 install-source grammar by @kdcokenny(d3b2035)
-
worker: Proxy /docs routes to Mintlify with safe redirect handling by @kdcokenny(c588250)
-
cli: Add ocx migrate command for v1.4.6 to v2 receipt migration by @kdcokenny(d5d3595)
-
cli: Add --global migrate scope and legacy registry normalization by @kdcokenny(575286f)
-
cli: Fan out --global migrate across root and all profiles by @kdcokenny(c0296dd)
-
cli: Add explicit registry compatibility diagnostics by @kdcokenny(f65a4c5)
-
registry: Enforce schema-url versioning and serve schemas locally in worker by @kdcokenny(1b0e526)
-
registry: Enforce schema-url versioning and align worker/docs by @kdcokenny(71e64c0)
-
Feat(cli): add legacy v1 registry compatibility with pinned v1.4.6 by @kdcokenny(d7d65c2)
-
cli: Add adaptive root resolution with atomic rollback safety by @kdcokenny(eca8059)
-
cli: Hard-cut V2 prefixed registry types and align docs/tests by @kdcokenny(871925b)
🐛 Bug Fixes
-
Align instruction discovery with OpenCode and fix registry instruction paths by @kdcokenny(e53c9fe)
-
Remove dead CLI options from init and registry commands by @kdcokenny(e0dd0e5)
-
Remove dead version pinning code and fix component name refs by @kdcokenny(466e82d)
-
Profile install registry resolution + remove/move --global by @kdcokenny(3f7bb65)
-
Address reviewer feedback + schema/URL bugs by @kdcokenny(325ba3f)
-
Local kit profile URL + URL install namespace by @kdcokenny(735b348)
-
Error handling and path resolution bugs by @kdcokenny(98e346b)
-
Remove unused profileDir from buildOpenCodeEnv by @kdcokenny(2bb840d)
-
Profile resolution and test mock registries by @kdcokenny(d85dc4b)
-
tests: Correct plugin → plugins import paths in worktree tests by @kdcokenny(1b8d472)
-
config: Consolidate opencode config merging to single source of truth by @kdcokenny(f77f1f3)
-
cli: Use accurate --force description for remove command by @kdcokenny(6e3f809)
-
profile: Use fresh env reads for profilesDir by @kdcokenny(e057ff5)
-
Address critical review issues from PR #119 by @kdcokenny(24f70c3)
-
Improve error handling in profile clone and path validation by @kdcokenny(a171275)
-
Code quality improvements and cwd bug fix by @kdcokenny(874b44a)
-
Resolve PR #119 review items by @kdcokenny(5f57fee)
-
Harden path validation and remove safety by @kdcokenny(351d902)
-
Align receipt versioning to v1 by @kdcokenny(0edf2dc)
-
Add missing relative import to git-root test by @kdcokenny(db3ece4)
-
Restore local .opencode install paths and harden target containment by @kdcokenny(e05bf37)
-
cli: Enforce strict profile fail-fast resolution by @kdcokenny(da1c10c)
-
cli: Enforce strict --json output contracts by @kdcokenny(b8b12b8)
-
cli: Preserve raw profile config bytes during clone by @kdcokenny(397b5fc)
-
cli: Scope-aware profiles, flexible registry alias, and input validation by @kdcokenny(262b0df)
-
Align OpenCode merge parity and manual testing expectations by @kdcokenny(b9242b1)
-
schema: Require registry name and version in manifests by @kdcokenny(05da960)
-
cli: Replace non-null assertions with safe type narrowing in dedupePluginsByCanonicalName by @kdcokenny(a35a659)
-
cli: Resolve inline config env/file tokens before launch by @kdcokenny(29bd24a)
-
cli: Invalidate opencode node_modules when deps change by @kdcokenny(9c10908)
-
worktree: Avoid iTerm temp script race and clean orphaned script on failure by @kdcokenny(d1e1927)
-
Align profile schema defaults and normalize schema endpoints by @kdcokenny(c0be584)
-
cli: Clarify migrate receipt terminology by @kdcokenny(2014438)
-
Resolve turbo bun lock workspace parsing and ci cache key by @kdcokenny(5fbebcc)
-
Resolve iTerm race condition where temp script is deleted before execution (#130) by @centraldogma99 in #130(d15c8da)
-
cli: Resolve {env:VAR} and {file:path} patterns in OPENCODE_CONFIG_CONTENT (#128) by @beppe2880 in #128(ed74da6)
-
migrate: Include stale lock cleanup in global preview summary by @kdcokenny(5e39452)
-
registry: Handle unknown schema mode and align docs contracts by @kdcokenny(4fbb64b)
📚 Documentation
-
Clean up v2 usage notes by @kdcokenny(32ea2ee)
-
Trim redundant parentheticals by @kdcokenny(46e851f)
-
Refer to lock file by @kdcokenny(82eb684)
-
Clarify default excludes by @kdcokenny(6dda045)
-
Remove orphaned registry version pinning references by @kdcokenny(42b49ba)
-
Fix receipt file path references by @kdcokenny(8347db8)
-
Comprehensive CLI.md rewrite and cross-file fixes by @kdcokenny(fae9b2a)
-
Fix PR #119 review items - path naming and section numbering by @kdcokenny(2009aea)
-
Normalize plural directory paths across templates and docs by @kdcokenny(b90b1d7)
-
Remove invalid global registry verification command by @kdcokenny(f3cf927)
-
Align npm plugin manual test expectations with runtime behavior by @kdcokenny(358e30c)
-
Fix npm plugin verification steps in add manual tests by @kdcokenny(9990d56)
-
Fix versioned npm plugin manual test command by @kdcokenny(79903f9)
-
Clarify build output path in manual test 9.2 by @kdcokenny(ecca133)
-
readme: Simplify profile-first onboarding and demos by @kdcokenny(968fc90)
-
facades: Normalize installation sections and OCX install guidance by @kdcokenny(529689b)
-
Refine AGENTS.md for coding agents by @kdcokenny(a4817ac)
-
Harden manual testing workflow and add runner script by @kdcokenny(a7f8731)
-
Make manual testing guide deterministic and idempotent by @kdcokenny(72c0822)
-
Align manual testing wording to singular plugin key by @kdcokenny(62ac850)
-
Sync MANUAL_TESTING references and checklist counts by @kdcokenny(235469b)
-
Migrate OCX documentation to Mintlify with QA artifacts by @kdcokenny(eaa3bb6)
-
Fix agent naming, receipt references, and directory paths by @kdcokenny(50bf438)
-
Mark manual testing complete for v2.0.0 on 2026-02-12 by @kdcokenny(380cb90)
-
Align profile docs with global-only command requirements by @kdcokenny(3a80e15)
-
Remove stale parity matrix and align migration references by @kdcokenny(cac6df7)
-
Refine manual testing guidance and record latest section results by @kdcokenny(d89e336)
-
Resolve manual testing flow contradictions by @kdcokenny(4d7f760)
-
Align manual test flow and record continued results by @kdcokenny(a105c47)
-
Fix manual test opencode config key usage by @kdcokenny(1576552)
-
Tighten section 13 instruction fallback verification by @kdcokenny(40c0fdf)
-
Record section 15.7 retry outcome and clarify blocked setup note by @kdcokenny(be0bffa)
-
Align manual test closeout with partial CLI waiver by @kdcokenny(ad4c210)
-
Finalize manual testing closeout updates by @kdcokenny(4f1238b)
-
Finalize Mintlify docs migration and link canonicalization by @kdcokenny(a43e8fc)
-
Simplify quick start with TweakOC ws profile by @kdcokenny(3dc0705)
🔧 Refactor
-
cli: Align short-flag policy with Cargo conventions by @kdcokenny(b9751ac)
-
utils: Consolidate duplicate utilities (#123) by @kdcokenny in #123(f2dc3b7)
-
cli: Use shared options helpers and fix exit codes by @kdcokenny(5d3c2b6)
-
Replace ALLOWED_PREFIXES with BLOCKED_PATHS by @kdcokenny(bd684cf)
-
Improve type safety and fix flaky test by @kdcokenny(ea5dfa5)
-
cli: Require registry alias and align docs to alias-first usage by @kdcokenny(da554e9)
-
cli: Make registry identity alias-first and align manual testing docs by @kdcokenny(790e349)
-
Enforce global-only profile UX and align docs/tests by @kdcokenny(6e51905)
-
cli: Remove OPENCODE_CONFIG_CONTENT token-resolution shim by @kdcokenny(b21725d)
🧪 Testing
-
Fix incorrect CLI flags in test files by @kdcokenny(e1dc8eb)
-
Remove invalid --force flag from init commands by @kdcokenny(3abdce9)
-
Add --global flag to profile move/remove tests by @kdcokenny(27ed852)
-
Fix init --registry argument order by @kdcokenny(d891e6b)
-
Fix profile conflict detection scope mismatch by @kdcokenny(2a16cc5)
-
Fix git-root and remove test setup by @kdcokenny(768e9bb)
-
Use path.relative for git-root test by @kdcokenny(ea6f812)
-
Strengthen CLI coverage and reduce test noise by @kdcokenny(3078c53)
-
cli: Isolate add and self-* suites to prevent CI coverage flakiness by @kdcokenny(9c7d865)
-
cli: Replace unnecessary dynamic imports in tests by @kdcokenny(064a90c)
-
cli: Make self-update checksum fixture platform-agnostic by @kdcokenny(bb6be6e)
-
self-update: Harden module mock isolation across test files by @kdcokenny(7e8acb6)
-
self-update: Reuse real detect-method exports in hook test mock by @kdcokenny(bca1663)
-
cli: Rename misleading ancient-format test case by @kdcokenny(8379515)
-
registry: Cover compatibility errors in schema-mode fallback by @kdcokenny(489f015)
🧹 Chores
-
Align registries to v2 schema by @kdcokenny(f774aab)
-
Update examples to v2 types by @kdcokenny(bd15388)
-
Cleanup by @kdcokenny(6a168ac)
-
demo: Harden vhs recording and suppress wrangler noise by @kdcokenny(1ce38d4)
-
cli: Remove confirmed dead code and backup artifacts by @kdcokenny(69f0461)
-
cli: Remove unused shared force option helper by @kdcokenny(9b0102c)
-
cli: Remove deprecated path-safety wrappers and tests by @kdcokenny(01e93dd)
-
Align registry alias terminology and tighten schema validation docs/tests by @kdcokenny(ce19d16)
-
cli: Bump version to 2.0.0 by @kdcokenny(9732c44)
-
cli: Add explicit preview_with_errors migrate status by @kdcokenny(e04a6d8)
-
Mark main merged, keep v2 as canon by @kdcokenny(e13f892)
-
docs: Record passing manual build checks for section 9 by @kdcokenny(b7557bb)
❤️ New Contributors
- @beppe2880 made their first contribution in #128
- @centraldogma99 made their first contribution in #130
Full Changelog: v1.4.6...v2.0.0