Skip to content

Conversation

@mattprintz
Copy link
Collaborator

Lots of changes here related to server upgrades:

  • Improves kernel/subkernel shutdown
  • Tracks identifier used by Jupyter when defining subkernels to better link Beaker subkernel classes to kernels defined in Jupyter
  • Allows definition/usage of default kernel in UI/beaker-ts library
  • Update of auto-discovery to use Python entrypoints instead of JSON files stored in a "share" folder
  • Beginning of implementation of "Extension" class. Will be expanded later.
  • Refactor of Beaker Server code. Streamlined and uses traitlets configuration.
  • Improved method of overriding configuration options, including authorization classes, etc
  • Added sample beaker server configuration file
  • Added "server" section to beaker cli commands

Note: To work properly, beaker will need to be reinstalled after checkout or merge as the new entry-points need to be registered during install.

- Refactor authentication structure by moving from single auth.py to auth/ module
- Add multiuser service support and extension system
- Update Vite configuration for improved proxy handling and CORS settings
- Generate comprehensive sample configuration file with all available options
- Implement server lifecycle management with list, start, stop, and config generation CLI commands
@brandomr
Copy link
Contributor

This is looking really good. I'm curious about the multiuser setup and how you're thinking about that. It seems like that might be somewhat work in progress but essentially, when we get a new user we create their home dir on the fly? If all subkernel users are the same user beaker I think they might be able to access each other's file systems, but I'm assuming this is a bit of a placeholder solution for now while we think through prod style deployments (e.g. EBS, etc)?

@mattprintz
Copy link
Collaborator Author

@brandomr Good catch. So a couple things, and forgive me for repeating things mentioned on the call:

  1. Most deployments are likely to use Docker/K8s, and run each session within an individualized container. This is probably the ideal.
  2. My thought for cases in which we were sharing a filesystem is that all of the user directories would be inside a directory that is only readable/accessible by the root user. Each user directory would have read/write for that user. so once the service creates a process with CWD in that directory, it would be act normally, but if someone ran, say, ! ls .. they would get a permission error. We might be able to do something with schroot to better encapsulate.
  3. The "home_dir" methods in BeakerUser is actually kind of mislabeled. Really, it's just like a short UUID that is derived from the user's information. I was planning on this being used as the name of the home_dir, but it probably extends beyond that. I'll go ahead and rename and clarify that.

@mattprintz mattprintz force-pushed the server-upgrades/server-traitlet-refactor branch from 1e7d2bb to be67fa8 Compare October 20, 2025 22:56
@mattprintz mattprintz force-pushed the server-upgrades/server-traitlet-refactor branch from 964d329 to eb17ee0 Compare October 24, 2025 22:45
@mattprintz mattprintz merged commit 30e0f99 into dev Nov 20, 2025
1 check passed
@mattprintz mattprintz deleted the server-upgrades/server-traitlet-refactor branch November 20, 2025 21:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants