How NCQNet works

The pieces

PortalSign-in (CILogon), projects, reservations, tokens. This site.
Core APIPeople, projects, members and their roles.
HeraldThe control framework: an orchestrator, brokers, and one authority per site, modeled on FABRIC's.
qenvoyThe Python library researchers use in notebooks.

What keeps it safe

No double bookingEvery reservation is a database constraint at the broker and again at the site. Two people can never hold the same device at the same time.
Only the lease holderDevice commands go through Herald and are checked against an active lease. Nobody reaches the hardware directly.
Signed everythingTickets, delegations and every message between services are signed and verified.
Reset after useWhen a lease ends the devices go back to safe defaults; a device that fails to reset is taken out of service until an operator checks it.
Fair shareProjects have weekly hour quotas; long leases need approval.

From a notebook

import qenvoy
qnet = qenvoy.connect("https://23-134-233-18.sslip.io/api", "My Project")   # your project's name or id
with qnet.reserve("pump-sweep", start=qnet.find_slot(template="unc-duke", duration_minutes=60)[0].start,
                  slivers={"link": "unc-duke"}) as lease:
    lease.wait()
    ...