install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/goblins-adapter" ~/.claude/skills/plurigrid-asi-openclaw-goblins-adapter && rm -rf "$T"
manifest:
skills/goblins-adapter/SKILL.mdsource content
OpenClaw → Goblins Adapter
Study: elizaOS/openclaw-adapter
The
openclaw-adapter bridges ElizaOS plugins into OpenClaw via:
| File | ElizaOS → OpenClaw |
|---|---|
| Action → Tool (params: JSON Schema → TypeBox) |
| Provider → hook |
| Service → Service (eager start) |
| Evaluator → lifecycle hooks |
| IAgentRuntime → RuntimeBridge shim |
| IDatabaseAdapter → LRU InMemoryStore (10K cap) |
| JSON Schema → TypeBox + known wallet schemas |
Critical pattern: RuntimeBridge is a shim, not a full runtime embed.
This Adapter: ElizaOS → Goblins OCapN
| ElizaOS | Goblins | Why |
|---|---|---|
| Action | ^action-actor | Caps = authority (not ACL) |
| Provider | ^provider-cap | Read-only attenuated ref (POLA) |
| Service | ^service-actor in vat | Isolation via event loop |
| Evaluator | ^guard-actor | Proxy composition |
| IAgentRuntime | ^vat-bridge | Transactional actor state |
| IDatabaseAdapter | Actor state (bcom) | Automatic rollback |
| JSON Schema | Syrup record descriptor | Wire-native |
| OAuth session | CapTP session (Ed25519) | Structural authority |
| /eliza route | Bootstrap object (pos 0) | Single entry point |
| Tool schema | Syrup record | ^schema-bridge |
Security Model Upgrade
MCP/ElizaOS: ambient authority token → role → permissions → action (confused deputy attacks possible) Goblins/OCapN: structural authority ref = authority (POLA) (confused deputy impossible by construction)
Files
| File | LOC | Role |
|---|---|---|
| ~350 | Core adapter (9 actor types) |
| ~200 | Detailed concept mapping |
| this | Skill definition |
GF(3)
Actions = +1 (generative — create capabilities) Providers = -1 (constraining — read-only attenuation) Services = 0 (ergodic — background transport)
Adapter enforcer: registration sum ≡ 0 (mod 3).
Usage
(define-values (vat bridge schema session gf3) (spawn-goblins-adapter "my-agent" settings)) ;; Register ElizaOS-shaped plugin ($ bridge register-plugin plugin-spec) ;; Invoke tool (CapTP bootstrap) ($ bridge invoke "tool-name" params) ;; Bridge MCP call → CapTP deliver ($ session mcp-call->deliver sid "tool" params)
Triads
captp (0) ⊗ openclaw-goblins-adapter (0) ⊗ gay-mcp (+1) → needs -1 shadow-goblin (-1) ⊗ this (0) ⊗ agent-o-rama (+1) = 0 ✓ keychain-secure (-1) ⊗ this (0) ⊗ pulse-mcp-stream (+1) = 0 ✓