Quickstart
This guide walks you from zero to a working policy plane in under 15 minutes. You'll configure the proxy, define your first policy, initialize a tenant context, and verify that redaction is working correctly.
- Meibel API key (received after access request)
- An OpenAI-compatible LLM endpoint (OpenAI, Azure OpenAI, Anthropic, local Ollama, etc.)
- curl or any HTTP client for testing
1. Proxy setup
The Meibel proxy is a drop-in intercept for any OpenAI-compatible client. Set MEIBEL_PROXY_URL as your base URL:
# Your Meibel API key from the dashboard
MEIBEL_API_KEY=meibel_live_xxxxxxxxxxxxxxxx
# Proxy base URL (use this instead of api.openai.com/v1)
MEIBEL_PROXY_URL=https://proxy.meibelai.org/v1/openai
2. First policy config
Create a policy file in YAML. The policy DSL defines entity detection rules, redaction behavior, and audit options. Start with the defaults:
version: "1"
policy_id: finance-default-v1
entities:
# Built-in entity groups — enable/disable as needed
- group: pii-standard # name, email, phone, ssn, dob
action: redact
mask_format: [TYPE_INDEX]
- group: financial # account numbers, CUSIPs, AUM values
action: redact
mask_format: [FIN_TYPE_INDEX]
audit:
enabled: true
store_hash: true
store_entity_types: true # entity labels stored, not values
store_raw_prompt: false # raw prompt never leaves your network
Apply the policy to your tenant context via API:
curl -X PUT https://proxy.meibelai.org/v1/tenants/finance-wealth/policy \
-H "Authorization: Bearer $MEIBEL_API_KEY" \
-H "Content-Type: application/yaml" \
--data-binary @policy.yaml
3. Initialize a tenant context
Tenant contexts isolate LLM calls by department, client, or business unit. Create your first tenant:
curl -X POST https://proxy.meibelai.org/v1/tenants \
-H "Authorization: Bearer $MEIBEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tenant_id": "finance-wealth",
"policy_id": "finance-default-v1",
"rate_limit": { "requests_per_minute": 500 }
}'
4. Verify redaction is working
Send a test prompt containing known PII and confirm the audit log shows redaction:
import openai
client = openai.OpenAI(
api_key="sk-...",
base_url="https://proxy.meibelai.org/v1/openai",
default_headers={"X-Meibel-Tenant": "finance-wealth"}
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
# SSN will be redacted to [SSN_001] before reaching OpenAI
"content": "Review account for John Doe, SSN 123-45-6789"
}]
)
# Model received: "Review account for [PERSON_NAME_001], SSN [SSN_001]"
print(response.choices[0].message.content)
5. Query the audit log
After sending calls, verify the audit log captured the redaction event:
curl "https://proxy.meibelai.org/v1/audit?tenant_id=finance-wealth&limit=5" \
-H "Authorization: Bearer $MEIBEL_API_KEY"
{
"records": [{
"request_id": "req_01HX9K2B4Y",
"tenant_id": "finance-wealth",
"model_version": "gpt-4o-2024-08-06",
"policy_id": "finance-default-v1",
"policy_verdict": "REDACTED",
"pii_findings": ["PERSON_NAME", "SSN"],
"redaction_count": 2,
"prompt_hash": "sha256:a3f9...",
"created_at": "2025-11-14T14:23:08Z"
}]
}
Calls through the proxy are now policy-controlled and audit-logged. Next: configure additional tenant contexts, tune entity patterns for your domain, or review the API reference.