San Francisco
Integration

Keep your agent. Protect the action.

Wrap the tool that performs the write, or route a provider webhook through Salus. Your model, framework, agent loop, and backend stay yours.

Python · Tool executor
from salus import Salus

salus = Salus()  # reads SALUS_* environment variables

# do_refund is your existing tool implementation.
issue_refund = salus.protect(
    "issue_refund",
    do_refund,
    side_effect=True,
    risk="high",
)

# Dispatch "issue_refund" from your agent's tool loop.
Existing tool registrySalus protected
Where Salus connects

Add Salus where your tools execute.

Salus belongs at the moment an agent hands an action to code that can change the outside world.

01Your model

OpenAI, Anthropic, Gemini, or your hosted model.

02Your agent loop

Framework, custom dispatcher, voice agent, or browser executor.

03Salus

Checks the proposed action before execution.

04Your backend

The same provider, API, tool, or internal system.

Three connection patterns

Connect Salus to the tools you already use.

Choose the boundary your stack already exposes. The authorization model stays the same across each pattern.

01 · SDK

Protect a Python callable or tool registry.

Wrap the functions that create side effects, or protect the framework tool list before you construct the agent.

Protected executor salus.protect(...) Policy checked before call
Python integration
02 · Webhook

Route a provider action endpoint.

Place Salus between a voice or HTTP provider and the backend action endpoint. No SDK is required inside the conversational loop.

Provider route Vapi · Retell · HTTP Forward only after allow
Webhook integration
03 · Executor

Protect any tool executor.

Evaluate any proposed function, API call, webhook, browser action, or custom tool immediately before it executes.

Execution boundary Function call · API request · Webhook · Computer action Receipt attached to outcome
Executor integration
Compatibility

Salus fits into your existing stack.

Use a framework helper where one exists or protect the executor directly. Salus does not need to own the model call.

Framework-specific helpers keep setup short. The underlying runtime remains provider-agnostic, so a custom loop follows the same pattern.

See integration examples
Frameworks
LangChainLangGraphCrewAIAutoGenPydanticAILlamaIndexGoogle ADK
Voice and realtime
VapiRetellLiveKit AgentsPipecat
Protocols and executors
MCPHTTPComputer useCustom tool loops
Models
OpenAIAnthropicGemini
Deployment modes

Run in shadow or enforcement.

Run any protected action path in shadow to observe decisions, or enforcement to act on them before execution. Set the mode independently for each route.

Shadow See what Salus would decide.

The action continues while the decision and receipt are recorded.

SALUS_MODE=shadow
Enforcement Control the action before it runs.

Allow, revise, escalate, or block according to the active policy.

SALUS_MODE=enforce
Get started

Your agents do the work. Salus keeps them under control.

Bring the agent you already run. We will help put the first action path behind Salus.

founders@usesalus.ai