2026-03-31 15:13:20 -07:00
2026-05-11 11:27:46 -04:00
2026-05-17 07:06:49 -04:00
2026-07-24 17:40:49 -07:00
2026-07-27 14:05:24 -04:00
2026-06-29 15:50:44 -07:00
2026-07-27 14:05:24 -04:00
2026-07-27 14:05:24 -04:00
2026-01-26 14:07:14 +01:00
2026-07-27 13:00:46 -07:00
2026-07-24 17:40:49 -07:00
2026-07-27 14:05:24 -04:00

ECC - the agent harness operating system

Language: English | Português (Brasil) | 简体中文 | 繁體中文 | 日本語 | 한국어 | Türkçe | Русский | Tiếng Việt | ไทย | Deutsch | Español

Discord Website GitHub App MIT license ecc-universal npm downloads ecc-agentshield npm downloads

ECC Tools
ECC Pro + GitHub App

Install free · Private repos from $19/seat/mo

Sponsor ECC

Fund the open-source project
Discord
Community

Discord · Q&A · Show and Tell

Jump to install ↓

ECC

Your agent can write code, but ECC gives it a coordinated engineering system and toolbox: it plans before it builds, verifies changes with tests, reviews its own work from a fresh context, remembers what matters, and turns repeated wins into reusable skills and workflows.

plan -> test -> implement -> review -> verify -> remember -> improve

Instead of rebuilding that process in every prompt, you install it once and make it part of how your agent works.

Optimize the context window. Persist everything else.

ECC is MIT-licensed open source. It works best with Claude Code today, with first-class Codex support and adapters for Cursor, OpenCode, Gemini, Zed, GitHub Copilot, Antigravity, Qwen, and other harnesses.

Access to 67 agents, 281 skills, and 94 legacy command shims, plus hooks, rules, memory, continuous learning, and AgentShield security scanning. The agents are specialized for planning, review, build repair, security, architecture, and domain work.

Included Count What it gives you
Agents 67 agents Planning, review, build repair, security, architecture, and domain work
Skills 281 skills TDD, research, security, docs, frontend, data, ML, operations, and more
Commands 94 commands Convenient entry points while ECC moves to a skills-first surface
Hooks and memory Runtime Enforcement, session summaries, continuous learning, instincts, and context controls
Rules Selective Always-loaded standards you choose by language or project
AgentShield Included Scanning for prompts, hooks, MCP config, permissions, secrets, and agent files

Why Choose ECC?

Without a system With ECC
Plans disappear into chat history Plans become editable artifacts before implementation starts
"Please use TDD" is an instruction the model may forget TDD becomes a gated RED -> GREEN -> REFACTOR workflow with evidence
The same context writes and reviews the code A fresh-context reviewer looks for regressions and blind spots
Memory means saving an enormous transcript Sessions are distilled into summaries, instincts, and reusable skills
Quality checks depend on reminders Hooks can enforce deterministic checks outside the prompt
Agent configuration is trusted by default AgentShield scans the harness itself as an attack surface

TDD: Test-Driven Development

/ecc:plan "Add usage-based billing alerts"
  -> confirm or edit the plan
  -> activate tdd-workflow
  -> capture RED evidence before implementation
  -> implement until GREEN
  -> review from fresh context
  -> fix findings with regression tests
  -> verify build, lint, types, and tests

A result is not just code. It's a trail of evidence: the plan, the failing test, the passing test, the review findings, and the final verification.

Skills keep the context focused

Rules, skills, agents, and hooks solve different problems. Keeping those jobs separate is how ECC adds capability without dumping the entire repository into every session.

Concept What it does Context behavior
Skills Reusable workflows such as TDD, security review, or deep research Loaded when the task needs them
Agents Scoped workers with their own context and tool permissions Isolate planning, implementation, and review
Rules Durable project or language standards Always loaded, so install them selectively
Hooks Scripts triggered by harness events Run outside the model context
Instincts Patterns learned from real sessions with confidence scores Recalled when relevant

Share context between harnesses

ECC's Memory Vault gives Claude, Codex, Hermes, OpenClaw, Kimi, and other harnesses one local, inspectable Markdown format for durable context and handoffs. Project and team memories live under .ecc/memory/; user memories live under ~/.ecc/memory/.

