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 booking | Every 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 holder | Device commands go through Herald and are checked against an active lease. Nobody reaches the hardware directly. |
| Signed everything | Tickets, delegations and every message between services are signed and verified. |
| Reset after use | When 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 share | Projects 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()
...