Deployment Guide

Version: 1.0.0

RLM Addon Deployment Guide

Version: 1.0.0 Addon ID: `rlm` Issue: #328

Overview

The RLM (Recursive Language Models) addon provides recursive context decomposition for processing arbitrarily large codebases and document corpora through programmatic sub-agent delegation. This guide documents how to deploy RLM artifacts across all 8 AIWG-supported providers.

What Gets Deployed

Artifact TypeCountNames
Agents1`rlm-agent`
Commands3`rlm-query`, `rlm-batch`, `rlm-status`
Skills1`rlm-mode`
Rules1`rlm-context-management`

Total: 6 artifacts

Deployment Command

# Deploy to default provider (Claude Code)
aiwg use rlm

# Deploy to specific provider
aiwg use rlm --provider codex
aiwg use rlm --provider copilot
aiwg use rlm --provider factory
aiwg use rlm --provider cursor
aiwg use rlm --provider opencode
aiwg use rlm --provider warp
aiwg use rlm --provider windsurf

# Deploy to all providers
for provider in claude codex copilot factory cursor opencode warp windsurf; do
  aiwg use rlm --provider $provider
done

Deployment Matrix

Full Cross-Provider Deployment Table

ArtifactClaude CodeCodexCopilotFactoryCursorOpenCodeWarpWindsurf
rlm-agent.md`.claude/agents/``.codex/agents/``.github/agents/``.factory/droids/``.cursor/agents/``.opencode/agent/``.warp/agents/` + WARP.mdAGENTS.md
rlm-query.md`.claude/commands/``~/.codex/prompts/``.github/agents/` (YAML)`.factory/commands/``.cursor/commands/``.opencode/commands/``.warp/commands/` + WARP.md`.windsurf/workflows/`
rlm-batch.md`.claude/commands/``~/.codex/prompts/``.github/agents/` (YAML)`.factory/commands/``.cursor/commands/``.opencode/commands/``.warp/commands/` + WARP.md`.windsurf/workflows/`
rlm-status.md`.claude/commands/``~/.codex/prompts/``.github/agents/` (YAML)`.factory/commands/``.cursor/commands/``.opencode/commands/``.warp/commands/` + WARP.md`.windsurf/workflows/`
rlm-mode.md`.claude/skills/``~/.codex/skills/``.github/skills/``.factory/skills/``.cursor/skills/``.opencode/skill/``.warp/skills/``.windsurf/skills/`
rlm-context-management.md`.claude/rules/``.codex/rules/``.github/copilot-rules/``.factory/rules/``.cursor/rules/``.opencode/rule/``.warp/rules/``.windsurf/rules/`

Provider-Specific Path Details

Claude Code

.claude/
├── agents/
│   └── rlm-agent.md
├── commands/
│   ├── rlm-query.md
│   ├── rlm-batch.md
│   └── rlm-status.md
├── skills/
│   └── rlm-mode.md
└── rules/
    └── rlm-context-management.md

Codex (OpenAI)

# Project-local
.codex/
├── agents/
│   └── rlm-agent.md
└── rules/
    └── rlm-context-management.md

# User-level (home directory)
~/.codex/
├── prompts/
│   ├── rlm-query.md
│   ├── rlm-batch.md
│   └── rlm-status.md
└── skills/
    └── rlm-mode.md

Special Handling: Commands and skills deploy to home directory for user-level availability across all projects.

GitHub Copilot

.github/
├── agents/
│   ├── rlm-agent.md
│   ├── rlm-query.yml        # Command converted to YAML
│   ├── rlm-batch.yml        # Command converted to YAML
│   └── rlm-status.yml       # Command converted to YAML
├── skills/
│   └── rlm-mode.md
└── copilot-rules/
    └── rlm-context-management.md

Special Handling: Commands are converted to YAML agent format and deployed alongside agents.

Factory AI