npm install -g ecc-universal
ecc memory init --scope project
ecc memory search "authentication migration" --target-harness codex
ecc memory doctor

Memory is unreviewed context, not executable policy. Verify important claims against authoritative sources and promote accepted knowledge into governed project documentation. The optional ecc-memory-mcp server exposes the same bounded save, search, read, and doctor surface without enabling itself by default.

Open the Unified Memory workflow →

What's New: ECC 2.1

Important

NEW IN ECC 2.1: Plan Canvas · Kimi harness · self-hosted compute on Itô GPUs. See the full release notes →

Plan Canvas: review plans by pointing, not retyping

Your agent writes a plan, then opens it in a loopback-only browser canvas. Click the part you mean, attach numbered annotations, chat from a side rail, and hit Approve plan or Request changes. The verdict maps straight onto /plan's CONFIRM gate. Mermaid diagrams render live, and edits to the plan file reload the page.

Plan Canvas demo: reviewing an ECC plan in the browser, scrolling diagrams, attaching an anchored annotation, chatting with the agent, and approving the plan

It's harness- and model-agnostic: a plain CLI (ecc-plan-canvas) speaking JSON, so any agent can drive it. Try it: ask your agent to /ecc:plan anything, then review from the page instead of the terminal.

Open the plan used in this demo →

Also in 2.1

  • Kimi Code install target (--target kimi): ECC installs natively into Moonshot AI's Kimi Code CLI
  • Self-host on GPUs: a verified path with Itô, ECC's preferred compute sponsor, including the opt-in ecc ito find RFQ bridge (details and disclosures below)
  • Moonshot AI (Kimi), Itô, and Atlas Cloud are now public sponsors
  • Hermes + OpenClaw install targets, a Codex navigation guide, consolidated PostToolUse hooks, and supply-chain hardening
Previous releases
Version Highlights
v2.0.0 The Agent Harness Operating System: cross-harness graduation, control-pane substrate, orch-* orchestrators, Discord + ECC bot, single-connector MCP policy
v1.10.0 Surface refresh, operator workflows, ECC 2.0 alpha
v1.9.0 Selective install, ECC Tools Pro, 12 language ecosystems
v1.8.0 Harness performance and cross-platform reliability
v1.7.0 Cross-platform expansion and presentation builder
v1.6.0 Codex Edition and the ECC Tools GitHub App
v1.5.0 Universal Edition
v1.4.0 Multi-language rules, installation wizard, PM2 orchestration
v1.3.0 Complete OpenCode plugin support
v1.2.0 Unified commands and skills
v1.1.0 Cross-platform support and community fixes
v1.0.0 Official plugin release

Install ECC

Pick one path only (per harness)

You can use ECC with Claude Code, Codex, and other harnesses at the same time. Choose one install method for each harness:

  • Works: Claude Code plugin + Codex sync
  • Avoid: Claude Code plugin + full Claude manual install
  • Avoid: Codex sync + Codex marketplace plugin

Recommended default: install the Claude Code plugin for Claude Code and use the supported sync flow for Codex. Do not stack install methods. Installing ECC twice into the same harness can duplicate skills, commands, hooks, or configuration; installing it once into multiple harnesses does not.

Claude Code

Run these commands inside Claude Code:

/plugin marketplace add https://github.com/affaan-m/ECC
/plugin install ecc@ecc

That installs ECC's skills, agents, commands, and plugin-managed hooks. Claude Code plugins cannot distribute rules, so add only the rule packs you actually want:

git clone https://github.com/affaan-m/ECC.git
cd ECC
mkdir -p ~/.claude/rules/ecc
cp -R rules/common ~/.claude/rules/ecc/
cp -R rules/typescript ~/.claude/rules/ecc/  # replace with your stack

Start with rules/common plus one language or framework pack you actually use. If you install the plugin, do not run ./install.sh --profile full afterward.

Codex App and CLI

The reliable ECC setup for Codex is the sync flow. Run Codex once first so ~/.codex/config.toml exists. The sync preserves your existing Codex files, creates timestamped backups, and merges ECC's AGENTS.md, skills, prompts, agents, and reference config into ~/.codex:

git clone https://github.com/affaan-m/ECC.git
cd ECC
npm install
bash scripts/sync-ecc-to-codex.sh

You can also open the ECC repository directly in Codex for a project-local setup. Codex reads the root AGENTS.md and the trusted project configuration in .codex/ without a global sync.

