Next
ReferenceClient librariesConnect

Connect to a Core

Connect and authenticate a Python or TypeScript client with a Synnax Core: connect to Synnax Desktop, log in with arguments or sy login, use TLS, and close the client.

Create a client to connect your code to a Synnax Core. The client logs in with the username and password of a user on the Core.

Connect to Synnax Desktop

Scripts on the same computer as Synnax Desktop can connect to its Core while it runs. Synnax Desktop saves the address of its Core and an API key in ~/.synnax/desktop.json, which only your user can read. The Python client reads this file when you give no arguments:

import synnax as sy

client = sy.Synnax()

To get the code for each client, click the code button in the top bar of Synnax Desktop, or run the Connect from code command. The dialog shows the install command that matches the version of Synnax Desktop, and code that you can copy. The TypeScript tab gives code with the address and the API key filled in. Other clients, such as C++ and LabVIEW, can use the host, the port, and the API key from that code.

When you close Synnax Desktop, its Core stops, and the connected scripts lose their connection. The API key stays the same the next time you open it. The port also stays the same, unless another program uses it.

To stop every script that uses the key, click Reset key in the dialog. Python scripts that call sy.Synnax() use the new key the next time they start. Code that holds the old key needs the new one. Erase all data also deletes the key.

Connect with arguments

Enterprise
import synnax as sy

client = sy.Synnax(
    host="core.example.com",
    port=9090,
    username="operator",
    password="secret",
)

The client logs in when you create it. It raises sy.AuthError when the credentials are wrong. It raises Unreachable, from the freighter package, when it cannot reach the Core.

To keep credentials out of a script, read them from environment variables that you set. The clients read no environment variables by themselves.

Log in once with sy login

The sy login command saves your credentials, so Python scripts can connect with no arguments. It is part of the Python client. Run it in a terminal:

sy login

Answer the prompts. Press Enter to keep the default in parentheses:

Enter your Synnax connection parameters:
Host (localhost): core.example.com
Port (9090):
Username (synnax): operator
Password:
Secure Connection? [y/n] (n):

When you answer y to the secure prompt, the command also asks for the “CA certificate path”. Enter the path to the ca.crt file of the Core. Leave it empty when the Core has a certificate from a public authority.

The command connects to the Core, then prints “Connection successful!”. In your scripts, create the client with no arguments:

import synnax as sy

client = sy.Synnax()

The command stores the host, port, username, TLS setting, and CA certificate path in ~/.synnax/config.json. It stores the password in the keychain of your operating system, under the name synnax. When the login fails, the command saves nothing. Run sy login again to change the values.

With no saved login, sy.Synnax() connects to Synnax Desktop. When neither is saved, it raises sy.ValidationError. When you give no host, the client ignores the other arguments and uses the saved login.

Connect with TLS

When the Core serves TLS, set secure to true. For how to give the Core a certificate, see Set up TLS.

Enterprise
client = sy.Synnax(
    host="core.example.com",
    port=9090,
    username="operator",
    password="secret",
    secure=True,
)

The Python client checks the certificate of the Core, and checks that the certificate is for the host that you connect to. A certificate from a public authority, such as Let’s Encrypt, needs no setup. When the Core uses a self-signed certificate, give the path to its CA certificate in ca_cert:

client = sy.Synnax(
    host="core.example.com",
    port=9090,
    username="operator",
    password="secret",
    secure=True,
    ca_cert="/path/to/ca.crt",
)

A Core that you start with --auto-cert makes its own CA certificate. Give its path in ca_cert, or save it with sy login. To find the file, see Copy the CA certificate.

Close the client

Close the client when your code is done with it:

Enterprise
client.close()

When the script exits, the client closes by itself.

Client options

Enterprise
hoststr

The hostname or IP address of the Core. With no host, the client uses the values that sy login saved.

portint

The port of the Core.

usernamestr

The username to log in with.

passwordstr

The password to log in with.

securebool = False

Connect with TLS.

ca_certstr

The path to the CA certificate that signs the certificate of the Core. With ca_cert and no secure, the client raises ValueError. With no path, the client trusts the CA certificates of the computer.

open_timeoutTimeSpan = 5 s

How long to wait to open a connection.

read_timeoutTimeSpan = 5 s

How long to wait for a response.

keep_aliveTimeSpan = 30 s

How often an async streamer checks its connection to the Core.

max_retriesint = 3

How many times to retry a request that fails to reach the Core.

clock_skew_thresholdTimeSpan = 1 s

The largest difference between the clocks of the computer and the Core before the client prints a warning.

When the client cannot connect, see Troubleshooting.