.factory/
├── droids/
│   └── rlm-agent.md
├── commands/
│   ├── rlm-query.md
│   ├── rlm-batch.md
│   └── rlm-status.md
├── skills/
│   └── rlm-mode.md
└── rules/
    └── rlm-context-management.md

Cursor

.cursor/
├── agents/
│   └── rlm-agent.md
├── commands/
│   ├── rlm-query.md
│   ├── rlm-batch.md
│   └── rlm-status.md
├── skills/
│   └── rlm-mode.md
└── rules/
    └── rlm-context-management.md

OpenCode

.opencode/
├── agent/              # Singular!
│   └── rlm-agent.md
├── command/            # Singular!
│   ├── rlm-query.md
│   ├── rlm-batch.md
│   └── rlm-status.md
├── skill/              # Singular!
│   └── rlm-mode.md
└── rule/               # Singular!
    └── rlm-context-management.md

Special Handling: OpenCode uses singular directory names, not plural.

Warp Terminal

# Discrete files
.warp/
├── agents/
│   └── rlm-agent.md
├── commands/
│   ├── rlm-query.md
│   ├── rlm-batch.md
│   └── rlm-status.md
├── skills/
│   └── rlm-mode.md
└── rules/
    └── rlm-context-management.md

# Aggregated file (project root)
WARP.md  # Contains rlm-agent + all commands

Special Handling: Agents and commands are also aggregated into single-file `WARP.md` for quick context loading.

Windsurf

# Aggregated agents file (project root)
AGENTS.md  # Contains rlm-agent

# Discrete artifacts
.windsurf/
├── workflows/
│   ├── rlm-query.md
│   ├── rlm-batch.md
│   └── rlm-status.md
├── skills/
│   └── rlm-mode.md
└── rules/
    └── rlm-context-management.md

Special Handling: Agents are aggregated into `AGENTS.md` at project root. Commands deploy to `.windsurf/workflows/`.

Provider-Specific Deployment Details

Claude Code

Installation:

aiwg use rlm

What Happens:

  • Copies all 6 artifacts to `.claude/` directories
  • No transformations needed
  • Native support for all artifact types

Verification:

ls .claude/agents/rlm-agent.md
ls .claude/commands/rlm-*.md
ls .claude/skills/rlm-mode.md
ls .claude/rules/rlm-context-management.md

Sub-Agent Spawning:

# RLM uses Claude CLI for sub-agents
claude -p "sub-task query"

Codex (OpenAI)

Installation:

aiwg use rlm --provider codex

What Happens:

  • Agents → `.codex/agents/`
  • Commands → `~/.codex/prompts/` (home directory)
  • Skills → `~/.codex/skills/` (home directory)
  • Rules → `.codex/rules/`

Why Home Directory for Commands/Skills: Codex allows user-level commands and skills to be available across all projects. This enables RLM commands to work in any Codex workspace.

Verification:

# Project-local
ls .codex/agents/rlm-agent.md
ls .codex/rules/rlm-context-management.md

# User-level (home directory)
ls ~/.codex/prompts/rlm-*.md
ls ~/.codex/skills/rlm-mode.md

Sub-Agent Spawning:

# RLM uses Codex CLI for sub-agents
codex -q "sub-task query"

Note: RLM agent definition for Codex must use `codex -q` instead of `claude -p` for sub-agent delegation.

GitHub Copilot

Installation:

aiwg use rlm --provider copilot

What Happens:

  • Agents → `.github/agents/` (markdown)
  • Commands → `.github/agents/` (converted to YAML format)
  • Skills → `.github/skills/`
  • Rules → `.github/copilot-rules/`

Command Transformation: AIWG automatically converts command markdown to Copilot's YAML agent format:

# Example: rlm-query.yml
name: rlm-query
description: Execute recursive query with automatic context decomposition
triggers:
  - /rlm-query
agent_type: command
# ... rest of YAML structure

Verification:

ls .github/agents/rlm-agent.md
ls .github/agents/rlm-query.yml
ls .github/agents/rlm-batch.yml
ls .github/agents/rlm-status.yml
ls .github/skills/rlm-mode.md
ls .github/copilot-rules/rlm-context-management.md

