Asi openclaw-goblins-adapter

ElizaOS/OpenClaw → Goblins OCapN adapter (study + bridge)

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.md
source content

OpenClaw → Goblins Adapter

Study: elizaOS/openclaw-adapter

The

openclaw-adapter
bridges ElizaOS plugins into OpenClaw via:

FileElizaOS → OpenClaw
action-to-tool.ts
Action → Tool (params: JSON Schema → TypeBox)
provider-to-hook.ts
Provider →
before_agent_start
hook
service-adapter.ts
Service → Service (eager start)
evaluator-to-hook.ts
Evaluator → lifecycle hooks
runtime-bridge.ts
IAgentRuntime → RuntimeBridge shim
in-memory-store.ts
IDatabaseAdapter → LRU InMemoryStore (10K cap)
schema-converter.ts
JSON Schema → TypeBox + known wallet schemas

Critical pattern: RuntimeBridge is a shim, not a full runtime embed.

This Adapter: ElizaOS → Goblins OCapN

ElizaOSGoblinsWhy
Action^action-actorCaps = authority (not ACL)
Provider^provider-capRead-only attenuated ref (POLA)
Service^service-actor in vatIsolation via event loop
Evaluator^guard-actorProxy composition
IAgentRuntime^vat-bridgeTransactional actor state
IDatabaseAdapterActor state (bcom)Automatic rollback
JSON SchemaSyrup record descriptorWire-native
OAuth sessionCapTP session (Ed25519)Structural authority
/eliza routeBootstrap object (pos 0)Single entry point
Tool schemaSyrup 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

FileLOCRole
goblins-adapter.scm
~350Core adapter (9 actor types)
MAPPING.md
~200Detailed concept mapping
SKILL.md
thisSkill 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 ✓