-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
Add Slate (@randomlabs/slate) as a new agentctl harness, enabling swarm-native coding with automatic model selection and REPL-based context decomposition.
Why
Slate is the first coding agent that natively orchestrates sub-agent swarms. Instead of a single model doing all work, it decomposes tasks via a Python REPL, spawns parallel threads with different models (Opus for reasoning, Haiku for speed, Codex for coding), and synchronizes results. This gives us inference-time scaling on top of our workflow-time scaling.
Integration paths (in priority order)
1. CLI adapter via --stream-json (fastest path)
Slate CLI supports --stream-json which is explicitly "compatible with Anthropic Claude Code SDK" streaming JSONL format. This means our existing Claude Code adapter parsing should work with minimal changes.
agentctl launch slate --worktree ~/personal/orgloop --branch feat/foo -p "implement X"
Slate config (slate.json) handles model selection internally:
{
"models": {
"main": { "default": "claude-sonnet-4-5" },
"subagent": { "default": "claude-haiku-4-5" },
"search": { "default": "glm-5" },
"reasoning": { "default": "claude-opus-4-5" }
}
}2. ACP via --server mode (cleanest long-term)
Slate has --server mode that starts an AgentSession RPC server (default port 7777). Our AcpAgentConfig:
{ command: "slate", args: ["--server"], name: "Slate" }Need to verify the RPC protocol matches ACP expectations.
3. Input/output format support
--output-format stream-json— streaming JSONL output--input-format stream-json— streaming JSONL input-q "prompt"— non-interactive question mode--workspace— workspace directory (maps to worktree)--resume— resume specific session--dangerously-set-permissions— bypass permission prompts (like Claude Code--permission-mode bypassPermissions)
Implementation plan
- Install
@randomlabs/slate(npm, ships platform binary) - Verify
--stream-jsonoutput format matches Claude Code SDK JSONL schema - Create
src/adapters/slate.ts(likely thin wrapper around claude-code adapter) - Add
slateto adapter registry - Test:
agentctl launch slate -p "simple task"with stream parsing - If stream-json matches: done. If not: add format translation layer.
- Stretch: test
--servermode against AcpClient
References
- npm:
@randomlabs/slate@1.0.15 - Docs: https://docs.randomlabs.ai/en/using-slate/configuration
- Technical report: https://randomlabs.ai/blog/slate
- Gap analysis: Obsidian
Personal/research/gap-analysis-slate-vs-orgloop-agentctl-openclaw.md