Sub-Agent Spawning: Limited support. Copilot does not natively support programmatic sub-agent spawning. RLM will operate in degraded mode (no recursive delegation).

Factory AI

Installation:

aiwg use rlm --provider factory

What Happens:

  • Agents → `.factory/droids/`
  • Commands → `.factory/commands/`
  • Skills → `.factory/skills/`
  • Rules → `.factory/rules/`

Verification:

ls .factory/droids/rlm-agent.md
ls .factory/commands/rlm-*.md
ls .factory/skills/rlm-mode.md
ls .factory/rules/rlm-context-management.md

Sub-Agent Spawning:

# Factory AI CLI for sub-agents
factory run --agent rlm-agent --query "sub-task"

Cursor

Installation:

aiwg use rlm --provider cursor

What Happens:

  • Copies all 6 artifacts to `.cursor/` directories
  • No transformations needed
  • Native support for all artifact types

Verification:

ls .cursor/agents/rlm-agent.md
ls .cursor/commands/rlm-*.md
ls .cursor/skills/rlm-mode.md
ls .cursor/rules/rlm-context-management.md

Sub-Agent Spawning:

# Cursor CLI for sub-agents
cursor-agent run "sub-task query"

OpenCode

Installation:

aiwg use rlm --provider opencode

What Happens:

  • Agents → `.opencode/agent/` (singular)
  • Commands → `.opencode/commands/` (plural)
  • Skills → `.opencode/skill/` (singular)
  • Rules → `.opencode/rule/` (singular)

Verification:

ls .opencode/agent/rlm-agent.md
ls .opencode/commands/rlm-*.md
ls .opencode/skill/rlm-mode.md
ls .opencode/rule/rlm-context-management.md

Sub-Agent Spawning:

# OpenCode CLI for sub-agents
opencode query "sub-task"

Warp Terminal

Installation:

aiwg use rlm --provider warp

What Happens:

  • Discrete files → `.warp/agents/`, `.warp/commands/`, `.warp/skills/`, `.warp/rules/`
  • Aggregated → Appends agent + commands to `WARP.md`

Verification:

# Discrete
ls .warp/agents/rlm-agent.md
ls .warp/commands/rlm-*.md
ls .warp/skills/rlm-mode.md
ls .warp/rules/rlm-context-management.md

# Aggregated
grep -q "# Agent: rlm-agent" WARP.md && echo "Agent aggregated"
grep -q "# Command: rlm-query" WARP.md && echo "Commands aggregated"

Sub-Agent Spawning:

# Warp terminal commands for sub-agents
warp run-agent "rlm-agent" --query "sub-task"

Windsurf

Installation:

aiwg use rlm --provider windsurf

What Happens:

  • Agent → Appended to `AGENTS.md` at project root
  • Commands → `.windsurf/workflows/`
  • Skills → `.windsurf/skills/`
  • Rules → `.windsurf/rules/`

Verification:

# Aggregated agent
grep -q "# Agent: rlm-agent" AGENTS.md && echo "Agent aggregated"

# Discrete artifacts
ls .windsurf/workflows/rlm-*.md
ls .windsurf/skills/rlm-mode.md
ls .windsurf/rules/rlm-context-management.md

Sub-Agent Spawning:

# Windsurf workflow execution
windsurf exec --workflow "rlm-query" --input "sub-task"

Quick Start by Provider

Claude Code

# Install
aiwg use rlm

# Verify
ls .claude/agents/rlm-agent.md

# Use
/rlm-query "Analyze all TypeScript files for async/await patterns"

Codex

# Install
aiwg use rlm --provider codex

# Verify
ls ~/.codex/prompts/rlm-query.md

# Use
codex -q "rlm-query: Analyze all TypeScript files for async/await patterns"

Copilot

# Install
aiwg use rlm --provider copilot

# Verify
ls .github/agents/rlm-query.yml

