Skip to content

feat: add multi-harness support (Claude/Qwen CLIs)#8

Merged
dkmnx merged 6 commits intomainfrom
feat/harness-switching
Feb 14, 2026
Merged

feat: add multi-harness support (Claude/Qwen CLIs)#8
dkmnx merged 6 commits intomainfrom
feat/harness-switching

Conversation

@dkmnx
Copy link
Owner

@dkmnx dkmnx commented Feb 14, 2026

Summary

  • Add multi-harness support to switch between Claude Code CLI and Qwen Code CLI
  • New kairo harness get/set commands to manage default CLI harness
  • --harness flag on switch command to override harness per invocation
  • --model flag support for Qwen harness (passed through to qwen CLI)
  • Tests for harness functionality and wrapper environment variable handling
  • Documentation updates across README and cmd/README

Technical Details

  • New cmd/harness.go with get/set subcommands
  • --harness flag added to switch command
  • Wrapper detects harness via KAIRO_HARNESS environment variable
  • Config includes optional default_harness field

Test plan

  • Unit tests pass for harness commands
  • Wrapper correctly detects harness environment variable
  • Manual testing with both claude and qwen CLIs
  • Documentation verified

- Fix build commands: task -> just (README.md, user-guide.md)
- Fix config file reference: config -> config.yaml (user-guide.md)
- Fix Makefile -> justfile (architecture/README.md)
- Add missing commands to maintenance table: backup, restore, recover, metrics
- Remove broken links to non-existent cmd/README.md and internal/README.md
- Fix table alignment for markdownlint compliance
- Add --harness flag to switch command to select CLI harness
- Add --model flag to override model (passed to Qwen CLI)
- Add getHarness() and getHarnessBinary() helper functions
- Add harness get/set commands for managing default harness
- Add DefaultHarness field to Config struct
- Enhance GenerateWrapperScript to support custom env var names
- Qwen uses ANTHROPIC_API_KEY wrapper for secure API key handling
- Validate harness names and warn on invalid values
- Support case-insensitive harness names
- Add cmd/harness_test.go with tests for:
  - harness get/set commands
  - getHarness() and getHarnessBinary() functions
  - Case-insensitive harness validation
- Add wrapper envVarName parameter tests:
  - Custom env var (ANTHROPIC_API_KEY)
  - Default env var (ANTHROPIC_AUTH_TOKEN)
  - Empty string defaults to ANTHROPIC_AUTH_TOKEN
- README.md: Add Multi-Harness feature, fix table formatting
- cmd/README.md: Add harness commands, --harness and --model flags
- docs/guides/user-guide.md: Add harness get/set documentation
- cmd/setup.go: Add promptForHarness() for setup wizard
- Update description to mention Claude Code and Qwen Code
- Add prerequisites section for both Claude and Qwen CLI
- Add harness commands to Execution section
- Update Security section to mention wrapper scripts
Fix table column alignment in README.md and cmd/README.md to pass
markdownlint validation.
@dkmnx dkmnx merged commit a8cf46d into main Feb 14, 2026
16 checks passed
@dkmnx dkmnx deleted the feat/harness-switching branch February 14, 2026 17:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant