Salambo
Browse documentation
Extension referenceHosted-runtime limitations

Hosted-runtime limitations

Know which Pi extension capabilities are supported, bounded, or not exposed by Salambo.

View Markdown

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

Current boundaries

AreaCurrent hosted behavior
Module formatTypeScript, ESM JavaScript, files, directories, globs, and supported Pi package resources
Pi type packageUse @earendil-works/pi-coding-agent@0.83 as a development or peer dependency
BuildDepot transpiles TypeScript and preserves source maps; run your own semantic typecheck in CI
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
ContextA read-only, JSON-safe session, model, tool, usage, system-prompt, and external-event projection
Tool executionProgress and cancellation follow the Pi 0.83 tool contract
Commandspi.exec() uses the same sandbox filesystem, cancellation, and command policy as built-in tools
Models and toolsServer-safe selection is supported and restored for durable follow-ups
ProvidersDeclarative provider registration is supported; executable transports and OAuth factories are not
Interactive Pi clientCommands, shortcuts, flags, renderers, terminal UI, editor methods, and session-tree navigation are not hosted product APIs

Discovery is not execution

Depot builds an immutable extension artifact without executing its factory. The factory executes once in the sandbox sidecar for each hosted session. 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

Use the generated Hosted Pi compatibility profile as the exact contract. Pi CLI commands and interactive terminal behavior remain local-only unless the profile says otherwise.