# Use (limited - no sub-agent spawning)
# Use GitHub Copilot chat interface to invoke rlm-query command

Factory AI

# Install
aiwg use rlm --provider factory

# Verify
ls .factory/droids/rlm-agent.md

# Use
factory run --agent rlm-agent --query "Analyze all TypeScript files"

Cursor

# Install
aiwg use rlm --provider cursor

# Verify
ls .cursor/agents/rlm-agent.md

# Use
# Invoke via Cursor command palette or agent interface

OpenCode

# Install
aiwg use rlm --provider opencode

# Verify
ls .opencode/agent/rlm-agent.md

# Use
opencode query "rlm-query: Analyze all TypeScript files"

Warp

# Install
aiwg use rlm --provider warp

# Verify
ls .warp/agents/rlm-agent.md
grep "rlm-agent" WARP.md

# Use
warp run-agent "rlm-agent" --query "Analyze all TypeScript files"

Windsurf

# Install
aiwg use rlm --provider windsurf

# Verify
grep "rlm-agent" AGENTS.md

# Use
windsurf exec --workflow "rlm-query" --input "Analyze all TypeScript files"

Sub-Agent Spawning Support

RLM's core capability is recursive context decomposition via sub-agent spawning. Provider support varies:

ProviderSub-Agent SupportStatusNotes
Claude Code✅ FullNativeUses `claude -p` CLI
Codex✅ FullNativeUses `codex -q` CLI
Factory✅ FullNativeUses `factory run` CLI
Cursor⚠️ PartialLimitedManual invocation only
OpenCode✅ FullNativeUses `opencode query`
Warp✅ FullNativeUses `warp run-agent`
Windsurf⚠️ PartialLimitedWorkflow-based, not programmatic
Copilot❌ NoneDegradedNo sub-agent API

Degraded Mode Behavior

For providers without sub-agent spawning support (Copilot):

  • RLM operates in single-agent mode
  • No recursive decomposition
  • Processes entire context in one pass
  • Still applies RLM's context management rules
  • Falls back to traditional chunking if context exceeds limits

Uninstallation

Remove RLM from a provider:

# Claude Code
aiwg remove rlm

# Specific provider
aiwg remove rlm --provider codex

# All providers
for provider in claude codex copilot factory cursor opencode warp windsurf; do
  aiwg remove rlm --provider $provider
done

Manual Cleanup:

If `aiwg remove` fails, manually delete:

ProviderFiles to Delete
Claude Code`.claude/agents/rlm-agent.md`, `.claude/commands/rlm-*.md`, `.claude/skills/rlm-mode.md`, `.claude/rules/rlm-context-management.md`
Codex`.codex/agents/rlm-agent.md`, `~/.codex/prompts/rlm-*.md`, `~/.codex/skills/rlm-mode.md`, `.codex/rules/rlm-context-management.md`
Copilot`.github/agents/rlm-*.{md,yml}`, `.github/skills/rlm-mode.md`, `.github/copilot-rules/rlm-context-management.md`
Factory`.factory/droids/rlm-agent.md`, `.factory/commands/rlm-*.md`, `.factory/skills/rlm-mode.md`, `.factory/rules/rlm-context-management.md`
Cursor`.cursor/agents/rlm-agent.md`, `.cursor/commands/rlm-*.md`, `.cursor/skills/rlm-mode.md`, `.cursor/rules/rlm-context-management.md`
OpenCode`.opencode/agent/rlm-agent.md`, `.opencode/commands/rlm-*.md`, `.opencode/skill/rlm-mode.md`, `.opencode/rule/rlm-context-management.md`
Warp`.warp/agents/rlm-agent.md`, `.warp/commands/rlm-*.md`, `.warp/skills/rlm-mode.md`, `.warp/rules/rlm-context-management.md`, remove from `WARP.md`
WindsurfRemove from `AGENTS.md`, `.windsurf/workflows/rlm-*.md`, `.windsurf/skills/rlm-mode.md`, `.windsurf/rules/rlm-context-management.md`

