TestHarbor is an experimental, local-first test orchestration tool for repository-based software projects. It coordinates AI-assisted test generation, deterministic validation, human review, controlled execution, and explicit delivery from a desktop app or CLI.
TestHarbor is an early preview. Use it on repositories you can restore, review every command and patch, and do not treat its process controls as an operating-system security sandbox.
- Captures an immutable run snapshot containing the base commit, test intent, profiles, command identities, and trust scope.
- Generates candidate tests in an isolated Git worktree.
- Validates paths and candidate content before review and execution.
- Keeps agent review separate from deterministic checks and human approval.
- Runs structured test and service profiles through a supervised process launcher.
- Stores revisions, executions, decisions, logs, and artifacts as auditable history.
- Supports multiple runs from both the desktop app and CLI. Process slots are coordinated through the shared local database; the default global OS-process limit is two.
- Uses English by default and supports Simplified Chinese in both interfaces.
| Area | Current support |
|---|---|
| Desktop | macOS-first Tauri 2 application |
| CLI | Local testharbor command sharing the desktop data directory |
| Providers | Codex CLI, Claude Code CLI, and Grok CLI after capability probing |
| Strict pass decision | Go Test JSON with stable inventory and intended-test observation |
| Other results | JUnit and generic exit-code evidence can be reviewed, but do not receive the same strict pass guarantee |
| Process isolation | Unix process groups, timeouts, cancellation, concurrency limits; no VM/container sandbox |
| Delivery | Explicit export or guarded apply after human acceptance |
Providers are never silently replaced with Mock in normal operation. Mock is reserved for tests and explicit local dogfooding.
TestHarbor runs user-approved local executables such as Git, provider CLIs, test tools, and service commands. Those programs execute with the current user's operating-system permissions and may access the network. Provider requests can contain repository-derived intent, attachments, diffs, validation results, and test evidence.
Read Security model and Provider data flow before using TestHarbor with confidential code. Vulnerabilities should be reported according to SECURITY.md.
- macOS for the supported desktop release path
- Rust 1.88 or newer
- Node.js 22.12 or newer and npm
- Git
- A supported provider CLI, authenticated separately, when using a real provider
- The project-specific test tools selected in the Test Profile
cargo test --workspace
cargo check -p testharbor-desktop
cd apps/desktop
npm ci
npm run build
npm run tauri devThe desktop bundle embeds a target-specific process launcher built by apps/desktop/scripts/prepare-sidecar.sh:
cd apps/desktop
npm run tauri:bundleSee Release packaging for GitHub-hosted macOS preview builds and signed draft releases.
cargo build -p testharbor-process-launcher -p testharbor-cli
./target/debug/testharbor --help
testharbor projects open /path/to/repository
testharbor runs create --project-id <project-id>
testharbor runs listUse --json for automation. See CLI documentation for the complete flow.
testharbor config language en
testharbor config language zh-CN
testharbor --language en infoThe preference is persisted in the shared local application settings and can also be changed from the desktop Settings dialog.
React UI -> Tauri commands -> application -> domain / adapters
Domain states and guards are shared by the desktop app and CLI. See Architecture, Testing, Roadmap, and the Public release checklist.
Contributions are welcome. Start with CONTRIBUTING.md and follow the Code of Conduct.
TestHarbor is available under the MIT License. Provider and product names belong to their respective owners; this project is not affiliated with or sponsored by OpenAI, Anthropic, xAI, or other provider vendors.