Skip to content
Connect > Client Libraries

Client Libraries

The client libraries let an external program, in Python, C++ or Java, connect to 3forge Enterprise and work with its data directly, without the browser UI. A client can run SQL, subscribe to live tables and receive row-level changes as they happen, publish realtime objects, and register commands that the platform can call back. It is how you wire an existing trading, risk, or research program into the data fabric.

Three libraries:

  • The Python client: the pyami package. Four layers: a native realtime client, a DB-API 2.0 driver, a SQLAlchemy dialect, and a pure-Python JDBC client.
  • The C++ client: the ami_client_common library. A single header, ami_client.hpp, with one entry point, ami::Client.
  • The Java client: classes shipped inside the install. Publishing and commands through one class, subscribing through another. It does not run SQL.

The Python native layer is built on the C++ library, so the two share the same object model and the same method names. Learn one and the other reads the same.

Features

  • Run SQL from your program: query, insert, and bulk-load Center tables over JDBC, from Python or C++, synchronously or with a callback.
  • Subscribe to live row changes: receive add/update/delete deltas as rows change, and merge them by row id.
  • Publish into the data fabric: stream objects to the Relay with per-object keys, batching, and an outbox that replays on reconnect.
  • Query straight into pandas: read tables into DataFrames through the Python DB-API or the SQLAlchemy dialect.
  • Connect securely and at scale: mutual-TLS client-certificate authentication, multi-server sharding, and transparent failover.

What a client can do

Capability Protocol Python C++
Run SQL (query, DDL, DML) JDBC sql, sql_async sql, sql_async
High-throughput insert / replace JDBC sql_insert, sql_replace, sql_bulk_insert sql_insert, sql_replace (+ Table)
Subscribe to a live table Center subscribe + on_update subscribe + on_update
Publish realtime objects Relay publish, publish_batch, publish_dataframe publish_object, publish_raw
Register / answer commands Relay register_command, send_command_response same

The three protocols

A client reaches the server over three separate connections, each with its own configuration on a named cluster:

  • JDBC: request/response SQL. Query, insert, replace.
  • Center: a live subscription. You get the current rows once, then a stream of add / update / delete changes.
  • Relay: publish realtime objects into the fabric, and register commands.

You use only the protocols your program needs; a read-only analytics job uses JDBC alone, a feeder uses Relay alone, a dashboard uses Center.

Where to start

This page introduces the Python and C++ clients

The ODBC driver has its own page in this section. The Excel add-in (RTD server and XLL) is documented separately.

Verified live via the Python client (build 32437)

The Python client flows in this section, connect over mutual TLS, run SQL, subscribe and receive updates, insert rows, and merge by id, were reproduced end-to-end against a live instance. The C++ snippets share the same object model but were not separately compiled and run.