Set it up, then see the proof
Wayreeve Gateway runs in your environment and decides, for every AI request, which provider may see which data. Part 1 shows how you set it up in the console. Part 2 sends five requests and shows the record each one leaves. Every screenshot comes from a real Gateway console with synthetic data.
Part 1
Set it up
Four things decide what happens to every request: the providers you connect, the rules for each class of data, the guardrails that scan content, and the projects and keys your teams use. You set all four in the console, once, and change them whenever you need to.
Set it up · 1 of 4
Requests go only to providers you connect
What you do
Under Providers, connect your OpenAI, Anthropic or OpenAI-compatible account, or a model server in your own network. Say where it processes data and whether it keeps nothing, then choose which projects may use it.
Why it matters
Your provider bills you directly, at your rates. The key is encrypted inside your Gateway and never shown again. What you declare here is what every data rule is checked against.
Set it up · 2 of 4
Sensitive data goes only where your contracts allow
What you do
Under Data classes, pick a class such as PHI and tick the rules it needs: a BAA-covered route, zero data retention, a retention limit, allowed regions, private network only, no training use, and which kinds of deployment may serve it.
Why it matters
The rules are checked on every request, when it arrives and again before queued work runs. A request may tighten its class but never loosen it, so a mislabelled call can't slip through. Each change is saved as a new version.
Set it up · 3 of 4
Secrets and identifiers are caught before anything leaves
What you do
Under Guardrails, choose what each detector does: block the request, redact the match, or audit only, which records the match and lets the request through. Add patterns of your own, such as your member ID format, and tighten them for sensitive classes.
Why it matters
The scan runs before a request is stored or sent to any provider. Matches are recorded as codes, never as the matched text. Detectors for secrets such as cloud and API keys can never be set below redact.
Set it up · 4 of 4
Each team gets its own models, limits and keys
What you do
Create a project for the team. Set its requests per minute, requests in flight and monthly total, and choose the models it may call. Then issue API keys, each with its own models, rate, monthly spend cap and a fixed request allowance.
Why it matters
A runaway script hits its own team's limits, not everyone's. Each key shows what it has used against its allowance and its spend cap, and is refused before it goes past either.
Part 2
See it work
Five requests and what Wayreeve does with each. These screenshots come from the Wayreeve demo: two synthetic models, small limits, the default data classes and a guardrail for a made-up medical record number. You can send the same requests yourself.
See it work · 1 of 5
Every request leaves a decision record
What you get
An answer for every request: which data class, which policy version, which route and each rule's outcome. The record is content-addressed and holds no prompt text.
What you do
Send a chat completion to demo/finch with no data-class header.
What Wayreeve does
The class comes from the demo code: internal, version 1. Its one rule, prohibit training use, passes on the route. The request runs and the response carries x-wayreeve-decision-id.
See it work · 2 of 5
Identifiers never reach the model
What you get
The identifier is gone from the stored body, every retry and every provider call. The record names the detector and the policy, never the matched value.
What you do
Send "Patient MRN-104233 asked for a callback about her discharge plan." to demo/heron, still under internal.
What Wayreeve does
The guardrail scan runs at admission, before anything is stored or sent. The custom pattern mrn matches and the text becomes [REDACTED:mrn]. The request then runs.
phi come from requests the next step allowed.See it work · 3 of 5
Policy breaches are stopped and counted
What you get
No caller can loosen a rule: a request may be made stricter, never looser. Refusals are counted by class and rule, so reviewers see what policy stopped, separately from what failed.
What you do
Send the same MRN text with X-Wayreeve-Data-Class: phi. Then send a harmless request labelled public.
What Wayreeve does
For phi the guardrail tightens from redact to block: HTTP 400 guardrail_blocked, reason mrn, with its own decision id. The public label is looser than the code's default: HTTP 403 data_class_widening. Neither creates a job or calls a model.
On your own providers, a phi request routed to an endpoint without a BAA is refused with the failing rule and the published source of the term. The demo models run inside Wayreeve and meet every terms rule, so the demo can't produce that refusal. It returns 403 data_class_not_permitted, as Get started describes.
See it work · 4 of 5
Usage stays inside the limits you set
What you get
No runaway usage. Limits apply per project and per key before work is queued, with an error code your apps can act on. Keys can also carry a monthly spend cap.
What you do
Open Usage & audit. Keep sending until your demo code runs out.
What Wayreeve does
Each admitted request counts against the project's per-minute, in-flight and monthly limits and the code's own allowance. The 26th admitted request on a code gets HTTP 429 allowance_exhausted.
With your own priced provider routes, you see cost per request, per project and per provider connection. The demo models cost nothing, so every amount reads $0.00.
See it work · 5 of 5
Tampering with the audit trail is detectable
What you get
An audit trail your auditors can trust. Any change to past rows, even by someone with access to the database file, breaks the chain, and signed checkpoints anchor it outside the gateway.
What you do
As an owner, open the audit log. Then run the gateway's health check, doctor, on the host.
What Wayreeve does
Every audit event and decision record is appended to a hash chain in the same transaction. doctor recomputes the chain and names the first broken entry if there is one.
$ node server/cli.ts doctor # output abridged
wayreeve doctor
✓ Database schema version 23, integrity ok
✓ Audit chain 54 entries verified, head 6a8085ed7689
The evidence export (Team and Enterprise editions) carries the same chain verification and the latest signed checkpoint, covered by the export's sha256.
Send these requests yourself
Ask us for a demo code. It allows 25 requests and comes with a read-only console sign-in.