Submit. Tag. Forget.

Qoffee is a free and open-source quantum job monitoring tool that notifies you about your job's status, without you ever needing to open a laptop, refresh a dashboard, or check a queue.

It runs as a GitHub Action inside your own forked copy of the repository. There is no server, no account, and no database. You add one line to the script you already use to submit jobs.

Set it up

Qoffee
today 12:30
3 jobs tracked
In progress (1)
Noise cal d3k9p2
QUEUED on ibm_torino
Done (1)
Bell test a71fe4
DONE on ibm_brisbane
Failed (1)
VQE sweep c02b8a
ERROR on ibm_torino
Job exceeded maximum execution time

The line you add

Qoffee tracks a job because the job carries a tag you gave it. Add the tag to whatever script you already use.

sampler = Sampler(backend)
sampler.options.environment.job_tags = ["qoffee"]

job = sampler.run([isa_circuit])

That is the whole integration. You can also tag a job after you submitted it, and you can give it a readable name. Both are on the tagging page.

One day, three jobs

Here is what actually arrives if you submit three jobs in the morning, one of them fails, and you do not look at anything until the evening. The dots on the left mark the runs where Qoffee sent something.

09:02
You submit Bell test, VQE sweep and Noise cal, all tagged qoffee.
09:15
First run. All three are queued.
Qoffee: 3 jobs trackedIn progress (3)
Bell test / QUEUED
VQE sweep / QUEUED
Noise cal / QUEUED
09:30 to 11:00
Seven more runs. Nothing has changed state, so nothing is sent.
11:15
Bell test starts running.
Qoffee: 3 jobs trackedIn progress (3)
Bell test / RUNNING
VQE sweep / QUEUED
Noise cal / QUEUED
12:30
Bell test finished. VQE sweep hit an error. Bell test is reported once and drops out. The failure is reported and then held.
Qoffee: 3 jobs trackedIn progress (1) / Noise cal
Done (1) / Bell test
Failed (1) / VQE sweep
12:45 to 16:00
Thirteen more runs. Noise cal is still queued and the failure has already been reported, so nothing is sent.
16:20
Noise cal finished. The failure is still held, because something else in the batch was still moving during this run.
Qoffee: 2 jobs trackedDone (1) / Noise cal
Failed (1) / VQE sweep
16:35
Nothing is moving any more. The failure is reported one last time and released.
Qoffee: 1 job trackedFailed (1) / VQE sweep

Five messages, over seven and a half hours, from thirty scheduled runs. The last one contains the failure and nothing else, which is the job you need to resubmit. After that, Qoffee goes silent until you tag something new.

The rules that produce this are on when Qoffee talks.

What it runs on

GitHub Actions, in a repository you own. Public repositories get unlimited Actions minutes, so the schedule costs nothing. Discord webhooks are free. The optional Cloudflare scheduler is free.

Nothing about you is stored anywhere. There is no database, no state file, and no jobs list. The tracking state lives in IBM's own job tags, which is why the repository can be public without leaking who is using it. That is explained on how Qoffee works.

Everything here is checkable

Qoffee is written in Python and the repository is public. Every claim on this site corresponds to something in the source, and the pages below link to the specific file where it lives. You can also run python -m qoffee --dry-run before you let it change anything.

Setup is three steps and takes about five minutes. It ends with you triggering a run by hand and watching the first message arrive.

Set it up