Tergite Backend
[2025.09.0]
released on: 2nd of October 2025
Added
- Install a pre-commit hook to run black
- Added a support for measurement level 1 for simulator for both single and avg modes
- Added a support for measurement level 1 for real backend for both single and avg modes
- Added authentication via JWT, with temporary JWT token generated by the backend instance and passed through MSS to the SDK
- Added support for booked time slots, on top of the first-in-first-out (FIFO) queue
- Added the following endpoints for the sake of handling bookings:
/token(POST)/users(POST, GET)/users/{user_id}(POST, GET, DELETE)/me(DELETE, GET)/bookings(POST, GET)/bookings/{booking_id}/cancel(POST)
- BREAKING: Added authentication of requests from MSS by verifying that
x-mss-signatureis signed using MSS’s private key - Added canceling of jobs via MSS
- Added and adapted SpiDAC class from autocalibration package for coupler biasing
- Modify Quantify quantum executor by calling SpiDAC to bring up currents before running a schedule
- Add a placeholder Wacqt-two-qubit-gate function for Qobj to QuantifySchedule mapper with a flux port reference
- Add filtering bookings by minimum/maximum start timestamps
Changed
- BREAKING: Changed authentication during job submission to use JWT token only
- BREAKING: Removed authentication of requests by referer’s IP address
- BREAKING: Removed authentication of job-submission requests that would check that the API key submitted was associated with the job submitted
- BREAKING: Removed the
/authendpoint
- BREAKING: Removed the
- BREAKING: Changed the return type of the
/jobsPOST endpoint to be the job in JSON as opposed to{"message": string} - BREAKING: Added pagination to the
/jobsGET endpoint, changing the return type to{"data": []object, limit: number, skip: number}as opposed to[]object - BREAKING: Changed the
/jobsendpoint to return only jobs that belong to the user whose id is in thex-mss-user-isheader. - BREAKING: Changed the return type of the
/jobsGET endpoint to be the job in JSON as opposed to{"message": object} - BREAKING: Removed the
/jobs/{job_id}/statusendpoint. - BREAKING: Removed the
/jobs/{job_id}/resultendpoint. - BREAKING: Changed the return type of the
/jobsDELETE endpoint to{"status": "success", "detail": string}as opposed to{"message": string} - BREAKING: Changed the return type of the
/jobs/{job_id}/cancelPOST endpoint to{"status": "success", "detail": string}as opposed to nothing - BREAKING: Changed the return type of the
/logfiles/{logfile_id}GET endpoint when an error occurs to return an error status code with{"detail": string}JSON response. - BREAKING: Changed the names of the workers/queues used to
{PREFIX}_general,{PREFIX}_preprocessing,{PREFIX}_normal_execution,{PREFIX}_booked_execution,{PREFIX}_postprocessing
Fixed
- Fix bcrypt 5.0.0 ValueError ‘password cannot be longer than 72 bytes, truncate manually if necessary (e.g. my_password[:72])’
[2025.06.2]
released on: 17th of June 2025
- No changes
[2025.06.1]
released on: 17th of June 2025
- No changes
[2025.06.0]
released on: 16th of June 2025
Added
- Add a simpler JSON document based store in redis
Changed
- Changed source of lda parameters to backend’s redis store. Originally they were retrieved from MSS.
- Added proper HTTP status codes for failed REST API requests
- InvalidJobIdInUploadedFileError results in a 400 HTTP response (originally was 200)
- ItemNotFoundError results in a 404 HTTP response (originally was 200)
- JobAlreadyCancelled results in a 406 HTTP response (originally was 500)
- BREAKING: Change endpoint
/v2/static-propertiesto/static-properties - BREAKING: Change endpoint
/v2/dynamic-propertiesto/dynamic-properties - Rename the
propertieslibrary todevice_parameters - Upgraded to python 3.12
- Removed the deprecated
qiskit-ibmq-providersdependency, moving its code into our lib folder - Moved from requirements.txt to pyproject.toml setup
- Bumped up the version of fastapi to the latest (>=0.115.12)
- Added validation of job files when uploading jobs to
/jobs
[2025.03.2]
released on: 7th of April 2025
Changed
- Remove stale fixtures
Fixed
- Fixed JSONDecodeError when application is run in systemd
[2025.03.1]
released on: 18th of March 2025
Changed
- No change
[2025.03.0]
released on: 18th of March 2025
Changed
Removed the storage-file internal lib
Limited pyarrow to versions ‘18.0.0’ and below for macOS
Decouple data from algorithms in storage file
Decouple native job run from executor instance
Remove debug prints of qobj when running jobs
Rename the run_experiment and run methods of the QuantumEexcutor class to _run_native, run
Clean up qobj-to-quantify compilation
Removed Program
Removed the dag property of the NativeExperiment class
Enchanced the Channel class to track all instructions attached to it
Added the ‘to_operation’ method on the BaseInstruction of quantify, removing the long if-conditional QauntifyExperiment.schedule_operation method that was originally generating Operator’s
Replaced the looping of the DAG with the looping of the instructions on each channel
Created the ChannelRegistry dict-like class to track the state of all channels attached to an experiment
Deleted rot_left and ceil4 utility functions and other unused utility functions
Split FreqInstruction class to SetFreqInstruction and ShiftFreqInstruction
Split PhaseInstruction class to SetPhaseInstruction and ShiftPhaseInstruction
Added the QBLOX_TIMEGRID_INTERVAL constant
Moved the Instruction class in the quantum_executor/base folder to quantum_executor/quantify folder, renaming it to BaseInstruction
Removed the channels property from the NativeExperiment class
Added the channel_registry property on the QauntifyExperiment class
Moved the Channel definition from utils to the quantum_executor/quantify folder
Removed retworkx from the requirements.txt
Updated quantify-scheduler, quantify-core and qblox-instruments and pydantic versions
BREAKING CHANGE: Split cluster configurations into quantify-config.json and quantify-metadata.json
BREAKING CHANGE: Added a new configuration file calibration.seed.toml for seeding the database with calibration data
Enhanced the QuantifySchedule conversion to use parametric schedules and new portclock convention
[2024.12.1]
released on: 20th of December 2024
Added
- Added Dockerfile.
- Added instructions how to run with docker.
- Added instructions how to run the qiskit_pulse_2q simulator in the configuration docs.
Changed
- Changed
start_bcc.shscript to use redis connection obtained from the environment. - Changed
start_bcc.shscript to update the exported environment variables after reading from theENV_FILE. - Updated Github action to deploy built multiplatform image to docker hub as something like
tergite/tergite-backend - Removed some redundant libraries in the
requirements.txtfile. - Removed some outdated docs.
[2024.12.0]
released on: 11th of December 2024
Added
- Added redis connection environment variables
- Added GitLab CI configuration
- Added storing of Qobj header data in the logfiles of the quantum jobs
- Qiskit dynamics simulator backend with two-qubit CZ gate (“qiskit_pulse_2q”)
- Added CouplerProps to Backend Configurations
- Added the
coupling_dictto thebackend_config.toml
Fixed
- Fixed httpx version to 0.27.2 as 0.28.0 removes many deprecations that we were still dependent on in FastAPI testClient
Changed
- Removed the
coupling_mapfrom thebackend_config.tomlas it is generated on-the-fly from thecoupling_dict.
[2024.09.1]
released on: 24th of September 2024
Fixed
- Fixed ‘KeyError’ when no units are not passed in the backend_config file
- Fixed “…bin/conda/activate: Not a directory” error when starting as systemd service
- Fixed silent error where calibrations are not sent to MSS on executor initialization
- Fixed “TypeError: Object of type datetime is not JSON serializable” when sending calibration data to MSS
- Fixed ‘SyntaxWarning: ’is not’ with a literal’ when initializing backend
[2024.09.0]
released on: 16th of September 2024
Added
- The
QuantumExecutoras abstract class to implement a backend EXECUTOR_TYPEkeyword in the .env variables to select the backend- Qiskit dynamics simulator backend with one qubit (“qiskit_pulse_1q”)
- Added the initialization of the redis store with configuration picked from the
backend_config.tomlfile when the execution worker starts - Added an initial request to update the backend information in MSS when the execution worker starts
Changed
- BREAKING CHANGE:
EXECUTOR_DATA_DIRNAMEdefinition in the .env variables instead ofgeneral.data_dirinexecutor-config.yml - BREAKING CHANGE: Removed the whole
generalsection in theexecutor-config.yml - BREAKING CHANGE: Renamed
executor-config.ymltoquantify-config.yml - Removed the old config files that were used for setting up automatic calibration
- Removed the script that loaded automatic calibration configurations at the start
- Moved the
backend_config.tomlfile from/configsfolder - Moved the
propertiesservice to thelibsfolder - Moved the
storage,date_time,representationandloggingutils to thepropertieslib - Removed the
scriptsfolder
[2024.04.0]
released on 28th of May 2024
Initial Public Release
Added
- Added storage_file lib (formerly tergite-quantify-connector-storagefile)
- Added
quantum_executorservice (formerly tergite-quantify-connector) - Added the
executor-config.ymland its python-based validators
Changed
- Changed the way discriminators are loaded to load from the database
- BREAKING_CHANGE: Removed hard-coded discriminators
- BREAKING_CHANGE: Removed official support for Python 3.8; Official support is now >=3.12
- BREAKING_CHANGE: Removed Labber support
- Replaced tergite-quantify-connector-storagefile package with an internal storage_file lib
- Moved unused files to
archivefolder - BREAKING_CHANGE: Removed calibration and two state discrimination source code
- BREAKING_CHANGE: Replaced tergite-quantify-connector-storagefile package with an internal storage_file lib
- BREAKING_CHANGE: Merged tergite-quantify-connector into tergite-backend and renamed its service to
quantum_executor - BREAKING_CHANGE: Changed configuration of hardware to use
executor-config.ymlfile with proper validations on loading - BREAKING_CHANGE: Removed support for
Pulsar, or any other instrument drivers other thanCluster
The old implementation wrongfully assumed that all these drivers have the same signature i.e.driver(name: str, identifier: str | None)
yetSpiRack(name: str, address: str, baud_rate: int = 9600, timeout: float = 1, is_dummy: bool = False,),
Pulsar(name: str, identifier: Optional[str] = None, port: Optional[int] = None, debug: Optional[int] = None, dummy_type: Optional[PulsarType] = None,)
Cluster(name: str, identifier: Optional[str] = None, port: Optional[int] = None, debug: Optional[int] = None, dummy_type: Optional[PulsarType] = None)are all different.
- BREAKING_CHANGE: We got rid of quantify connector’s redundant reset() method.
- BREAKING_CHANGE: Changed backend name used when querying MSS for backend properties to be equal to
settings.DEFAULT_PREFIX
Fixed
- Fixed duplicate job uploads to respond with HTTP 409