SAILLENT sits inline between your AI applications and the models/tools they call — intercepting, evaluating, and enforcing zero-trust policy on every action, with a cryptographically traceable audit trail.
The enforcement plane runs inside your infrastructure; the control plane runs on Cloudflare. Your prompts and tool payloads never leave your network unless a policy allows it.
:3000, forwards allowed traffic to your upstream on :4000/v1/chat/completions and MCP /mcp/opt/saillent/saillent.dblocalhost:3000 (the SAILLENT proxy).:4000 · Deny blocked + audited · Redact PII sanitized, then forwarded.Log into the console → Installations → Create installation token. Tokens are single-use and expire after 24h.
curl -sSL https://www.saillent.com/get/install.sh | sudo sh -s -- YOUR_TOKENcurl -sSL https://www.saillent.com/get/install-macos.sh | sudo bash -s -- YOUR_TOKENpowershell -ExecutionPolicy Bypass -File install.ps1 YOUR_TOKENThe installer validates your token via /v1/enroll, fetches the expected SHA-256 from /v1/download-checksum, downloads the Rust agent, verifies the checksum (aborts on mismatch), installs it as a background service, and starts enforcing.
# OpenAI SDK
client = OpenAI(base_url="http://localhost:3000/v1")
# MCP (Claude / Cursor) — server url:
# http://localhost:3000/mcpsystemctl status saillent
sqlite3 /opt/saillent/saillent.db "SELECT decision, COUNT(*) FROM audits GROUP BY decision;"Passed all policy checks; forwarded upstream.
Blocked by policy; 403 returned; audited.
No matching policy / unknown agent; fail-closed.
High-risk action held for human approval.
Policies are YAML in your Git repo, pulled every 60s. Example:
id: block-pii
version: "1.0"
agent_role: "*"
tool_id: "*"
priority: 100
is_active: true
conditions:
- PayloadRegexDeny: "(?i)ignore all previous instructions"
- MaxRiskScore: 80
posture: FailClosedMaxRiskScore(u8) — risk ceilingAllowedHours(start, end) — time windows (UTC)DataClassificationNot(str) — data-class gateRequireMFA(bool) — MFA gateRequiresApproval(bool) — human-in-the-loopPayloadRegexDeny(str) — deny on regex (path traversal, SSN, prompt injection)Every decision is stored locally with the Git commit that produced it, giving full provenance for SOC 2 / HIPAA / GDPR / SR 11-7 evidence.
sqlite3 /opt/saillent/saillent.db \
"SELECT timestamp, agent_id, tool_id, decision, reason FROM audits ORDER BY id DESC LIMIT 20;"/v1/enrollExchange a single-use installation token for an installation ID.
/v1/downloadSigned Rust agent binary (linux-amd64).
/v1/download-checksumSHA-256 + size for supply-chain verification.
/v1/heartbeatAgent telemetry every 10s; returns license status (active / revoked).
/api/loginRate-limited auth: 3 attempts per email per 5 min, 10 per IP per min.
/api/planCurrent plan + license status for an organization.
/api/installationsList nodes + recent enforcement logs for the authenticated org.
/api/installations/createMint a single-use 24h token; org derived from authenticated session (IDOR-safe).
/api/marketing-checkoutStripe checkout session; rate limited 3/email/hour.
/api/stripe-webhookHMAC signature verification + 5-minute replay window.
/admin/customersFounder admin (X-Admin-Secret, timing-safe, 5 req/min).
Run sudo journalctl -u saillent -n 50. Check /opt/saillent/config.yaml and /opt/saillent/.env permissions (600).
The installer aborts and deletes the binary. This is supply-chain protection working — re-run the installer; if it persists, contact support immediately.
Verify outbound HTTPS to license.saillent.com is allowed. Heartbeats run every 10s; dashboard updates within ~15s.
The heartbeat returns revoked and the agent shuts down gracefully. Check billing status in the console.
The agent keeps the last-good policy set on Git failures. Check repo access and branch main; next successful pull applies changes.
Edit server.port in /opt/saillent/config.yaml, restart with sudo systemctl restart saillent, and update your app's base_url.