home / skills / plurigrid / asi / goblins
This skill explains and applies a distributed object capability approach to enable secure peer-to-peer interactions using CapTP.
npx playbooks add skill plurigrid/asi --skill goblinsReview the files below or copy the command above to add this skill to your agents.
---
name: goblins
description: Distributed object capability system (6.5K lines info).
metadata:
trit: 0
---
# goblins
Distributed object capability system (6.5K lines info).
## Model
```
peer → vat → actormap → {refr: behavior}
```
## Operators
```scheme
($ obj method args...) ; Sync (near only)
(<- obj method args...) ; Async (near/far)
```
## Vat
```scheme
(define vat (spawn-vat))
(define greeter
(vat-spawn vat
(lambda (bcom)
(lambda (name)
(format #f "Hello, ~a!" name)))))
($ greeter "World") ; => "Hello, World!"
```
## OCapN
Object Capability Network for secure p2p via CapTP.
This skill describes goblins, a distributed object-capability system built around vats, actor maps, and capability references. It explains the core model, communication operators, and the use of CapTP for secure peer-to-peer capability transfer. The content focuses on practical patterns for building secure, distributed applications with object capabilities.
goblins models computation as peer → vat → actormap → {refr: behavior}, where a vat isolates execution and actormap holds capability references mapped to behaviors. Two primary operators are provided: ($ obj method args...) for synchronous, local-only calls, and (<- obj method args...) for asynchronous calls that may cross vat or peer boundaries. CapTP (Object Capability Network) handles secure capability exchange and peer-to-peer message delivery.
What is the difference between ($ ...) and (<- ...)?
($ ...) performs a synchronous call intended for local (same-vat) interactions. (<- ...) is asynchronous and used for calls that may cross vat or peer boundaries; it supports remote delivery and callbacks.
What is a vat in goblins?
A vat is an isolated execution context that hosts actors and an actormap. It enforces capability isolation so behaviors only run with the references explicitly provided.