Integrated mode

Integrated mode is a feature that allows you to run both RADKit Client and RADKit Service within the same process, without having to go through the RADKit Cloud. No network connectivity to the public internet is required.

Note

The RADKit Service component requires setting up and providing a superadmin password. If you would like to avoid password prompts, please refer to Storing the superadmin password.

Starting the integrated Service

Simply use the service_integrated() function from the REPL prompt to start the integrated Service and connect to it. If the superadmin password is not already available, the user is prompted for it. By default the webserver is started, but this is not mandatory (see the Client API reference for a description of all the possible parameters).

>>> service = start_integrated_service()
Superadmin password: ************   [correct]
09:35:21.315Z INFO  | Opening database. [path='/Users/<USER>/.radkit/service/service-db.json.encrypted']
09:35:22.804Z INFO  | Creating service
09:35:22.805Z INFO  | Starting RADKit Service [log_dir=PosixPath('/Users/<USER>/.radkit/logs/service')]

UI/API is listening on https://localhost:8081
09:35:22.813Z INFO  | Starting UI and API listener [addresses=['::'] secure_port=8081]
09:35:23.099Z INFO  | Webserver certificate fingerprint [fingerprint='006731318e1961fdd4b4cfef40e8af5c6b276c5fb97fb54240f13fd156f98531']
09:35:23.101Z INFO  | E2EE certificate fingerprint [fingerprint='1591cf4a7053eba07edf77acc6d5907db02951cda70b934c0e70e0e3190acbfe']
09:35:23.108Z INFO  | Starting HTTP server [bind=[':::8081']]
09:35:23.109Z INFO  | new RPC request [rpc_name='get-capabilities' rpc_source='in-memory']
09:35:23.120Z INFO  | user requested Capabilities
09:35:23.367Z INFO  | Running on https://[::]:8081 (CTRL + C to quit)
09:35:23.370Z INFO  | finished handling capabilities request
09:35:23.385Z INFO  | RPC request finished [rpc_name='get-capabilities' rpc_source='in-memory']
09:35:23.386Z INFO  | new RPC request [rpc_name='get-basic-inventory' rpc_source='in-memory']
09:35:23.388Z INFO  | user requested inventory
09:35:23.398Z INFO  | finished handling basic inventory request
09:35:23.399Z INFO  | RPC request finished [rpc_name='get-basic-inventory' rpc_source='in-memory']

>>> service
[READY] Service(name='in-memory-1', service_id=None)
-----------------------------  -------------------------------------------------------
name                           in-memory-1
domain                         None
client_id                      None
service_id                     None
#devices                       2
#capabilities                  26
version                        1.8.0
e2ee_supported                 No
e2ee_active                    No, not supported by service (use_e2ee=WHEN_AVAILABLE).
e2e_verify_required            No
supported_compression_methods  ['zstd']
supports_h2_multiplexing       Yes
connection_method              None
direct_rpc_url                 None
-----------------------------  -------------------------------------------------------

>>> service.inventory
...

Note

This makes it possible to run RADKit Integrated while also connecting to the RADKit Cloud in parallel using e.g. client.sso_login(...), which was not possible with the former radkit-integrated command.

Scripting with Integrated mode

Integrated mode is available through the Client API. It can be started by calling radkit_client.sync.Client.service_integrated().