@drift_rail/browser
v2.0.0
Published
DriftRail Browser SDK - AI Safety & Observability for the browser
Maintainers
Readme
DriftRail Browser SDK
Lightweight browser SDK for AI Safety & Observability. Log LLM interactions and run inline guardrails directly from the browser.
Installation
CDN (Recommended)
<script src="https://unpkg.com/@drift_rail/browser@latest/dist/driftrail.min.js"></script>NPM
npm install @drift_rail/browserQuick Start
<script src="https://unpkg.com/@drift_rail/browser@latest/dist/driftrail.min.js"></script>
<script>
const client = new DriftRail.Client({
apiKey: 'dr_live_...',
appId: 'my-app'
});
// Log an LLM interaction
client.ingest({
model: 'gpt-4o',
provider: 'openai',
input: { prompt: 'What is the weather?' },
output: { text: 'I cannot access real-time weather data.' }
});
</script>ES Module Usage
import { Client } from '@drift_rail/browser';
const client = new Client({
apiKey: 'dr_live_...',
appId: 'my-app'
});Features
Event Batching
Events are automatically batched for efficiency. By default, events are sent:
- When 10 events are queued
- Every 5 seconds
- On page unload
const client = new Client({
apiKey: 'dr_live_...',
appId: 'my-app',
batchSize: 20, // Send when 20 events queued
flushInterval: 10000 // Or every 10 seconds
});Inline Guardrails
Check LLM outputs before displaying to users:
const result = await client.guard({
output: llmResponse,
input: userPrompt,
mode: 'strict' // or 'permissive'
});
if (result.allowed) {
displayToUser(result.output); // May be redacted
} else {
displayToUser("Sorry, I can't help with that.");
}Fire-and-Forget Logging
For non-critical logging where you don't need the response:
client.ingestAsync({
model: 'gpt-4o',
provider: 'openai',
input: { prompt: 'Hello' },
output: { text: 'Hi!' }
});Chat Completion Helper
Convenience method for OpenAI-style chat completions:
await client.logChat({
model: 'gpt-4o',
messages: [
{ role: 'user', content: 'Hello' }
],
response: 'Hi there!',
latencyMs: 150,
tokensIn: 5,
tokensOut: 3
});User & Session Tracking
client.setUserId('user-123');
client.setSessionId('session-abc');Configuration
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| apiKey | string | required | Your DriftRail API key |
| appId | string | required | Your application identifier |
| baseUrl | string | https://api.driftrail.com | API base URL |
| timeout | number | 30000 | Request timeout in ms |
| failOpen | boolean | true | Return success on errors |
| debug | boolean | false | Enable debug logging |
| batchSize | number | 10 | Events before auto-flush |
| flushInterval | number | 5000 | Auto-flush interval in ms |
API Key Format
- Production:
dr_live_... - Staging/Dev:
dr_test_...
Browser Support
- Chrome 80+
- Firefox 75+
- Safari 13.1+
- Edge 80+
Security
- API keys should be scoped to
ingestandguardonly - Never use admin keys in browser code
- Consider using a backend proxy for sensitive operations
License
MIT