For repo navigation, surface ownership, and PR diff packet guidance, read the Codex ECC Navigation Map.

Codex plugin marketplace (experimental for ECC)

Codex officially supports plugin marketplaces, and ECC publishes a repo marketplace:

codex plugin marketplace add affaan-m/ECC
codex plugin marketplace list

Restart Codex, then install or enable ecc from the Plugins directory. Do not add the marketplace plugin on top of the Codex sync flow. Marketplace registration is stable in Codex, but ECC's current plugin package references shared repository content that may not be copied into Codex's install cache. Until that upstream cache behavior is resolved, use the sync flow above when you need all ECC skills reliably.

From an ECC checkout, verify the installed plugin cache with:

node scripts/codex/check-plugin-cache.js

See the .codex plugin notes for the current limitation and tracking issues.

Other agents and editors

Clone ECC once, then choose the target that matches your harness:

git clone https://github.com/affaan-m/ECC.git
cd ECC
Harness Install or setup Notes
Cursor ./install.sh --profile minimal --target cursor Project-local .cursor/ adapter
OpenCode npm install && npm run build:opencode && ./install.sh --profile full --target opencode Builds the plugin payload before the full install
Gemini CLI ./install.sh --profile minimal --target gemini Project-local .gemini/ config
Zed ./install.sh --profile minimal --target zed Project-local .zed/ adapter
Antigravity ./install.sh --profile minimal --target antigravity See the Antigravity guide
Qwen CLI ./install.sh --profile minimal --target qwen See the Qwen guide
Hermes ./install.sh --profile minimal --target hermes See the Hermes setup guide
OpenClaw ./install.sh --profile minimal --target openclaw Managed home-directory install
Kimi Code CLI ./install.sh --profile minimal --target kimi Project-local .kimi/ install
CodeBuddy ./install.sh --profile minimal --target codebuddy Project-local .codebuddy/ install
JoyCode ./install.sh --profile minimal --target joycode Project-local .joycode/ install

GitHub Copilot support is already included in this repository. .github/copilot-instructions.md provides the instruction layer, .github/prompts/ contains the reusable /plan, /tdd, /security-review, /build-fix, and /refactor prompts, and .vscode/settings.json enables chat.promptFiles.

For a harness without a native ECC target, use the manual adaptation guide. It explains how to carry a small set of ECC skills and workflow instructions into chat-style tools without pretending hooks or native skill discovery are available.

Cursor installs agent definitions under .cursor/agents/ecc-*.md. Cursor-native loading behavior can vary by Cursor build. ECC does not install root AGENTS.md into .cursor/. The adapter keeps Cursor's context scoped to its native rules and agent surfaces.

Advanced Install Options

The options stay here, directly under the main install paths, so you do not have to hunt through the README when the default setup is not the right fit.

Low-context install with no hook runtime

Low-context / no-hooks path

Use this when you want ECC's rules, agents, commands, platform config, and core workflows without runtime hooks:

./install.sh --profile minimal --target claude
# or, without cloning first
npx ecc-install --profile minimal --target claude

Windows:

.\install.ps1 --profile minimal --target claude

This profile intentionally excludes hooks-runtime.

For the normal core profile with hooks disabled:

./install.sh --profile core --without baseline:hooks --target claude

Add the hook runtime later only if you want it:

./install.sh --target claude --modules hooks-runtime
Choose only the components you need

Find the right components first

Ask the packaged advisor which components match your work:

npx ecc consult "security reviews" --target claude

It returns matching components, related profiles, and preview/install commands.

You can also install explicit skills or capabilities:

./install.sh --target claude --skills tdd-workflow,security-review
npx ecc install --profile minimal --target claude --with capability:machine-learning
Project-local rules instead of global rules

Use project-local rules when ECC's standards should apply to one repository rather than every Claude Code session:

cd your-project
mkdir -p .claude/rules/ecc
cp -R /path/to/ECC/rules/common .claude/rules/ecc/
cp -R /path/to/ECC/rules/typescript .claude/rules/ecc/

Rules are always-loaded context, so begin with common and one pack for the stack you actually use.

Fully manual Claude install

Use this only when you are intentionally skipping the plugin path:

git clone https://github.com/affaan-m/ECC.git
cd ECC
./install.sh --profile full

