Skip to main content
Glama

deleg8 — Persistent omp Subagents Plugin

Makes oh-my-pi persistent subagents the default delegation mechanism in Claude Code. Bundles the deleg8 MCP server, an enforcement hook, and a skill that teaches the orchestrator when and how to use persistent subagents instead of bare task() calls.

Components

Component

Purpose

MCP server

deleg8 — wraps omp --mode rpc as named, persistent subagents (7 tools: spawn, send, output, status, list, stop, prune)

Hook

PreToolUse on task — blocks bare/unnamed task() spawns; forces descriptive agent_id via deleg8

Skill

deleg8 — teaches the orchestrator when deleg8 beats native subagents, with workflow patterns and jq output discipline

Related MCP server: claude-code-mcp

Install

cc --plugin-dir ~/projects/deleg8

Or install from the project:

cd ~/projects/deleg8
cc --plugin-dir .

Prerequisites

  • Bun ≥ 1.1.0 (brew install bun or curl -fsSL https://bun.sh/install | bash)

  • omp on PATH (or set OMP_BIN in settings)

  • Dependencies installed: bun install

Configuration

Create .claude/deleg8.local.md in your project (or ~/.claude/ for global):

---
omp_bin: /opt/homebrew/bin/omp
default_model:
  provider: deepseek
  modelId: deepseek-v4-pro
---

Field

Default

Description

omp_bin

omp (PATH lookup)

Path to omp binary

default_model.provider

deepseek

Model provider for deleg8 agents

default_model.modelId

deepseek-v4-pro

Model ID for deleg8 agents

Usage

Once installed, the skill loads on phrases like "fan out", "parallelize", "waves", "delegate", "subagents", or when the orchestrator considers spawning a bare task().

Basic fan-out:

spawn(agent_id="compiler", initial_prompt="Build the auth module")
spawn(agent_id="tester", initial_prompt="Write tests for auth", background=true)

Multi-turn refinement:

spawn(agent_id="impl", initial_prompt="Implement payment processor")
→ review output
send(agent_id="impl", message="Add retry logic for timeout failures")

Full workflow patterns: see the deleg8 skill output or references/when-to-use.md in the skill directory.

MCP Tools

Tool

Purpose

spawn

Launch a new omp agent with optional initial prompt

send

Send follow-up to existing agent (auto-resumes idle agents)

output

Read buffered frames — digest/summary/raw with jq projection

status

Check one agent's state (running/idle/dead)

list

Snapshot of all registered agents

stop

Abort, terminate, remove from registry

prune

Drop dead/idle agents from registry

Spawn Parameters (New in v0.2)

The spawn tool now supports these enforcement parameters:

Parameter

Type

Description

denylist

string[]

Regex patterns over tool commands. Prompt-level constraints + real-time violation monitoring. Note: omp runs Bash/Read/Edit internally — deleg8 cannot intercept before execution.

own

string[]

Glob patterns limiting write scope. Same injection + monitoring pattern. Same architectural constraint as denylist.

preamble

string

Shared context block every spawned agent receives before its prompt.

fallback_model

{provider, modelId}

If the primary model fails to apply (e.g. budget exceeded), try this one.

idle_ttl

number (ms)

Auto-reap idle agents after N ms of inactivity (registry-level, 0 = off).

dead_ttl

number (ms)

Auto-reap dead agents after N ms (registry-level, 0 = off).

exclusive

{pattern, wait}[]

Cooperative agent protocol — agents acquire/release locks via host tools. Voluntary: agents must call exclusive_acquire/exclusive_release.

Usage example:

spawn(
  agent_id="builder",
  initial_prompt="Compile the .csproj",
  denylist=["git (stash|checkout)", "dotnet test"],
  own=["src/**", "*.csproj"],
  preamble="Friflo: Tags getter returns a struct copy — use AddTag/RemoveTag",
  idle_ttl=300_000,
  exclusive=[{pattern: "dotnet build", wait: true}]
)

Host tools available to agents:

  • exclusive_acquire(pattern) — acquire an exclusive command lock

  • exclusive_release(pattern) — release an exclusive command lock

  • msg(text) — send IRC message back to orchestrator

  • task_create(label, note?) — create sub-task visible to orchestrator

  • task_update(task_id, status?, note?) — update sub-task status

Enforcement Hook

The PreToolUse hook on task evaluates every subagent spawn:

  • Allows: explore subagents (read-only scouting), tasks with descriptive role fields

  • Blocks: Bare task("do X") calls, unnamed/generic subagents

  • Blocked message: "Bare task() is banned. Use deleg8: spawn(agent_id='descriptive-name', initial_prompt='...')"

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Wraps the Claude Agent SDK as MCP servers, letting you spawn multiple specialized Claude Code agents — each with its own model, tools, system prompt, and personality — from any MCP client.
    5
    81 npm
    21
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Wraps Claude Code as tools for MCP clients, enabling autonomous coding tasks via a 4-tool lifecycle with session management, async polling, and permission controls.
    4
    43 npm
    20
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that lets any MCP-capable agent spawn and drive Claude Code sessions — effectively turning Claude Code into an orchestratable sub-agent fleet.
    72 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP hosts like Claude Code and Codex to spawn, manage, and interact with persistent, reusable Pi coding-agent sessions, supporting task dispatch, status checks, and session lifecycle control.
    2 npm
    -