Languages and Libraries
Cirata Symphony provides libraries for developing extensions in Python, Java, Go, and Rust. Each language has its own strengths and is suited to different use cases. Choose the language that best fits your environment and requirements.
The libraries can also be used for accessing Symphony from environments based on those technologies. For example, notebooks in systems like Jupyter or Databricks can import the Python library to access Symphony directly, including all of the functionality offered by the extensions that are in use.
All four SDKs share a small set of environment variables for token resolution, TLS trust, and address override; see the Shared Environment Variables table below and the SYMPHONY_ADDRESS reference for the cross-SDK address-override contract.
Python
Python extensions are lightweight, async-first, and well suited to rapid development, data processing, scripting, and integration with the Python ecosystem.
Java
Java extensions are well suited to enterprise workloads, complex data pipelines, and environments where the Java ecosystem is already established. The recommended approach uses Spring Boot with dependency injection.
Go
Go extensions are well suited to high-performance workloads, infrastructure tooling, and environments where a single compiled binary with minimal dependencies is preferred.
Rust
Rust extensions are well suited to high-performance, low-latency workloads, real-time data processing, and environments where memory safety and minimal runtime overhead are priorities.
Downloading Libraries
Libraries are available for download from the Help > Development > Languages and Libraries page in a running Cirata Symphony instance.
Shared Environment Variables
The SDKs in all four languages honor the same set of environment variables for token resolution, TLS trust, and connection address. The per-language pages cover the same variables in context.
| Variable | Purpose |
|---|---|
SYMPHONY_TOKEN | API token used when none is passed to the extension constructor. May also carry a registration token; the SDK detects this and provisions a permanent key. |
REGISTRATION_TOKEN | One-time provisioning token. The SDK exchanges it for a permanent API key and stores the result in the OS credential store. |
SYMPHONY_ADDRESS | Overrides the address base32-encoded in the token. Accepts a bare hostname, host:port, or a full URL with explicit scheme (http:// or https://). See SYMPHONY_ADDRESS for when to use each form, the HTTPS-leg / NATS-leg split, TLS SAN considerations, and the plaintext-HTTP warning. |
SYMPHONY_TLS_CA | Path to a PEM file whose certificates are trusted for both the HTTPS registration exchange and the NATS TLS connection. Use when Symphony is fronted by a private or internal CA. Ignored when SYMPHONY_ADDRESS resolves to an http:// URL. |
NATS_TLS_CA | Path to a CA certificate for the NATS TLS connection only. Overrides SYMPHONY_TLS_CA for NATS and is not consulted for HTTPS. |