Windows:

git clone https://github.com/affaan-m/ECC.git
cd ECC
.\install.ps1 --profile full

If you choose this path, stop there. Do not also run /plugin install.

For hand-picked manual installs, Claude discovers skills as direct children of ~/.claude/skills/; do not nest them under ~/.claude/skills/ecc/.

Do not copy the raw repo hooks/hooks.json into ~/.claude/settings.json or ~/.claude/hooks/hooks.json. Use the installer so hook command paths are rewritten correctly:

bash ./install.sh --target claude --modules hooks-runtime

On Windows, Claude's config root is %USERPROFILE%\\.claude; install the hook runtime with:

pwsh -File .\install.ps1 --target claude --modules hooks-runtime
Custom API endpoints, model gateways, and self-hosted models

ECC works through each harness's normal configuration, so you can use an official provider, a compatible custom API endpoint or model gateway, or a self-hosted model without changing ECC's workflows.

Run or self-host any open-source model behind that gateway using separate compute and serving setup. If you need GPU capacity, Itô is ECC's preferred compute sponsor; any GPU provider works. The sponsorship link is passive: it does not invoke an RFQ, reserve capacity, provision compute, or configure serving. Separately, ecc ito find invokes the explicitly configured canonical Itô CLI and submits a live authenticated RFQ; it does not reserve capacity. Managed inference through Itô is not live yet.

For Claude Code, see Anthropic's LLM gateway documentation and model configuration documentation.

For a local Kimi setup, keep the harness, model-serving endpoint, and GPU provider as separate choices:

Itô Markets
1. Get GPU capacity

Use Itô or any GPU provider.
Moonshot AI - Kimi
2. Serve Kimi

Expose the chosen checkpoint through a compatible endpoint.
ECC Tools
3. Run Kimi Code with ECC

Install project instructions and skills, then start Kimi Code.

Configure the endpoint with Kimi Code's official provider guide, then install ECC:

bash ./install.sh --target kimi --profile minimal
npx ecc doctor --target kimi
kimi

Kimi Code discovers the installed .kimi/AGENTS.md instructions and .kimi/skills/ workflows natively.

Reset, repair, or uninstall

Reset / Uninstall ECC

If ECC feels duplicated, intrusive, or broken, inspect the managed state before reinstalling:

node scripts/ecc.js list-installed
node scripts/ecc.js doctor
node scripts/ecc.js repair
node scripts/ecc.js uninstall --dry-run

For direct uninstall:

node scripts/uninstall.js --dry-run
node scripts/uninstall.js

Plugin users should remove the plugin from Claude Code, then delete only the rule folders they manually copied and no longer want. ECC only removes files recorded in its install-state. It does not claim unrelated files in your harness directories.

Start Using ECC

Start with the workflow you need, not the full catalog.

What you are doing Start here
Building a feature /ecc:plan "describe the feature", then tdd-workflow
Fixing a bug Reproduce it with a failing test, then use tdd-workflow
Reviewing new code /code-review for a fresh-context review
Repairing a build /build-fix
Cleaning a codebase /refactor-clean
Checking context pressure /context-budget
Ending a long session /save-session or /learn-eval
Resuming later /resume-session
Auditing agent config /security-scan or npx -y ecc-agentshield scan --path .
Plugin commands and manual commands

Claude Code plugin commands use the namespaced form:

/ecc:plan "Add authentication"

Manual installs may expose the shorter compatibility form:

/plan "Add authentication"

Skills are the primary workflow surface. Commands remain convenient entry points and compatibility shims.

Guides

The Shorthand Guide to ECC
The Shorthand Guide

Setup, foundations, and day-one use.
The Longform Guide to ECC
The Longform Guide

Context economics, memory, evals, and parallel agents.
The Security Guide to ECC
The Security Guide

Prompt injection, hooks, MCP, and AgentShield.

Commands Quick Reference | Manual Adaptation Guide

What is inside the repository
ECC/
|-- agents/           # 67 specialized subagents for delegation
|-- skills/           # 281 reusable workflows loaded on demand
|-- commands/         # 94 maintained slash-command shims
|-- rules/            # opt-in common and language standards
|-- hooks/            # runtime automation and enforcement
|-- scripts/          # install, repair, sync, orchestration, and checks
|-- .claude-plugin/   # Claude Code marketplace manifest
|-- .codex/           # Codex reference configuration and agent roles
|-- .opencode/        # OpenCode plugin, commands, and instructions
|-- .cursor/          # Cursor rules and hook adapter
|-- docs/             # public setup, architecture, and operating guides

