Tergite Backend
[2026.03.1]
released on 17th of March 2026
Added
- Added rq queue default timeouts set from environment vars
MAX_EXECUTION_TIME,MAX_PREPROCESSING_TIME,MAX_POSTPROCESSING_TIMEandMAX_GENERAL_QUEUE_TIME
Fixed
- Add beta qobj parameters for gaussian pulse for compatibility with new SDK-level drag instruction
[2026.03.0]
released on 16th of March 2026
- No Change
[2025.12.0]
released on: 16th March 2026
Added
- Added decryption of
.envfile in thebcc_start.shscript - [BREAKING] Added the
PRIVATE_KEY_FILE,PRIVATE_KEY_PASSWORDenvironment variables - Added
PYTEST_ARGSCI environment variable for use in CI - Added SpiDAC controller for controlling the flux tunable couplers
- Added
REQUEST_LOG_TTLandREQUEST_LOG_CLEAN_INTERVALto control the rate at which request logs are cleared - Added
JOBS_STORE_TTLandJOBS_STORE_CLEAN_INTERVALto control the rate at which old jobs data is cleared from redis store - Added TTL on
RedisStore - Added motzoi parameter to the calibration config seed
- Added clock phase resets for all drive channels before running each job
Changed
- Removed the automatic clearing of the redis database on every startup
- Removed the JOB_EXECUTION_POOL_DIRNAME env variable
- [BREAKING] Removed the
MSS_APP_TOKENenvironment variable - Changed connection to MSS to use RSA-secured websockets instead of RESTful HTTP requests
- Fixed issue with executor being re-initialized on every job submission
- Refactored SpiDAC code to be less dependent on global variables but to be fully dependent on the parent executor
- Replaced Gaussian pulse with DRAG pulse for quantify executor
- Changed
discriminate_resultsinquantum_jobto explicitly map quantify qubits ids to qobj qubit ids - Changed
ShiftPhaseInstruction in Quantify to convert radians to degrees - Changed quantify executor initialization to allow skipping cluster reset for stability
Fixed
- Fixed ‘Error 111 connecting to localhost:6379’ when only RQ_REDIS_URL is provided
- Fixed KeyError ‘edges’ due to new version of networkx
- Fixed qobj to quantify scheduling mapping issue by adding barrier, dispatch and sync compensations in quantify executor
- Fixed SPI_Dac logic allowing to restore currents to values recorded before running a job
- Fixed
WacqtCZPulseInstruction for quantify backend to use SoftSquare pulse instead of numerical waveform - Fixed
discriminate_resultsinquantum_jobscripts to properly process circuit_level acquisition requirements
[2025.09.1]
released on: 6th November 2025
Added
- Added
isortcheck in the CI files - Added
isortin thepre-commit-config.yamlfile - Added
CURRENT_DATEenvironment variable to mock the global current timestamp, useful during tests - Added the
/bookings/configendpoint to return the configuration for the booking service - Added CURRENT_DATE environment variable for mocking global current timestamp in testing environments.
- Added filtering bookings at
/bookingsendpoint byuser_id - Added sorting bookings at
/bookingsendpoint by any field
Fixed
- Fixed error “invalid value for log level” when starting BCC without specifying the
$UVICORN_LOG_LEVELenv variable - Fixed error failing qiskit-dynamics backend tests
- Fixed ‘KeyError: ’Another instrument has the name: quantify’’ in spi tests
- Fixed AttributeError: module ‘bcrypt’ has no attribute ‘about’
- Fixed ‘SyntaxWarning: invalid escape sequence’’
- Fixed ‘user of id … not found’ error when cancelling booking created by an MSS user
Changed
- Changed
LOG_LEVELdefault value to ‘ERROR’
[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