sael
Text review gateway between clients and AI services that classifies each user input with Jev and blocks or logs per configured scenarios.
Overview
Sael is a text safety review gateway deployed between clients and existing AI services, with a visual operations console. Clients point at Sael's ingress address with their existing API key; the gateway reviews each turn's user input against the scenarios you configure, blocks or records it, and forwards allowed requests to the target service. It supports OpenAI and Anthropic request formats and preserves bodies, auth and streaming. Classification is provided by Jev through a resident Sael CLI. The README is in Chinese with an English version.
Scenarios combine endpoints, model scope, any/all conditions on raw score thresholds, priority order and actions. You can trial rules on real text and compare drafts with live policy before saving. Dashboards show input volume, RPM, hit and block trends, latency and cache efficiency, with drill-down by scenario, key and source IP. Only hits, classifier failures and gateway warnings keep per-request records. It deploys with Docker Compose alongside PostgreSQL and Redis, and a standalone Go SDK calls the Jev API directly.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this user input match a configured risk scenario (e.g. unsafe content)?(inferred) | — |
| Score | Raw risk score per review condition, compared against thresholds | — |
How it works
- Client sends a request to Sael's ingress
- Jev classifies the user input for each scenario condition
- Scenario rules compare scores to thresholds and block or record
- Forward allowed requests upstream; log hits for review
Strengths
- Drop-in for OpenAI and Anthropic formats
- Rule trial and draft comparison before going live
- Minimal storage of normal requests
Caveats
- Requires a Jev endpoint and key
- Self-hosting PostgreSQL and Redis
- Docs primarily Chinese
Getting started
Download compose.yaml and .env.example, fill .env, then docker compose up -d --wait; configure the Jev classifier in Settings.At a glance
- Type
- Library
- Status
- beta
- Language
- Go
- Runtime
- Docker gateway + console, CLI, Go SDK
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Go client for the TypeSafe System One API (Jev) — the first piece of sael, a…
wh000wh000/awesome-jev-liveGo client for the TypeSafe System One API (Jev) — the first piece of sael, a content-safety classifier for an AI request relay.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide in Sael?
It classifies each user input so scenario rules can block, record or allow the request.
Do clients need changes?
Only the API base URL; they keep their existing key.
Is the Go SDK tied to the gateway?
No, it is a standalone Jev API client.
Related projects
Gateway admission control that asks Jev what each incoming request is trying to do, filtering prompt injection and abuse.
AppbetaLuaGo reverse proxy between nginx and an LLM backend that extracts each request's user input, asks Jev if it is harmful, and blocks or passes.
ProxybetaGoOne-file Mastra input processor that asks Jev whether a message must be blocked, failing open behind a deadline and circuit breaker.
ProjectproductionTypeScriptLarge catalog of Claude Code agents, commands, hooks and MCPs, listed with community Jev mods for guardrails and subagent models.
CLIproductionJavaScriptPython/TypeScript/Go chatbot safety library checking user input and bot replies with Jev and returning one actionable verdict per message.
LibraryproductionPythonMCP proxy and hooks that screen agent tool calls before they run and their results before the agent reads them, using Jev judgments.
MCP serverbetaTypeScript