diff --git a/.crew/audit/prune.jsonl b/.crew/audit/prune.jsonl index c854baa..628ab43 100644 --- a/.crew/audit/prune.jsonl +++ b/.crew/audit/prune.jsonl @@ -1 +1,2 @@ {"action":"prune","keep":10,"kept":[],"removed":[],"auditedAt":"2026-05-23T19:08:40.613Z"} +{"action":"prune","keep":10,"kept":[],"removed":[],"auditedAt":"2026-05-23T19:55:51.755Z"} diff --git a/docs/index.html b/docs/index.html index f827088..71ea386 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,663 +1,320 @@ -
- - -- One canonical source of truth for skills, agents, MCP servers, LLM endpoints, and global instructions across every LLM harness on your machine. -
- -Seven harnesses. Seven copies of the same config. They drift.
-mcpServers, mcp, context_servers...)${VAR} env-var substitution, never stored~ $ harness-sync
+A CLI tool that syncs skills, agents, MCP servers, endpoints, and instructions from a single canonical tree into each harness's native format.
+# import from whatever you already use +$ harness-sync detect + ✓ claude-code → ~/.claude/ + ✓ kilo → ~/.config/kilo/ + ✓ crush → ~/.config/crush/ + × goose not found + × opencode not found - -- +$ harness-sync init + imported 12 skills, 4 agents, 6 mcp servers from claude-code - -----Features
-Everything you need to manage LLM harness config at scale
-------- ----Canonical Tree
-Profiles, skills, agents, MCP servers, and instructions — one git-managed directory
------ ----Native Adapters
-Each harness gets its correct native format — right keys, right types, right paths
------ ----3-Way Merge
-Git merge-file semantics — disjoint changes merge cleanly, conflicts produce .rej files
------ ----Profiles
-Bundle gateway URL, model allowlist, and upstream keys — switch with one command
------ ----Secret Safety
-Env-var substitution at render time — secrets never stored in canonical tree
------ ----Auto-Detection
-Detects which harnesses are installed and only touches what's relevant
------ ----Dry-Run Preview
-See exactly what will change before writing — diff every file without touching disk
------ ----Git Rollback
-Revert the last N applies — full version history preserved in local git
------ ----Self-Update
-Pulls latest release in place with SHA-256 verification
------ ----Non-Destructive
-Only overlays managed keys — your hooks, permissions, and editor settings survive
------ ----Import from Any
--
harness-sync initpicks the best source harness and imports everything----- ----Extensible
-Add a harness: drop a Go package under
-internal/adapters/- - - -----Supported Harnesses
-Each adapter grounded against real config files and official docs
-------- ----claude-code
-MCP · Skills · Instructions
-Built-in subscription — provider config managed by Anthropic directly.
------ ----crush
-MCP · Skills · Providers · Models
-Full gateway rendering with provider map and default model support.
------ ----kilo
-MCP · Skills · Providers · Models
-Kilo CLI with provider map, model, and small model configuration.
------ ----opencode
-MCP · Skills · Providers · Models · Instructions
-Full rendering with JSONC config support and instructions merging.
------ ----goose
-MCP · Skills · Providers · Models
-YAML config with extensions map and custom provider JSON files.
------ ----cagent
-MCP · Providers · Models · Instructions
-Starter YAML config with per-agent model selection.
------ ----zed
-MCP · Providers · Models
-Context servers and language model configuration in settings.json.
-- - - -----Install
-One binary, zero dependencies, every platform
-------- --One-liner
- Recommended -- $ curl -fsSL https://raw.githubusercontent.com/-
lukaszraczylo/harness-sync/main/install.sh | bash -Picks the right artefact for OS/arch, verifies SHA-256, drops binary in
-~/.local/bin.----- --Homebrew
-- $ brew install lukaszraczylo/taps/harness-sync --macOS and Linux via Homebrew tap.
------ --From Source
-- $ git clone https://github.com/-
lukaszraczylo/harness-sync
- $ make build && make install -Requires Go 1.24+ and
-giton$PATH.- +----Usage
-Three commands to get going
--- - ---- 01 --Detect
-- $ harness-sync detect --Lists which harnesses are installed on your machine.
---- 02 --Init
-- $ harness-sync init --Imports config from detected harnesses into the canonical tree.
---- 03 --Apply
-- $ harness-sync apply --Renders and writes native config to every detected harness.
---- Full Command Reference -
----$ harness-sync detect # list adapters + detection status -$ harness-sync show [harness...] # print files each adapter manages -$ harness-sync init # import from detected harnesses - --from a,b # pick adapters, skip prompt - --no-prompt # take all detected - --force # allow re-init -$ harness-sync apply [harness...] # render + write - --dry-run # show plan, write nothing - --force # overwrite without merge - --yes # skip confirmation prompt -$ harness-sync diff [harness...] # apply --dry-run shorthand -$ harness-sync profile list # list canonical profiles -$ harness-sync profile use <name> # switch active profile - --apply # reapply after switching -$ harness-sync rollback [n] # git revert last N applies -$ harness-sync update # reinstall latest release +$ harness-sync apply --dry-run + plan: write 14 files to claude-code, 11 to kilo, 9 to crush + (dry-run, nothing written)-
Single Go binary, ~5000 LOC, 18 packages, 93 tests
--~/.config/harness-sync/ (git) -├── profiles/<name>.yaml -├── skills/<name>/SKILL.md -├── agents/<name>.md + ++ + + +The problem
+You run
+claude-code,kilo,crush,opencode,goose,cagent,zed— each keeps its own copy of the same config.++++without harness-sync
++
+- ✕same skill markdown, duplicated seven ways
+- ✕same agent definitions, rewritten per harness
+- ✕same MCP registry, seven different key names (
+mcpServers,mcp,context_servers…)- ✕same gateway URL, hand-copied into seven files
+- ✕edit once, forget the others, things break
+++with harness-sync
++
+- →one canonical tree under git version control
+- →per-harness adapters render native config formats
+- →3-way merge via
+git merge-file- →secrets via
+${VAR}env-var substitution, never stored- →git rollback on every apply
++ + + +What it does
++
+- →
+Canonical tree. Profiles, skills, agents, mcp servers, and instructions in a single git-managed directory.- →
+Native adapters. Each harness gets its correct keys and file types — no lowest-common-denominator config.- →
+3-way merge.git merge-filesemantics — disjoint changes merge cleanly, conflicts produce.rejfiles.- →
+Profiles. Bundle gateway URL, model allowlist, and upstream keys — switch with one command.- →
+Secret safety. Env-var substitution at render time. Secrets never written to disk or canonical tree.- →
+Auto-detection. Detects installed harnesses. Only touches what's relevant on your machine.- →
+Dry-run preview. Diff every target file before writing anything to disk.- →
+Git rollback. Revert the last n applies. Full version history in local git.- →
+Non-destructive overlay. Only managed keys are written. Your hooks, permissions, and editor settings survive.+ + + +Supported harnesses
+Each adapter grounded against real config files and upstream docs.
++++ +
++ + + +harness +manages +note ++ +claude-code +mcp · skills · instructions +provider config managed by Anthropic directly ++ +crush +mcp · skills · providers · models +full gateway rendering with provider map ++ +kilo +mcp · skills · providers · models +small model + provider map config ++ +opencode +mcp · skills · providers · models · instructions +JSONC config with instructions merging ++ +goose +mcp · skills · providers · models +YAML with extensions map ++ +cagent +mcp · providers · models · instructions +starter YAML with per-agent model ++ + +zed +mcp · providers · models +context servers in settings.json ++ + + +Install
+++++one-liner (recommended)
++$ curl -fsSL https://raw.githubusercontent.com/\ + lukaszraczylo/harness-sync/main/install.sh | bashPicks the right release for OS/arch, verifies SHA-256, drops binary in
+~/.local/bin.++homebrew
++$ brew install lukaszraczylo/taps/harness-sync++from source
++$ git clone https://github.com/lukaszraczylo/harness-sync +$ make build && make installRequires Go 1.24+ and
+giton$PATH.+ + + +Usage
++# 1. see what's installed +$ harness-sync detect + +# 2. import from detected harnesses into canonical tree +$ harness-sync init + +# 3. render canonical tree to all harness configs +$ harness-sync apply +$ harness-sync apply --dry-run # preview without writing +$ harness-sync diff # same as apply --dry-run +$ harness-sync profile list # list profiles +$ harness-sync profile use work # switch active profile +$ harness-sync rollback 2 # git revert last 2 applies +$ harness-sync update # pull latest release +flags
++++ +
++ + + flag effect + --dry-run show plan, write nothing + --force overwrite without merge + --yes skip confirmation prompt + --from a,b pick source adapters for init + + --no-prompt take all detected sources + Architecture
+Single Go binary. ~7,400 LOC. 174 passing tests. 18 packages.
++++
+-+-canonical tree
+-~/.config/harness-sync/ (git) +├── profiles/<name>.yaml +├── skills/<name>/SKILL.md +├── agents/<name>.md ├── mcp.yaml -└── instructions/global.md ---+- 3-Way Merge -
--+-base ← state/ (last render) -ours ← rendered (what we'd write now) -theirs ← on disk (what's actually there) +└── instructions/global.md+-merge model
+-base ← state/ (last render) +ours ← rendered (what we'd write now) +theirs ← on disk (what's actually there) -disjoint → clean merge, write -overlap → .rej file, exit non-zero --