Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

External Agents for Entire CLI

This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

What Are External Agents?

External agents are standalone binaries (named entire-agent-<name>) that teach Entire CLI how to work with AI coding agents it doesn't natively support. When an external agent is installed on your PATH, Entire discovers it automatically and gains the ability to:

  • Create checkpoints during AI coding sessions so you can rewind mistakes
  • Capture transcripts of what the AI agent did and why
  • Install hooks so the AI agent's lifecycle events (start, stop, commit) flow through Entire

External agents communicate with Entire CLI via subcommands that accept and return JSON over stdin/stdout. See the external agent protocol spec for the full interface.

Available Agents

AgentDirectoryStatus
Kiroagents/entire-agent-kiro/Implemented — hooks + transcript analysis
Ampagents/entire-agent-amp/Implemented — hooks + transcript analysis + token calculation + compact transcripts
Qwen Codeagents/entire-agent-qwen/Implemented — hooks + transcript analysis + compact transcripts
Oh My Piagents/entire-agent-omp/Implemented — hooks + transcript analysis + compact transcripts
Kiloagents/entire-agent-kilo/Implemented (preview) — hooks + transcript analysis + token calculation + compact transcripts

See each agent's own README for setup and usage instructions.

Enabling External Agents

External agent discovery is opt-in. Once an entire-agent-<name> binary is on your PATH, set external_agents: true in the repo's .entire/settings.json so Entire scans for it:

{
"external_agents": true
}

Without this flag, Entire ignores external agent binaries even when they're installed.

Qwen Code

Qwen support targets the terminal qwen coding agent:

cd agents/entire-agent-qwen
mise run build
cp entire-agent-qwen /usr/local/bin/
cd /path/to/your/repo
entire enable --agent qwen --telemetry=false
qwen -p "Create hello.txt with hello world" --yolo

The adapter installs Qwen command hooks in .qwen/settings.json. The stable Entire sidecar transcript lives in a repo-scoped OS temp directory, with a small .entire/tmp/<session>.json marker for Entire session discovery. Qwen Code must execute actual tools for checkpoints; local model backends that only print XML-style tool tags as text will not fire Qwen PostToolUse hooks.

Building a New External Agent

This repo includes a skill that guides you through building a new external agent with two test layers:

  1. Protocol compliance — generic subcommand coverage from entireio/external-agents-tests
  2. Lifecycle integration — repo-local e2e/ tests that exercise entire enable, prompt execution, checkpoints, and rewind
  3. Implementation — build the binary until both layers pass, then add unit tests

Getting Started — Zero Setup

Clone the repo and open it in your AI coding tool. Each tool auto-discovers the skill with no additional configuration:

ToolHow it discoversWhat to say
Claude Code.claude/skills/ directory/entire-external-agent
CodexAGENTS.md at project root"Build an external agent"
Cursor.cursor/rules/ directory"Build an external agent"
OpenCode.opencode/plugins/ auto-loaded"Build an external agent"

The skill files live in .claude/skills/entire-external-agent/ if you want to read the details.

Testing

Testing is intentionally split:

  • Generic protocol checks run in GitHub Actions via entireio/external-agents-tests. The workflow builds each entire-agent-* binary in this repo and runs the shared compliance suite against it.
  • Agent unit/build checks run in GitHub Actions for every agents/entire-agent-* directory discovered at runtime.
  • Lifecycle tests stay in this repo's e2e/ harness. These verify the parts that depend on Entire itself and on the real agent CLI: prompt execution, hook installation after entire enable, checkpoint creation, rewind behavior, and interactive sessions.
  • Unit tests live with each agent implementation under agents/.

Running Tests

# Run default test suite for all agents
mise run test# Same as test, kept for explicit CI-style naming
mise run test:ci
# Run lifecycle integration tests from this repo
mise run test:e2e
# Same as test:e2e, kept as the explicit name
mise run test:e2e:lifecycle

Protocol compliance runs in CI through .github/workflows/protocol-compliance.yml.

For a newly added agent to be picked up automatically by local root tasks and CI, add agents/entire-agent-<name>/mise.toml with build and test tasks. The shared runner falls back to Go defaults when go.mod exists, but the mise tasks are the contract for non-standard setups.

Lifecycle Harness Architecture

The lifecycle harness auto-discovers and builds all agents in agents/ via TestMain:

FilePurpose
e2e/setup_test.goTestMain entry point — discovers agents, builds binaries, configures PATH
e2e/lifecycle_test.goShared lifecycle scenarios run against every registered agent
e2e/agents/Agent adapters for the real CLIs used during lifecycle tests
e2e/entire/Entire CLI wrappers used by lifecycle assertions
e2e/testutil/Repo setup, artifact capture, git helpers, and checkpoint assertions

Environment Variables

VariableDescription
E2E_ENTIRE_BINPath to the entire binary (defaults to entire from PATH)
E2E_AGENTFilter lifecycle runs to a single registered agent
E2E_ARTIFACT_DIROverride lifecycle artifact output directory
E2E_KEEP_REPOSPreserve temp repos for debugging
E2E_CONCURRENT_TEST_LIMITOverride the per-agent lifecycle concurrency limit
QWEN_E2ESet to 1 with E2E_AGENT=qwen to run live Qwen Code lifecycle tests

Repository Layout

agents/ # Standalone external agent projects
entire-agent-kiro/ # Kiro agent (Go binary)
entire-agent-amp/ # Amp agent (Go binary)
entire-agent-qwen/ # Qwen Code agent (Go binary)
entire-agent-omp/ # Oh My Pi agent (Go binary)
entire-agent-kilo/ # Kilo agent (Go binary)
e2e/ # Lifecycle integration harness
.github/workflows/ # CI, including protocol compliance via external-agents-tests
.claude/skills/entire-external-agent/ # Skill files (research, test-writer, implementer)
AGENTS.md # Codex auto-discovery
.cursor/rules/ # Cursor auto-discovery
.opencode/plugins/ # OpenCode auto-discovery

About

⚙️ This repository contains standalone external agent binaries that extend the Entire CLI with support for additional AI coding agents.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages