Website · Documentation · Quickstart · API Reference · Changelog · Discord · Report a Bug
Build production LLM apps with 2 dependencies. Async-native RAG, Agents, and Graph workflows — no magic, no SaaS, no bloat.
"LangChain for people who hate LangChain."
SynapseKit is the minimal, async-first Python framework for LLM applications. 33 providers · 48+ tools · 64 loaders · 22 vector stores. Every abstraction is plain Python you can read, debug, and extend. No hidden chains. No global state. No lock-in.
Every API is async/await first.Sync wrappers for scripts and notebooks. No event loop surprises. |
Token-level streaming is the default, not an afterthought. Works across all providers. |
2 hard dependencies: numpy + rank-bm25.Everything else is optional. Install only what you use. |
|
33 LLM providers and 22 vector stores behind the same API. Swap without rewriting. |
RAG pipelines, agents, and graph nodes are interchangeable. Wrap anything as anything. |
No hidden chains. Every step is plain Python you can read and override. |
from synapsekit import agent, tool
@tool
def get_weather(city: str) -> str:
"""Get current weather for a city."""
return f"Sunny, 22°C in {city}"
my_agent = agent(
model="gpt-4o-mini",
api_key="sk-...",
tools=[get_weather],
)
print(my_agent.run("What's the weather in Tokyo?"))| SynapseKit | LangChain | LlamaIndex | |
|---|---|---|---|
| Hard dependencies | 2 | 50+ | 20+ |
| Install size | ~5 MB | ~200 MB+ | ~100 MB+ |
| Async-native | ✅ Default | ||
| Streaming | ✅ Default | ||
| Cost tracking | ✅ Built-in | ❌ LangSmith (SaaS) | ❌ No |
| Evaluation / EvalCI | ✅ CLI + GitHub Action | ❌ LangSmith (SaaS) | |
| Graph workflows | ✅ Built-in | ❌ No | |
| Agent federation | ✅ Built-in | ❌ No | ❌ No |
| Reasoning LLMs | ✅ Unified adapter | ||
| Structured output | ✅ Provider-agnostic | ||
| Agent memory backends | ✅ 4 built-in | ||
| Observability | ✅ Prometheus + Grafana | ❌ No | ❌ No |
| Type safety | ✅ Strict dataclasses | ||
| LLM providers | 33 | 38+ | 20+ |
| Stack traces | Your code | Framework internals | Framework internals |
| License | Apache 2.0 | MIT | MIT |
LangChain has more raw integrations and more tutorials. That's not what SynapseKit is optimizing for. SynapseKit is optimizing for the engineer who needs to ship, debug, and maintain an LLM feature in production — where readable code, predictable async behavior, and no surprise SaaS bills actually matter.
SynapseKit is for Python developers who want to ship LLM features without fighting their framework.
- Burned LangChain users — hit a wall with debugging, dependency hell, or version churn and want full control back
- Async backend engineers — building FastAPI services where LangChain's sync-first model feels bolted on
- Cost-conscious teams — startups and teams who don't want a LangSmith subscription for basic observability
- ML engineers — building RAG or agent pipelines who need full control over retrieval, prompting, and tool use
|
🗂 RAG Pipelines |
🤖 Agents |
|
🔀 Graph Workflows |
🧠 LLM Providers |
|
🗄 Vector Stores |
🔧 Utilities |
|
🧠 Reasoning LLMs (new in v1.7.0) |
⚖️ Cost-Quality Routing (new in v1.7.0) |
|
🎯 Prompt Optimization (new in v1.7.0) |
🌐 Federated Retrieval (new in v1.7.0) |
|
🧠 Smart Context Manager (new) |
✅ Structured Output (new) |
|
🕸 Agent Federation (new) |
🔁 Continuous Fine-Tuning Pipeline (new) |
|
⚡ Performance suite (new in v1.7.0) |
|
|
🧪 EvalCI — LLM Quality Gates |
|
|
📊 Agent Benchmarking 🧪 EvalHub Community Suites |
|
import asyncio
from synapsekit import ReasoningAgent, ReasoningAgentConfig
from synapsekit.agents.tools import CalculatorTool
from synapsekit.llm import LLMConfig, OpenAILLM, ReasoningLLM
fast = OpenAILLM(
LLMConfig(model="gpt-4o-mini", api_key="sk-...", provider="openai")
)
reasoning = ReasoningLLM(model="o3", api_key="sk-...")
agent = ReasoningAgent(
ReasoningAgentConfig(
fast_llm=fast,
reasoning_llm=reasoning,
tools=[CalculatorTool()],
agent_type="function_calling",
)
)
async def main():
answer = await agent.run("Solve: find the eigenvalues of [[2,1],[1,2]]")
print(answer)
asyncio.run(main())synapsekit bench --list
synapsekit bench --suite community/customer-support --model gpt-4o-mini
synapsekit bench --publish my_evals/ --name myorg/rag-financeDocs: docs/evalhub.md
| 🧠 LLM Providers | 🗄 Vector Stores | 📂 Data Loaders | 🔧 Agent Tools |
|---|---|---|---|
| 33 | 22 | 64 | 48+ |
Every integration is pip install synapsekit[name] — nothing else. Swap providers, vector stores, or loaders without touching your application code.
Icons use Google Favicons for reliability across light and dark themes.
Every provider implements the same
BaseLLMinterface. Auto-detected from model name —gpt-4o→ OpenAI,claude-*→ Anthropic,gemini-*→ Google. Swap without rewriting.
All implement
VectorStorewithadd(),search(),search_mmr(),save(), andload(). Built-inInMemoryVectorStoreneeds zero extra deps. Everything else ispip install synapsekit[name].
ChromaDB |
FAISS |
Qdrant |
Pinecone |
Weaviate |
Milvus |
LanceDB |
PGVector |
SQLiteVec |
MongoDB Atlas |
Redis |
Elasticsearch |
OpenSearch |
Supabase |
Cassandra |
DuckDB |
ClickHouse |
Marqo |
Typesense |
Vespa |
Zilliz |
All return
list[Document]with.textand.metadata. Every loader has a sync.load()and async.aload(). Load from disk, cloud, databases, or APIs — same interface everywhere.
File Formats
Word (DOCX) |
Excel (XLSX) |
PowerPoint |
HTML / XML |
Markdown |
LaTeX |
YAML / JSON |
|
Parquet |
Audio (Whisper) |
Video |
RSS / Sitemap |
Git Repo |
Cloud Storage
AWS S3 |
Google Drive |
Azure Blob |
OneDrive |
Dropbox |
Google Cloud |
Databases
PostgreSQL |
MySQL |
MongoDB |
DynamoDB |
Elasticsearch |
Redis |
BigQuery |
Snowflake |
SQLite |
Supabase |
APIs & Productivity
GitHub |
Jira |
Confluence |
Notion |
Slack |
Discord |
HubSpot |
Salesforce |
Airtable |
YouTube |
Wikipedia |
Obsidian |
Google Sheets |
Firebase |
Twilio |
|
arXiv |
PubMed |
Email (IMAP) |
All implement
BaseToolwith a single asyncrun(). Pass any list of tools toReActAgentorFunctionCallingAgent. Write your own in 5 lines.
SQLite |
Redis |
PostgreSQL |
DynamoDB |
Memcached |
OpenTelemetry |
Prometheus |
Grafana |
PrometheusMetrics records synapsekit_cost_usd_total, synapsekit_tokens_total, and synapsekit_latency_seconds per model/provider. Hooks into the existing observe span pipeline — no code changes needed. Helm chart for a Prometheus + Grafana stack ships in assets/helm/synapsekit-observability/. pip install synapsekit[observe].
SynapseKit provides advanced retrieval modules, including vector search and multi-hop Knowledge Graph (KG) retrieval.
When to use which?
- Vector Search (Semantic): Best for broad conceptual queries, finding similar passages, or answering questions whose answers are contained within a single chunk of text.
- Knowledge Graph (KG): Best for specific, multi-hop reasoning questions where the relationship spans across multiple documents (e.g., finding out who owns the parent company of a subsidiary).
- Hybrid (Vector + KG): Combining both strategies guarantees that you capture deep semantic context while also exploring explicitly extracted entity relationships. Initialize the
RAGfacade withgraph_store=NetworkXStore()orNeo4jStore(...)to enable this out-of-the-box.
from synapsekit import RAG, RAGEvaluator, SlackWebhookAlertSink
from synapsekit.cli.ui_server import create_app
rag = RAG(
model="gpt-4o-mini",
api_key="sk-...",
evaluator=RAGEvaluator(
judge_llm=judge_llm, # a cheaper judge model
sample_rate=0.1,
alert_sinks=[SlackWebhookAlertSink(webhook_url=SLACK_WEBHOOK_URL)],
),
)
app = create_app(tracer=rag.tracer, rag_evaluator=rag.evaluator)
answer = await rag.ask("What changed in the release notes?")
await rag.wait_for_evaluations()
metrics = rag.tracer.summary()
print(metrics["avg_rag_benefit_to_cost"])
print(metrics["total_rag_alerts"])Don't see your stack?
Every integration is built the same way — most take under an hour.
Browse good first issue → · Contributing guide → · Discord →
We credit every contributor in the README and send a personal thank-you on Discord.
pip
pip install synapsekit[openai] # OpenAI
pip install synapsekit[anthropic] # Anthropic + prompt caching
pip install synapsekit[ollama] # Ollama (local)
pip install synapsekit[performance] # orjson + uvloop + xxhash (faster)
pip install synapsekit[observe] # OpenTelemetry + Prometheus metrics
pip install synapsekit[training] # Continuous fine-tuning pipeline
pip install synapsekit[bench] # pytest-benchmark + ASV harness
pip install synapsekit[redis] # Redis agent registry + memory backends
pip install synapsekit[all] # Everythinguv
uv add synapsekit[openai]
uv add synapsekit[all]Poetry
poetry add synapsekit[openai]
poetry add "synapsekit[all]"Full installation options → docs
Observability guide → docs/observability.md
Everything you need to get started and go deep is in the docs.
| 🚀 Quickstart | Up and running in 5 minutes |
| 🗂 RAG | Pipelines, loaders, retrieval, vector stores |
| 🤖 Agents | ReAct, function calling, tools, executor |
| 🔀 Graph Workflows | DAG pipelines, conditional routing, parallel execution |
| 🧠 LLM Providers | All 33 providers + ReasoningLLM with examples |
| 🧪 EvalCI | LLM quality gates on every PR — GitHub Action |
| 📖 API Reference | Full class and method reference |
git clone https://github.com/SynapseKit/SynapseKit
cd SynapseKit
uv sync --group dev
uv run pytest tests/ -qContributions are welcome — bug reports, documentation fixes, new providers, new features.
Read CONTRIBUTING.md to get started. Look for issues tagged good first issue if you're new.
- 💬 Discord — chat, help, show and tell
- 💬 Discussions — ask questions, share ideas
- 🧭 Discord roles draft — proposed roles and permissions for issue #389
- 🧭 Discord release webhook draft — automate release announcements for issue #390
- 🐛 Bug reports
- 💡 Feature requests
- 🔒 Security policy
Nautiverse 💻 📖 🚧 |
Gordienko Andrey 💻 |
Deepak singh 💻 |
by22Jy 💻 |
Arjun Kundapur 💻 |
Harshit Gupta 📖 |
Dhruv Garg 💻 |
Adam Silva 💻 |
qorex 💻 |
Abhay Krishna 💻 |
AYUSH BHATT 💻 |
HARSH 📖 |
mikemolinet 💻 🐛 |
Alessandro Mecca 💻 🐛 |