brainstormrouter
v0.1.1
Published
BrainstormRouter TypeScript SDK — AI gateway with memory, guardrails, and governance
Maintainers
Readme
BrainstormRouter TypeScript SDK
Agent orchestration SDK with multi-turn session loops, per-turn model selection, governed tool execution, and OpenAI-compatible proxy across 31 curated models from 8 providers (Anthropic, OpenAI, Google, xAI, Groq, Perplexity, DeepSeek, Moonshot).
Install
npm install brainstormrouterAgent Runs (Session Loop)
Run multi-turn agent sessions where Thompson sampling picks the best model per turn, tools execute through a governed MCP pipeline, and budgets enforce in real-time:
import BrainstormRouter from "brainstormrouter";
const client = new BrainstormRouter({ apiKey: "br_live_..." });
// Bootstrap an agent with identity and budget
await client.agentProfiles.bootstrap("research-01", {
display_name: "Research Agent",
budget_daily_usd: 10.0,
department: "Engineering",
});
// Run a multi-turn agent loop — streams SSE events
const result = await client.agentRuns.run("research-01", {
message: "Research the latest AI safety papers and summarize findings",
max_turns: 10,
budget_cap_usd: 2.0,
});Session Management
// Create a session without running
const session = await client.agentRuns.createSession("research-01");
// Check session status
const status = await client.agentRuns.getSession("research-01", session.id);
// Send a message to a running session (mid-run steering)
await client.agentRuns.sendEvent("research-01", session.id, {
type: "user.message",
text: "Also check for papers on alignment",
});
// Interrupt a running session
await client.agentRuns.sendEvent("research-01", session.id, {
type: "user.interrupt",
});
// View run history
const { runs } = await client.agentRuns.listRuns("research-01", { limit: 10 });Proxy Mode (OpenAI-Compatible)
Also works as a drop-in replacement for the OpenAI SDK — compatible with LangChain, Vercel AI SDK, CrewAI, and any OpenAI-compatible framework:
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-4",
messages: [{ role: "user", content: "Hello" }],
});
console.log(response.choices[0].message.content);Use "auto" as the model to let Thompson sampling pick the best model:
const response = await client.chat.completions.create({
model: "auto",
messages: [{ role: "user", content: "Explain quantum computing" }],
});Streaming
const stream = await client.chat.completions.create({
model: "auto",
messages: [{ role: "user", content: "Write a poem" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}Memory (4-Block RMM)
// Append a memory entry
await client.memory.append("User prefers concise answers", {
block: "semantic",
});
// List memory entries
const { entries } = await client.memory.entries();Guardrails
// Test content against guardrail pipeline
const result = await client.guardrails.test({
content: "Check this message for PII",
direction: "inbound",
});Provider Keys (BYOK)
// Register your own provider key
await client.providers.register("anthropic", {
apiKey: "sk-ant-...",
});Configuration
const client = new BrainstormRouter({
apiKey: "br_live_...", // or set BRAINSTORMROUTER_API_KEY env var
baseURL: "https://api.brainstormrouter.com", // default
maxEstimatedCost: 0.1, // Guardian: cap cost per request
guardianOff: false, // disable Guardian Intelligence
});Scope
This SDK wraps the public /v1/* API (API-key authenticated). The
dashboard-only /auth/* bridge routes — onboarding wizard state,
tenant settings, insights rollups, forensic snapshot listings,
admin-only seeders — are intentionally not surfaced here: they're
consumed by the Vite dashboard directly and aren't part of the
external API contract.
Resources
Specifications
Open, citable, CC BY 4.0:
- Trust Envelope v1 — EdDSA-signed agent identity JWT schema
- MCP-OAuth Bridge v1 — Trust Envelope ↔ OAuth 2.1 protected resource metadata mapping
License
MIT
