Registry live · 14 models registered

The canonical IR for
AI model interoperability

4 models need 6 custom connectors. 10 models need 45.
SYNAPSE reduces N×(N-1)/2 to 2N. Write two functions — connect every model.

Get started Live registry Read the spec

Every AI integration is a
custom one-off connector

Each model has its own schema. When you chain models together, you write bespoke glue code for every pair. N models means N×(N-1)/2 connectors — and each one breaks the moment either model updates its API.

Without SYNAPSE

10 models = 45 custom connectors, each fragile and one-off.

# Connecting GPT-4o → BART → FinBERT: gpt4o_out = openai_client.chat(messages=ir) bart_in = {"inputs": gpt4o_out["choices"][0]["message"]["content"]} bart_out = hf_client.post("/bart", json=bart_in) finbert_in = {"text": bart_out[0]["summary_text"]} # Breaks when either API changes schema

With SYNAPSE

Write ingress + egress once. Every model speaks canonical IR.

# Same pipeline, any combination of models: ir = CanonicalIR(payload=..., task_type="summarize") ir = gpt4o_adapter.egress(gpt4o_adapter.ingress(ir)) ir = bart_adapter.egress(bart_adapter.ingress(ir)) ir = finbert_adapter.egress(finbert_adapter.ingress(ir)) # Schema changes are isolated to one adapter
14
registered models
O(N)
adapter complexity
30s
heartbeat polling
MIT
open source
How it works

Four steps from model to ecosystem

1

Install the SDK

pip install synapse-adapter-sdk — one package, no dependencies beyond Python 3.11+.

2

Write two functions

ingress() converts CanonicalIR into your model's native format. egress() converts your model's output back to CanonicalIR.

3

Validate

synapse-validate --adapter my_module.MyAdapter --check-registry checks your adapter against 20 standard fixtures and confirms your MODEL_ID is available.

4

Register

POST your manifest to the live registry. The routing engine discovers your model and starts sending traffic immediately.

my_adapter.py
from synapse_sdk import AdapterBase, CanonicalIR class MyModelAdapter(AdapterBase): MODEL_ID = "my-org/my-model-v1" ADAPTER_VERSION = "1.0.0" def ingress(self, ir: CanonicalIR) -> dict: # Convert canonical IR → your model's native input format return {"input": ir.payload.content} def egress(self, output: dict, ir: CanonicalIR, latency_ms: int) -> CanonicalIR: # Convert your model's output → canonical IR with provenance updated = ir.copy() updated.provenance.append(self.build_provenance( confidence=output["score"], latency_ms=latency_ms, )) return updated

Models in the live registry

Routed by capability — task type, domain, compliance tags, and heartbeat health.

Model ID Task types Domains
Loading…