bisos.devpi: A Minimal devpi Python Package Index via BISOS Capability Bundles
Overview
bisos.devpi is a BISOS package for running devpi — devpi-server with its web UI, devpi-web — on a BISOS host, as a BISOS Capability Bundle (CBS/CBM) of systemd-planted Command Services, browsable as http://devpi.here.
In a rawBisosCbm materialization devpi is minimal: no PyPI mirror (devpi-init --no-root-pypi) and 4 threads. That is 81 MB of memory instead of about 500 MB with the mirror, which indexes all of PyPI’s project names at start. A real devpi, with its mirror, typically runs in a dedicated VM and is configured there (see bxGenesis/start/rawBisosCBMs/README.org).
A planted pointer leaf (cbmProc.spcs, at sys/cbm/collective/hereWeb/devpi/) subprocess-invokes the Capability Bundle Specification, devpi-cbs.pcs: the sboms, two units (devpi and the devpi-accounts oneshot), and the assembly step (devpi.here dns entry and nginx vhost).
Package Documentation At Github
The information below is a subset of the full of documentation for this bisos-pip package. More complete documentation is available at: https://github.com/bisos-pip/devpi-cs
Table of Contents TOC
-
Day-to-Day Admin: ``devpiAdmin.cs` <#day-to-day-admin-devpiadmincs>`__
-
The “secure it” layer: real passwords, HTTPS (no more –trusted-host), beyond loopback
Back into ``asc` once devpi-server accepts the setuptools there <#back-into-asc-once-devpi-server-accepts-the-setuptools-there>`__
Plant the CBM leaf in brorawBisos (``sys/cbm/collective/hereWeb/devpi/`), enabled <#plant-the-cbm-leaf-in-bro_rawbisos-syscbmcollectiveherewebdevpi-enabled>`__
The BISOS devpi Model
bisos.devpi packages devpi-server 6.20.3 and devpi-web 5.1.1 as a hereWeb CBS/CBM, on the pattern of bisos.kafka, bisos.prometheus, bisos.grafana and bisos.pypiserver (the cbm-package-authorship skill): one module of facts (devpiInfo.py), exact hash-pinned versions, config written only when absent, a read-only driftCheck, a server sbom and a usage sbom joined only by the CBS. It is for the rawBisos layer: minimal, convenient and insecure by design.
As of 2026-10-16 it is materialized on one host (Debian 13): both units active, uploads with twine and with devpi-client, installs with pip and browsing in devpi-web verified through http://devpi.here, driftCheck agrees.
The Logins and the Index
root / devpi — devpi’s superuser, set by devpi-init --root-passwd.
admin / devpi — the rawBisos convention (user admin, password the service’s name), the owner of the index ``admin/dev``: a volatile stage with no bases (uploads only, no mirror).
Both are created at materialization: root by devpi-init (once), admin and admin/dev by the devpi-accounts oneshot unit, after devpi starts. They cannot be created in the assemble step: cbs_materialize runs sbom, then assemble, then the units, so the server is not up during assemble. --restrict-modify root,admin lets only these two create users and indexes; devpi’s default lets anyone. Insecure by design; securing a host is a separate layer on top.
Why an Isolated venv
Python programs go in BISOS’s shared venv, /bisos/venv/asc, unless they have been shown not to work there. devpi-server 6.20.3 requires setuptools<=81 (and pyramid 2.1 <82); asc has setuptools 84.0.0, and installing devpi there would downgrade it. So devpi runs from /bisos/venv/isolated/devpiServer, with all 55 packages of its resolved set pinned with their sha256 (each checked against PyPI’s published digest; installed with pip --require-hashes --no-deps). Several wheels are binary: the set covers amd64 with Python 3.13. When devpi-server accepts the setuptools in asc, it moves back and this venv is deleted.
What Gets Installed, and Where
Every fact below lives in one place, py3/bisos/devpi/devpiInfo.py.
What |
Where |
Owner |
|---|---|---|
The devpi account |
uid/gid 507, from bisos.banna |
— |
devpi-server, devpi-web, set |
/bisos/venv /isolated/devpiServer |
the venv owner |
devpi-client (usage side) |
`` /bisos/pipx/bin/devpi`` |
pipx |
Server flags |
/etc/default/devpi (ARGS=) |
root:devpi 640 |
The accounts script |
/etc/de vpi/devpi-accounts.py |
root:devpi 640 |
Server state |
`` /var/lib/devpi/server`` |
devpi 750 |
ARGS sets --host 127.0.0.1 --port 24015 --threads 4 --outside-url http://devpi.here --restrict-modify root,admin. The EnvironmentFile is written only when absent; the accounts script is code and is rewritten by every sbom run. devpiAdmin.cs -i driftCheck reports the EnvironmentFile, the accounts script, the initialized server directory, both units and all 55 pins.
The 3 sboms and the 2 Units
sbom |
Installs |
Pulls in |
|---|---|---|
devpi-sbom.pcs |
account, isolated venv, config, devpi-init |
nothing |
devpiUsage-sbom.pcs |
devpi-client 7.3.0, through pipx |
nothing |
devpiCbs-sbom.pcs |
nothing of its own |
both |
Unit |
Runs |
After |
|---|---|---|
devpi-sysd.pcs |
devpi-server $ARGS (waitress inside) |
network |
dev pi-accounts-sysd.pcs |
oneshot: pyth on devpi-accounts.py |
devpi, Requires= |
Both run as User=devpi; logs go to journald. Port 24015 and devpi.here (127.0.22.117) come from bisos.banna.
Installation
The sources are at https://github.com/bisos-pip/devpi and the package is at https://pypi.org/project/bisos.devpi. Install with pip install bisos.devpi, or with pipx install bisos.devpi for the commands only: devpiAdmin.cs, quickDevpi.cs, devpi-assemble.cs, cbmProc-devpi.spcs. The planted .pcs files are invoked from py3/bin/.
Usage
Materialization
devpi-sbom.pcs -i sbom_fullUpdate # the server only
devpiUsage-sbom.pcs -i sbom_fullUpdate # the usage side only (devpi-client)
devpi-cbs.pcs -i cbs_materialize # both sboms + units + assemble
Using the Index
pip needs --trusted-host for an index on plain HTTP; every .here is HTTP.
pip install --index-url http://devpi.here/admin/dev/+simple/ --trusted-host devpi.here <package>
twine upload --repository-url http://devpi.here/admin/dev/ -u admin -p devpi dist/*
/bisos/pipx/bin/devpi use http://devpi.here/admin/dev
/bisos/pipx/bin/devpi login admin --password devpi
/bisos/pipx/bin/devpi upload # in a project
Day-to-Day Admin: devpiAdmin.cs
devpiAdmin.cs -i hostInfo # fqdn, listener, logins, venv, config/data paths
devpiAdmin.cs -i servicesInfo # links for operating the 2 units
devpiAdmin.cs -i indexInfo # pip, twine and devpi-client against admin/dev
devpiAdmin.cs -i driftCheck # read-only: config, accounts script, units, pins vs devpiInfo
quickDevpi.cs # the flat cheat sheet
Key Files
py3/bisos/devpi/devpiInfo.py — the single source of facts: the isolated venv and its hashed set (and why it is isolated), paths, port, logins, the generators of the EnvironmentFile and the accounts script, the install scripts, and the drift helpers.
py3/bin/devpi-cbs.pcs, cbmProc-devpi.spcs — the CBS and the CBM pointer.
py3/bin/devpi-sbom.pcs, devpiUsage-sbom.pcs, devpiCbs-sbom.pcs — the three sboms.
py3/bin/devpi-sysd.pcs, devpi-accounts-sysd.pcs — the two units.
py3/bin/devpi-assemble.cs, devpi-here-dns.pcs, devpi-wvd.pcs — assembly: dns and vhost.
py3/bin/devpiAdmin.cs, quickDevpi.cs — admin CS and cheat sheet.
py3/tests/verify.sh — smoke test of every command and of devpiInfo’s invariants.
Part of BISOS — ByStar Internet Services Operating System
Layered on top of Debian, BISOS (By* Internet Services Operating System) is a unified and universal framework for developing both internet services and software-service continuums that use internet services. See Bootstrapping ByStar, BISOS and Blee for getting started with BISOS.
BISOS is a foundation for The Libre-Halaal ByStar Digital Ecosystem which is described as a cure for losses of autonomy and privacy in a book titled: Nature of Polyexistentials
bisos.devpi is part of BISOS. It is a standalone package that can be used independently of the full BISOS environment.
Documentation and Blee-Panels
bisos.devpi is part of the ByStar Digital Ecosystem http://www.by-star.net. Its primary documentation is in the form of Blee-Panels, in ./panels; see file:./panels/bisos.devpi/_nodeBase_/fullUsagePanel-en.org for a starting point. It is best developed with Blee, the By* BISOS Libre-Halaal Emacs Environment.
Support
Planned Improvements
TODO The “secure it” layer: real passwords, HTTPS (no more –trusted-host), beyond loopback
TODO Back into asc once devpi-server accepts the setuptools there
TODO Plant the CBM leaf in brorawBisos (sys/cbm/collective/hereWeb/devpi/), enabled
Metadata
Release files for bisos.devpi 0.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 |
|---|---|---|---|---|
| bisos_devpi-0.1.tar.gz | 51.1 kB | Without provenance | Details for bisos_devpi-0.1.tar.gz |
Release files / bisos_devpi-0.1.tar.gz
| Download URL | bisos_devpi-0.1.tar.gz |
|---|---|
| Size | 51.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a2fce9ec343afcaa0d97f17278fb95eaf7e5d61d52c247225cdc0156ba8b1cd
|
|
BLAKE2b-256 checksum How to use checksums |
33294fb09d3f33c7dbd5f18fbbaf59db70a0fa9153fe6570dde22cf41ba2daa6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.2
|
Security for bisos.devpi 0.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.