Synapse isn’t another AI. It’s the engine that drives them.
A model answers questions. It never decides which model to use, what data is allowed to leave your building, or what a call costs. Synapse is the layer that makes those decisions on every request — so your code describes a task, not a model.
Every AI call in PulseLABS — a debate round, a life-plan draft, a risk tree, or a request to the public API — flows through Synapse before it reaches a model. It is infrastructure that sits on top of the model, not a replacement for it. Bring your own provider; Synapse decides how to use it.
It’s a layer, not a model
A model gives you…
one brain, one price, one endpoint, whatever it was trained on
Synapse gives you…
the right brain per call, redaction, retrieval, tool execution, and a cost ledger — across any provider
What happens to one request
Five stages run on every call. You write none of them — you just describe the task.
01
Request
Your call arrives with a task type — simple, complex, extraction, sensitive, or auto — and optional knowledge/tools flags. No model name. That’s the point.
02
PII Shield
Emails, IBANs, phone numbers, cards — every value matching a PII pattern is swapped for a vault token before any bytes leave the machine. Detection force-routes the call to local Ollama.
03
Model Router
The cheapest model that can actually do the job wins: cheap tier for simple/extraction, full-quality for complex/code, always-local for sensitive. You never write this branch.
04
Knowledge + Tools
If enabled, Cortex injects your most relevant passages, and the model can call your registered endpoints — HMAC-signed, executed by PulseLABS, fed back for up to 3 rounds.
05
Restore + Log
Vault tokens are swapped back to real values in the response — the model never saw them. Provider, model, tokens, and savings vs the full model are logged, fire-and-forget.
One line of code, any provider
The same call runs against OpenAI, Anthropic, Groq, DeepSeek, or a fully local Ollama — switching providers is a workspace setting, not a code change.
OpenAIAnthropicGroqDeepSeekOllama (local)
Synapse via the SDK
import { PulseLabsSDK } from '@pulselabs/sdk'
const pulse = new PulseLabsSDK({ apiKey: process.env.PULSELABS_API_KEY! })
// You describe the task. You never name a model.
const result = await pulse.agents.chat('agent_xxx', {
message: 'Summarise this contract and flag unusual clauses.',
task: 'complex', // simple | complex | extraction | sensitive | auto
})
result.content // answer — any PII restored
result.routing // { provider: 'openai', model: 'gpt-4o-mini', reason }
result.savedCostUsd // saved vs the full-quality model, logged for every call
Why not just call the model yourself?
Without it, you hardcode gpt-4o everywhere and pay full price for calls a cheap model could handle.
Personal data flows straight to a third-party model with nothing scrubbing it first.
You’d write the function-calling loop, the HMAC signing, and the retrieval plumbing by hand — for every provider.
You’d have no idea what any single feature actually costs you.
Synapse decides how to call a model. Its sibling engine, Pulse Cortex, decides what the model knows. Together they’re the two engines PulseLABS runs on top of any AI.