The root is the source of truth. Platform adapters package or map these same workflows instead of maintaining separate copies.

Platform implementation notes
Harness ECC distribution Main instruction surface Automation
Claude Code Plugin or selective installer CLAUDE.md, rules, skills, agents Native plugin hooks
Codex Sync flow, repo config, experimental ECC marketplace AGENTS.md, skills, .codex/config.toml Git hooks and Codex-native configuration
Cursor Project adapter .cursor/rules/, scoped agents Cursor hook adapter
OpenCode Built plugin plus selective installer opencode.json, instructions, commands OpenCode plugin events
GitHub Copilot Checked-in instruction layer copilot-instructions.md, prompt files No ECC hook runtime
Feature Claude Code Cursor IDE Codex CLI OpenCode GitHub Copilot
Agents 67 Shared (AGENTS.md) Shared (AGENTS.md) 12 N/A
Commands 94 Shared Instruction-based 35 5 prompts
Skills 281 Shared 10 (native format) 37 Via instructions
Version Plugin Plugin Reference config 2.1.0 Instruction layer
What changed in v2.0.0

ECC v2.0.0 stabilizes the 2.0 line with the public Hermes operator story, 281 skills, 67 agents, 94 command shims, session adapters, MCP inventory, worktree lifecycle services, orchestrator workflows, and the ECC Discord community.

Security

Install ECC only from official sources:

Scan a project with AgentShield:

npx -y ecc-agentshield scan --path .
Hooks, MCP servers, and context controls

Hooks can run shell commands, MCP servers can hold credentials, and project instructions can enter an agent's context. Treat all three as executable configuration.

Do not copy raw hooks/hooks.json into ~/.claude/settings.json after a plugin install. Modern Claude Code versions load plugin hooks automatically, and a second copy can make them fire twice.

Use /mcp for Claude Code runtime disables; Claude Code persists those choices in ~/.claude.json.

ECC_DISABLED_MCPS is an ECC install/sync filter, not a live Claude Code toggle.

If context is getting heavy, run /context-budget, remove rules you do not need, and disable unused MCP servers. See the token optimization guide.

Security references:

Troubleshooting

ECC appears twice or hooks fire twice

The usual cause is installing the Claude plugin and then running install.sh --profile full or npx ecc-install --profile full on top of it.

  1. Remove the Claude Code plugin install.
  2. Run node scripts/ecc.js uninstall --dry-run from the ECC checkout.
  3. Remove extra rule folders you manually copied and no longer want.
  4. Reinstall once, using one path.

For hook-specific checks, see the hooks README.

Codex marketplace installs but skills do not load

Run the cache check from an ECC checkout:

node scripts/codex/check-plugin-cache.js

If it reports unresolved parent references, use bash scripts/sync-ecc-to-codex.sh. Registration in codex plugin list confirms the marketplace entry, not that every referenced file reached the plugin cache.

My platform is not listed

Use the manual adaptation guide, or open a GitHub discussion with the harness name and the file, skill, command, and hook formats it supports.

Community and Project

Sponsors and ECC Pro

ECC stays free because sponsors and Pro users fund the work.

ECC Pro adds private-repo analysis, PR-triggered audits, AgentShield-backed scanning, automatic push and PR checks, pooled team usage, and priority support through the hosted GitHub App.

ECC Pro
Hosted GitHub App for private repos
Sponsor ECC
Fund the OSS work
Community
Q&A, ideas, and Show and Tell
GitHub App
PR audits and hosted workflows

CodeRabbit    Greptile    Atlas Cloud    Moonshot AI - Kimi    Itô Markets

Community sponsors: Mike Morgan | @jasonwu513 | @1anter | @massimotodaro | @meadmccabe

Become a sponsor | Sponsor tiers | Sponsorship program

Contributing

Contributions are welcome across skills, agents, rules, hooks, docs, tests, adapters, and security improvements.

License

MIT. Use it freely, adapt it to your workflow, and contribute back when you can.

Languages
JavaScript 70%
Rust 21.7%
Python 4.6%
Shell 2.4%
TypeScript 1.1%