Verification Checklist

After deploying RLM to any provider:

  • [ ] Agent file exists at provider-specific agent location
  • [ ] All 3 command files exist at provider-specific command location
  • [ ] Skill file exists at provider-specific skill location
  • [ ] Rule file exists at provider-specific rule location
  • [ ] For Warp: Agent and commands also aggregated in `WARP.md`
  • [ ] For Windsurf: Agent aggregated in `AGENTS.md`
  • [ ] For Copilot: Commands converted to YAML format
  • [ ] For Codex: Commands and skills in home directory (`~/.codex/`)
  • [ ] Provider-specific CLI command works (if applicable)
  • [ ] Sub-agent spawning works (for supported providers)

Troubleshooting

Deployment Fails

Symptom: `aiwg use rlm --provider <name>` fails

Check: 1. Provider name spelled correctly (lowercase) 2. AIWG version supports all 8 providers (`aiwg version`) 3. Permissions to write to target directories 4. For Codex: Home directory writeable (`~/.codex/`)

Solution:

# Verify provider support
aiwg catalog list --type provider

# Check write permissions
mkdir -p .claude/agents && echo "writable" > .claude/agents/test.txt && rm .claude/agents/test.txt

Sub-Agent Spawning Doesn't Work

Symptom: RLM tries to spawn sub-agents but fails

Check: 1. Provider supports sub-agent spawning (see support table above) 2. Provider CLI installed and in PATH 3. Provider CLI authentication configured

Solution:

# Claude
which claude && claude --version

# Codex
which codex && codex --version

# Factory
which factory && factory --version

Commands Not Found

Symptom: Commands don't appear in provider

Check: 1. Commands deployed to correct location for provider 2. For Codex: Check `~/.codex/prompts/` not `.codex/prompts/` 3. For Copilot: Check YAML files created in `.github/agents/` 4. For Warp: Check both `.warp/commands/` AND `WARP.md` 5. For Windsurf: Check `.windsurf/workflows/` not `.windsurf/commands/`

Solution:

# Verify command locations per provider (see Deployment Matrix above)
# Re-deploy if needed
aiwg remove rlm --provider <name>
aiwg use rlm --provider <name>

Aggregation Files Not Updated

Symptom: Warp `WARP.md` or Windsurf `AGENTS.md` missing RLM content

Check: 1. File exists before deployment (if not, AIWG creates it) 2. File is writable 3. Deployment command completed successfully

Solution:

# Warp
if [ ! -f WARP.md ]; then touch WARP.md; fi
aiwg use rlm --provider warp

# Windsurf
if [ ! -f AGENTS.md ]; then touch AGENTS.md; fi
aiwg use rlm --provider windsurf

Limitations by Provider

Copilot Limitations

  • No programmatic sub-agent spawning
  • RLM operates in degraded single-agent mode
  • Recursive decomposition not available
  • Commands must be invoked manually via Copilot chat

Windsurf Limitations

  • Sub-agent spawning is workflow-based, not programmatic
  • Limited recursive depth (workflows don't spawn workflows)
  • Best for shallow task decomposition

Cursor Limitations

  • Sub-agent invocation requires manual triggering
  • No automatic recursive decomposition
  • Suitable for single-level task delegation only

Support

For RLM deployment issues:

References

  • `@$AIWG_ROOT/agentic/code/addons/rlm/manifest.json` - Addon manifest
  • `@$AIWG_ROOT/agentic/code/addons/rlm/README.md` - RLM overview
  • `@CLAUDE.md` - Multi-platform support table
  • `@$AIWG_ROOT/docs/cli-reference.md` - CLI command documentation
  • `@$AIWG_ROOT/agentic/code/addons/rlm/agents/rlm-agent.md` - RLM agent definition
  • `@$AIWG_ROOT/agentic/code/addons/rlm/commands/` - Command definitions

Last Updated: 2026-02-09 Issue: #328