The Problem

Teams adopting AI-assisted development often face fragmented workflows across competing tools (Claude Code, Codex, Cursor, etc.). Coordination requires manual handoffs, context switching, and duplicate effort when organizing agents for sustained workstreams. There is no standardized framework for building hierarchical agent organizations that maintain session continuity and task ownership across a project lifecycle.

What This Does

OpenGoat provides a platform for constructing hierarchical organizations of OpenClaw agents that coordinate work across multiple LLM tools. The repository contains 1263 files with a TypeScript/React frontend (738 TS, 221 TSX) built with Tauri for the desktop UI, and Rust backend components. The source organizes into packages/ (437 files), apps/desktop/ (423 files), and test/ (201 files). Skill definitions live in .agents/skills/ai-elements/ with 68 reference markdown files and 97 script components handling UI patterns like chain-of-thought, confirmation flows, and task management. The CLI entry point is ./bin/opengoat exposed through package.json scripts. Configuration persists in ~/.opengoat/config.json with a defaultAgent field.

How It Is Wired

Execution flows through the Tauri desktop app at apps/desktop/src-tauri/src/lib.rs and main.rs, which launches the React UI served from apps/desktop/src/app/App.tsx. Tauri commands are defined in apps/desktop/src-tauri/src/commands/ (bootstrap.rs, chat.rs, mod.rs) and bridge to the Rust runtime. The CLI binary opengoat is built from the root package.json and bin/ entry point. Agent management commands (opengoat agent create, opengoat agent list) route through the Tauri command layer to the Rust backend. Session continuity uses --session flags passed to agent commands, persisting state in the workspace shim. The changeset workflow at .changeset/ handles version bumps and publishes. The CI pipeline at .github/workflows/ci.yml gates on pnpm build and test execution.

How To Use It

Setup:

pnpm install
pnpm build
# Or: npm i -g openclaw opengoat && openclaw onboard && opengoat start

Configuration: Required environment variable OPENGOAT_DEFAULT_AGENT or config entry defaultAgent in ~/.opengoat/config.json. The Tauri config lives at apps/desktop/src-tauri/tauri.conf.json.

Running it: Start the UI server with opengoat start (binds to 127.0.0.1:19123). For initial project provisioning: opengoat project create <url> provisions a CMO agent workspace. Agent creation: opengoat agent create "CTO" --manager --reports-to goat. Runtime override: export OPENGOAT_DEFAULT_AGENT=stone.

Real-World Use

A project lead runs opengoat project create https://myproject.com to bootstrap a CMO agent with browser-skills. They then create opengoat agent create "Engineer" --individual --reports-to cto --skill coding and opengoat agent create "Designer" --individual --reports-to cto. Work is dispatched via opengoat agent cto --message "Plan the Q2 roadmap" and opengoat agent engineer --message "Implement auth middleware". Session continuity allows follow-up: opengoat agent goat --session saaslib-planning --message "Now draft the changelog".

Code Health & Issues

Static analysis found 388 test files and 48 documentation files across the repo. The dependency graph includes package.json (pnpm), Cargo.toml (Rust), and Dockerfile. No structural red flags were detected: tests, CI, license, and lockfile are present where expected. The .husky/pre-commit hook and .npmrc are configured. No missing license or committed secrets were observed in the file structure.

The Bottom Line

OpenGoat delivers a functional framework for orchestrating multi-tool AI agent organizations with a working desktop UI and CLI. The Tauri/React architecture is sound, the skill taxonomy is extensive, and the installation path is straightforward. It is best suited for teams that need persistent agent hierarchies across Claude Code, Codex, or Cursor workflows and are comfortable configuring the Rust-backed runtime. Teams looking for a zero-config, purely JavaScript-based agent framework may find the Tauri dependency unnecessary.