Releases: Disaster-Terminator/Retinue
Retinue v0.2.0
Retinue v0.2.0
Retinue v0.2.0 is the first release candidate after the OpenCode-native hardening cycle. It keeps OpenCode as the default product backend, removes Retinue-specific read-only access-mode overlays from normal OpenCode children, and makes permission and stall handling explicit enough for regular MCP use.
Chinese release notes are available at v0.2.0_RELEASE_NOTES.zh-CN.md.
What Changed Since v0.1.0
- OpenCode calls prefer the official
@opencode-ai/sdk; the legacy HTTP client remains as a compatibility fallback. - Retinue now exposes backend-neutral permission tools:
retinue_list_permissionsretinue_reply_permission
- OpenCode
external_directorypermission requests are surfaced to the caller with structured approval guidance instead of being hidden inside a stalled job. - Claude Code can run through the Claude Agent SDK path, including SDK permission hooks. Retinue does not select a Claude model by default; Claude Code owns profile, endpoint, and model routing unless
RETINUE_CLAUDE_MODELis explicitly set. - OpenCode provider and tool-call failures are classified as bounded stalled diagnostics. Recoverable failures can start one fresh task-level attempt; the failed original chain remains non-evidence.
- Retinue log audit can reconcile stale stalled traces against live backend/job state, suppress completed jobs, deduplicate recovery chains, report concise issue candidates, and separate permission attention items from backend failures.
- Daemon job-control routes now require the Retinue discovery/client token, and job id handling rejects path traversal before touching job artifacts.
- Killed OpenCode jobs remain terminal unless a real completion arrives, and no-output OpenCode roots are reported as
provider_zero_progressstalled diagnostics instead of occupying active slots indefinitely. - The packaged config is treated as a fallback default. Persistent deployment overrides should use environment variables such as
RETINUE_MAX_CONCURRENT_AGENTS,RETINUE_OPENCODE_AGENT, andRETINUE_OPENCODE_ROOT_BINDING_MODE. - Kilo and backend-candidate probes were added as evaluation paths. They are not the default product backend in v0.2.0.
Product Boundary
Retinue remains a local subagent execution surface. It is not a provider router and does not own model selection.
- Default backend: OpenCode.
- Default OpenCode agent:
explore. - Default active-child slots from packaged config:
3; the default shared machine-level budget ismax(5, RETINUE_MAX_CONCURRENT_AGENTS). Deployments can override the per-session limit withRETINUE_MAX_CONCURRENT_AGENTSand the shared machine-level budget withRETINUE_GLOBAL_AGENT_BUDGET. - Overflow now defaults to
RETINUE_OVERFLOW_STRATEGY=queue: full session/global active slots returnqueuedjob handles and promote them when slots open.RETINUE_OVERFLOW_STRATEGY=evictpreserves the old same-session oldest-running eviction behavior.RETINUE_MAX_QUEUED_AGENTSdefaults to20; queue exhaustion returnsresource_exhaustedwithreason: "queue_full". - Default OpenCode root binding mode remains
per-spawn.shared-rootis available behindRETINUE_OPENCODE_ROOT_BINDING_MODE=shared_rootfor deployment experiments. - Backend, profile, model, OpenCode server, access mode, and bash policy are not normal per-tool arguments.
Reliability and Operations
- Permission requests are now first-class MCP workflow events instead of opaque stalls, and permission wait responses keep raw stderr compact so the required supervisor action stays visible.
- Provider and tool-call failures are bounded as stalled diagnostics rather than trusted results.
- Log audit support is available for maintainers, but diagnostic tooling stays outside the default product tool surface.
- Release validation is tracked through the repository gate and maintainer runbooks rather than embedded in public release notes.
Upgrade Notes
- Compared with the
v0.1.0tag, the packaged default OpenCode agent changed fromplantoexplore. Deployments that depended onplanbehavior should setRETINUE_OPENCODE_AGENT=planexplicitly. - If you edited the packaged
retinue.config.json, move persistent settings to environment variables. Plugin refreshes may overwrite packaged config files. - If you need more concurrent children, set
RETINUE_MAX_CONCURRENT_AGENTSin the Codex host or MCP server environment. - If your MCP host has a shorter tool timeout than Retinue's 180-second wait cap, set
RETINUE_MCP_WAIT_MAX_MSto match that host limit. - If you opt into shared OpenCode roots, keep logs separated by
externalRunnerMode,externalRootSessionId, and childexternalSessionId.
Retinue v0.1.0
Retinue v0.1.0
Retinue v0.1.0 is the first release that is ready for day-to-day use: after installing the Codex plugin, Codex can use OpenCode as a local child agent and complete the basic spawn, wait, list, and close workflow.
Chinese release notes are available at v0.1.0_RELEASE_NOTES.zh-CN.md.
What This Release Provides
- Plugin marketplace installation for Codex; users do not need to clone the repository or build from source.
- OpenCode is the default backend, using the OpenCode
planagent by default. - Retinue manages the local OpenCode server lifecycle by default.
- When
4096is occupied by an external service, Retinue tries fallback ports from4097through4127. - Product MCP tools:
retinue_spawn_agentretinue_wait_agentretinue_close_agentretinue_list_agents
- Per-MCP-session child-agent slots. When the slot limit is exceeded, Retinue closes the oldest still-running child agent to make room for the new task.
retinue_wait_agentreturns the child result when the task is terminal. While the task is still running, it returns a compact diagnostic summary, job paths, and bounded stdout/stderr tails so the caller can decide whether to wait, inspect logs, or close the task. OpenCode empty-output, stale incomplete assistant rounds, and read-only patch/write intent are reported asstalleddiagnostics instead of being treated as successful results, and stalled jobs no longer occupy the active MCP session slot. Default read-only OpenCode runs also disable nestedtaskdelegation and use non-interactive session permissions with a read-only shell inspection allowlist, so review jobs can inspect repositories without recursively spawning internal OpenCode subagents or waiting for headless approval prompts.- Package smoke checks now start the bundled MCP runtime from both the root build output and the plugin-local bootstrap.
Install
Add the Retinue plugin marketplace:
codex plugin marketplace add Disaster-Terminator/RetinueThen open Codex, run /plugins, select [Retinue Local], open the Retinue details page, choose Install plugin, and restart Codex.
After restart, ask Codex:
Use Retinue to spawn an OpenCode plan subagent. Ask it to reply exactly: RETINUE_OK. Wait for the result and close the child agent.
Requirements
- Node.js 20+
- Codex CLI with plugin support
- OpenCode 1.14+, preferably installed with the official script:
curl -fsSL https://opencode.ai/install | bashManaged OpenCode auto-serve binds to loopback by default. Set RETINUE_OPENCODE_ALLOW_NON_LOOPBACK=1 only for explicitly isolated environments that intentionally expose the OpenCode server host.
Boundaries
- OpenCode continues to own provider, model, login state, quota, and profile configuration.
- Retinue does not expose backend/profile/model/agent/OpenCode server choices as per-call tool arguments. It exposes only
access_modeso callers can keep child agents read-only by default or explicitly follow the active OpenCode profile for one spawn. - Claude Code support remains available for custom deployments, but OpenCode is the default v0.1.0 product path.