SDKs & Languages¶
Meridian ships SDKs in six languages. Pick the one your team knows — the kernel API is identical across all of them.
Available SDKs¶
| Language | Status | Install | GitHub |
|---|---|---|---|
| Python | Production-ready (84 operations) | pip install open-meridian |
meridian-python |
| Go | Production-ready (84 operations) | go get github.com/Societal-Lab-Inc/meridian-go |
meridian-go |
| TypeScript | Production-ready (84 operations) | npm install open-meridian |
meridian-typescript |
| Java | In development | Coming soon | meridian-java |
| C++ | In development | Coming soon | meridian-cpp |
| Rust | In development | Coming soon | meridian-rust |
All six SDKs implement the same 84 kernel API operations across OMS, EMS, and BOR surfaces. Code written against any SDK works identically in local and deployed environments.
Development Modes¶
| Mode | Infrastructure | Best For |
|---|---|---|
| Local | None — everything in-process | Strategy development, backtesting, unit testing |
| Connected | Sidecar + bus + kernel | Coming soon |
Local mode is where most development happens. No Docker, no sidecar, no message bus — just your code and the SDK. When you're ready to deploy, the same plugin binary connects to a live sidecar with zero code changes.
Getting Started¶
Python¶
from meridian import LocalClient
client = LocalClient()
# You now have access to all 84 kernel operations
Full documentation and examples: meridian-python
Go¶
import meridian "github.com/Societal-Lab-Inc/meridian-go"
client := meridian.NewLocalClient()
// You now have access to all 84 kernel operations
Full documentation and examples: meridian-go
TypeScript¶
import { LocalClient, SignalEngine, type DataWindow } from "open-meridian";
const client = new LocalClient({ startingCash: 100_000 });
client.loadBars("BTC", "data/btc-usd.csv");
// You now have access to all 84 kernel operations
Full documentation and crypto examples: meridian-typescript
Data Query API¶
Query any canonical field for any instrument:
Python¶
from meridian.fields import CLOSE, DURATION, GICS_SECTOR
price = client.data.get("AAPL", CLOSE) # from loaded bars
sector = client.data.get("AAPL", GICS_SECTOR) # None in local mode, resolved in connected mode
Go¶
price, _ := client.Data().Get("AAPL", meridian.FieldClose)
sector, _ := client.Data().Get("AAPL", meridian.FieldGICSSector)
The SDK ships 62 canonical field constants covering identifiers, prices, reference data, fixed income, derivatives, fundamentals, and compliance. Use these instead of string literals — they're the same field names across all SDKs, all DGM plugins, and all data queries.
In local mode, OHLCV fields resolve from loaded bar data. All other fields return None/nil — they'll resolve automatically when connected to a live deployment with DGM and analytics plugins.
API Reference Documentation
Full API reference for each SDK is published separately — Python API Docs and Go API Docs (coming soon). The SDK repositories contain comprehensive usage guides, code samples, and per-method documentation.