NBS Pods
Containerized NBS (NIST Beamline Software) services for beamline simulation.
Container Images
This repository provides containerized NBS services that can be run in two modes:
Demo Mode (Pre-built Images)
Uses pre-built images from GitHub Container Registry (GHCR):
# Images are automatically built and pushed to:
# ghcr.io/xraygui/nbs-pods/bluesky:latest
# ghcr.io/xraygui/nbs-pods/nbs:latest
# ghcr.io/xraygui/nbs-pods/nbs-gui:latest
Development Mode (Local Builds)
Build images locally for development:
# Build all images
podman-compose -f docker-compose.build.yml build
# Build specific image
podman-compose -f docker-compose.build.yml build nbs
# Rebuild with no caching
podman-compose -f docker-compose.build.yml build --no-cache nbs_gui
Image Dependencies
fedora → bluesky → nbs → nbs-gui
Usage
Demo Mode (Default)
# Start all services with pre-built images
./scripts/deploy.sh start
# Start specific services
./scripts/deploy.sh start gui queueserver
# Start demo services (bluesky-services, gui, queueserver, sim, viewer)
./scripts/deploy.sh demo
Development Mode
# Build images locally first
podman-compose -f docker-compose.build.yml build
# Start specific services in development mode
./scripts/deploy.sh start --dev gui
# Mix normal and development mode
./scripts/deploy.sh start queueserver --dev gui
Stopping Services
# Stop all services
./scripts/deploy.sh stop
# Stop specific services
./scripts/deploy.sh stop gui queueserver
Available Services
- bluesky-services: Core infrastructure (Redis, MongoDB, Kafka, ZMQ proxies)
- queueserver: RE Manager for experiment orchestration
- gui: NBS GUI with display protocol detection (Wayland/X11)
- sim: NBS simulation services
- viewer: Additional viewing services (if configured)
Development Workflow
Docker Compose Override System
The deployment system uses Docker Compose's override mechanism to enable flexible configuration:
- Base Configuration: Each service has a main
docker-compose.ymlfile with default settings - Override Files:
docker-compose.override.ymlfiles (if present) are automatically composed with the main file - Development Files:
docker-compose.development.ymlfiles are applied when using the--devflag
Override Files (docker-compose.override.yml)
Override files allow local customization without modifying the base configuration:
- Testing: Override environment variables, ports, or volumes for testing
- Bug Fixes: Temporarily modify service parameters to work around issues
- GUI Configuration: Especially useful for display protocol issues (Wayland/X11)
- Local Paths: Mount local directories for configuration or data
Example override file:
services:
qs-gui:
volumes:
- ${HOME}/local-config:/etc/bluesky
environment:
- DEBUG=true
Development Files (docker-compose.development.yml)
Development files are applied when using the --dev flag and typically:
- Switch to Local Images: Use locally built images instead of GHCR images
- Config Mounts: Mount configuration directories to test config changes
- Code Mounts: Mount local source code directories for live development
- Local Installs: Install packages from local paths with
pip install -e - Debug Settings: Enable debugging, logging, or development-specific configurations
Example development file which only mounts local config directories
services:
qs-gui:
volumes:
- ${NBS_PODS_DIR}/config/bluesky:/etc/bluesky
- ${BEAMLINE_PODS_DIR}/config/ipython:/usr/local/share/ipython
- ${NBS_PODS_DIR}/config/tiled:/etc/tiled
Example development file which installs local code
services:
nbs-sim:
volumes:
- ${NBSDIR}:/usr/local/src/xraygui
- ${BEAMLINE_PODS_DIR}/config/ipython:/usr/local/share/ipython
command: >
bash -c "
pip3 install --no-deps --no-build-isolation -e /usr/local/src/xraygui/nbs-sim/src &&
nbs-sim --startup-dir /usr/local/share/ipython/profile_default/startup --list-pvs
"
File Resolution Order
The system resolves compose files in this order:
- Base service file (e.g.,
docker-compose.yml) - Override file (
docker-compose.override.yml) - if present - Development file (
docker-compose.development.yml) - if--devflag used
Later files override earlier ones, allowing for flexible configuration management.
Configuration
Images include default configurations in /etc/bluesky and /etc/tiled/profiles which can be overridden with volume mounts in development mode.
Metadata
Release files for nbs-pods 0.2.8
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 |
|---|---|---|---|---|
| nbs_pods-0.2.8.tar.gz | 205.5 kB | With provenance | Details for nbs_pods-0.2.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| nbs_pods-0.2.8-py3-none-any.whl | Python 3 | none | any | Details for nbs_pods-0.2.8-py3-none-any.whl |
Total release size: 408.1 kB
Release files / nbs_pods-0.2.8.tar.gz
| Download URL | nbs_pods-0.2.8.tar.gz |
|---|---|
| Size | 205.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
19e7c058c21536be5dfd4227072f64793be783f970e1d51b6e33f7bc66908ecc
|
|
BLAKE2b-256 checksum How to use checksums |
64412556990cc3217fdbb44461c32fb6097e3366a30a0d344c2f89444356af7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.
Transparency logRelease files / nbs_pods-0.2.8-py3-none-any.whl
| Download URL | nbs_pods-0.2.8-py3-none-any.whl |
|---|---|
| Size | 202.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ca36ff3a5d276690886606a0a4f59d77ee586a327a129cef55617a4edf7705a2
|
|
BLAKE2b-256 checksum How to use checksums |
345051f676fd604b6795b083ef6076c62fd7ae24be7d8dfd85b3089d9b830b29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.
Transparency logSecurity for nbs-pods 0.2.8
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for nbs_pods-0.2.8.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.
Transparency logA 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.