Salambo validates source projects locally, but the managed model loop and sandbox extension host run in the hosted environment. Local validation and hosted smoke testing prove different things.

1. Check prerequisites

salambo doctor
doctor checks salambo.yaml, runtime selection, Git, Docker, the configured local compose file, authentication, and declared secret environment variables.

2. Compile the deployment contract

salambo manifest --path . --json
This command imports declared extension modules with the discovery API and validates:
  • model and active-tool settings;
  • system instructions, skills, and prompts;
  • extension paths and loading modes;
  • tool names, descriptions, and parameter schemas;
  • supported hook subscriptions;
  • duplicate identifiers and unsafe paths.

3. Read diagnostics as contract failures

DiagnosticTypical cause
Extension must export a default functionMissing export default function extension(pi)
Invalid tool nameName exceeds 64 characters or uses unsupported characters
Missing descriptionTool description is empty
Unsupported hook warningEvent is not in the hosted contract
Unsafe entrypointAbsolute path or parent-directory traversal

What local validation does not prove

manifest discovers registrations. It does not execute:
  • a real model request;
  • a custom tool body;
  • lifecycle hook return behavior;
  • sandbox networking;
  • workspace checkpointing;
  • integration context projection.
Those require a hosted deployment and smoke test.

Optional source checks

Run your own JavaScript tests for pure extension logic. Keep host-specific behavior behind small functions so it can be tested without recreating Salambo’s runtime. When both commands pass, deploy and smoke-test the agent.