Salambo hosts customer extensions inside the sandbox and exposes a deliberate subset of Pi through an authenticated boundary.

Current boundaries

AreaCurrent hosted behavior
Module formatRunnable JavaScript entrypoints; documentation uses .mjs
Extension SDKNo published TypeScript SDK or import package yet
FilesystemExtension code runs in the sandbox and can use the agent workspace; protected runtime paths remain platform-owned
Worker accessNo access to trusted worker process memory
ContextJSON-safe event projections plus ctx.external
Tool progress/cancellation argumentsReserved; may currently be undefined in the extension tool function
Mid-turn steeringNot exposed through the hosted extension contract
Dynamic model/toolsSupported from before_agent_start and restored for durable follow-ups

Discovery is not execution

salambo manifest imports the extension with a discovery-only pi surface. It discovers registerTool() and on() calls. Runtime-only operations such as setModel() and setActiveTools() belong inside handlers.

Multiple mutating handlers

The host executes handlers sequentially, but different hook families compose differently. Prefer a single owner for each mutating event and test ordering explicitly before relying on multiple extensions changing the same event.

Compatibility rule

Build only against behavior documented in this reference. Pi CLI commands, interactive UI behavior, or upstream APIs are not automatically part of Salambo’s hosted contract.