harness-locate 0.1.0

Cross-platform library for configuration, path discovery and MCP server management for agentic code harnesses (Claude Code, OpenCode, Goose)
Documentation

harness-locate

Cross-platform harness path discovery for AI coding CLI tools.

Features

  • Detect installed AI coding assistants (Claude Code, OpenCode, Goose)
  • Resolve configuration paths (global and project-scoped)
  • Unified MCP server configuration types
  • Cross-platform support (macOS, Linux, Windows)

Installation

[dependencies]
harness-locate = "0.1"

Quick Start

Detect Installed Harnesses

use harness_locate::{Harness, HarnessKind};

// Check all installed harnesses
for harness in Harness::installed()? {
    println!("{} is installed", harness.kind());
}
# Ok::<(), harness_locate::Error>(())

Get Configuration Paths

use harness_locate::{Harness, HarnessKind, Scope};

let harness = Harness::locate(HarnessKind::ClaudeCode)?;
let config_dir = harness.config(&Scope::Global)?;
println!("Config at: {}", config_dir.display());
# Ok::<(), harness_locate::Error>(())

MCP Server Configuration

use harness_locate::{Harness, HarnessKind};
use harness_locate::mcp::{McpServer, StdioMcpServer};

let server = McpServer::Stdio(StdioMcpServer {
    command: "npx".to_string(),
    args: vec!["-y".to_string(), "@modelcontextprotocol/server-filesystem".to_string()],
    env: Default::default(),
    cwd: None,
    enabled: true,
    timeout_ms: None,
});

// Check compatibility
let harness = Harness::new(HarnessKind::OpenCode);
if harness.supports_mcp_server(&server) {
    println!("Server is supported");
}

Supported Harnesses

Harness Skills Commands MCP Rules
Claude Code Yes Yes Yes Yes
OpenCode Yes Yes Yes Yes
Goose No No Yes Yes

Resource Types

DirectoryResource

For directory-based resources (skills, commands):

  • path - Directory location
  • exists - Whether directory exists
  • structure - Flat or Nested layout
  • file_format - Expected file format

ConfigResource

For file-based configuration (MCP):

  • file - Config file path
  • key_path - JSON pointer to relevant section
  • format - JSON, YAML, etc.

License

MIT