JupyterHub-Pilot
One JupyterHub for many teams. Each team gets its own worker VM, and every notebook has an AI assistant.
- A worker VM per team. The Hub starts each user's notebook server over SSH on their team's worker, so one heavy team cannot slow down another.
- A Linux account per user, with cgroup memory and CPU limits on every notebook server.
- AI magics in every notebook:
%do,%fix,%review,%rework(Ollama, OpenAI, Claude or Gemini through LiteLLM, or an MCP server). - Live monitoring at
/hub/monitoring: each worker's CPU, memory, disk and network, and each user's usage against their limits. - Google login, SQLite state that survives Hub restarts, optional Vault secrets, and a built-in load test.
Install
Ubuntu 24.04 or 26.04: one Hub VM plus one worker VM per team, on the same private network.
Hub
sudo apt install -y python3-pip
sudo pip3 install --break-system-packages --ignore-installed "jupyterhub-pilot[hub]"
sudo jupyterhub-pilot install-hub
It asks for the Hub's private IP, your admin username and the first worker's IP, and prints an SSH key and an agent token for the workers.
Each worker
sudo apt install -y python3-pip
sudo pip3 install --break-system-packages --ignore-installed "jupyterhub-pilot[worker,ai]"
sudo jupyterhub-pilot install-worker
Then, on the Hub
sudo jupyterhub-pilot add-worker team_beta <worker-private-ip> # one per extra team
sudo nano /etc/jupyterhub-pilot/hub.env # Google client, or test passwords
sudo systemctl enable --now jupyterhub
Put Caddy in front for HTTPS, create a group per team in Admin → Groups, and users can start their servers.
In a notebook
%load_ext jupyterhub_pilot.extension
%do load data/sales.csv and plot monthly revenue
%do writes the code into the next cell for you to check and run.
Learn more
- Full guide: HTTPS, test login, teams, upgrading, troubleshooting
- AWS EC2 walkthrough
- AI magics · Monitoring · Security
- Releases · Issues
MIT licensed.
Metadata
Release files for jupyterhub-pilot 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jupyterhub_pilot-0.5.1.tar.gz | 80.5 kB | Without provenance | Details for jupyterhub_pilot-0.5.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jupyterhub_pilot-0.5.1-py3-none-any.whl | Python 3 | none | any | Details for jupyterhub_pilot-0.5.1-py3-none-any.whl |
Total release size: 143.4 kB
Release files / jupyterhub_pilot-0.5.1.tar.gz
| Download URL | jupyterhub_pilot-0.5.1.tar.gz |
|---|---|
| Size | 80.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e1d772eb199177c3ae5bc3ff3ee2fe3b48c0882f0ca910efc5b6bfc6698e420d
|
|
BLAKE2b-256 checksum How to use checksums |
2466f265431e250cd5c05254c4e173c36095557e1f2cadbbec6e5c425a1a3f10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.13
|
Release files / jupyterhub_pilot-0.5.1-py3-none-any.whl
| Download URL | jupyterhub_pilot-0.5.1-py3-none-any.whl |
|---|---|
| Size | 62.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d83a45a1ff25c74ea5aea541b3727453dca0ec40f2406fef3439ad599abc02ae
|
|
BLAKE2b-256 checksum How to use checksums |
61034fb03b4e4e6bfd789d276002f036006586ad934ff2717b6f01c79015d557
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.13
|
Security for jupyterhub-pilot 0.5.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.