Rivet
An OpenVPN control plane for restricted IoT and edge networks. Rivet provides a REST API, web UI, and private VPN agent for client certificates, fixed addresses, routes, and controlled access between VPN peers.
Install
Both deployment options use an unprivileged API and a separate privileged agent on Linux. OpenVPN continues forwarding traffic during an API outage.
| Deployment | Packages or images | Guide |
|---|---|---|
| Native Linux | sciaiot-rivet[api] and sciaiot-rivet-agent in separate Python 3.14+ environments |
Native installation |
| Docker Compose | rivet-api, rivet-agent, rivet-openvpn, rivet-web from your registry |
Container deployment |
The API command is rivet; the agent command is rivet-agent. Do not install
the unrelated PyPI package rivet. Installing a wheel alone does not provision
OpenVPN or the browser UI; follow the complete installation guide.
Builds and deployments are provider-independent. The supplied authenticated API/UI configuration uses Microsoft Entra ID. Azure Blob Storage is optional. SQLite is the reference database; extras support MySQL and PostgreSQL. See configuration and production deployment for identity, HTTPS, network, and release requirements.
Package/image publication and deployment acceptance requirements are tracked in release readiness.
Use
Start with the user guide to register clients, assign addresses, distribute credentials, and manage restricted networks. A device AccessGrant controls application visibility; a restricted network controls VPN traffic. They are separate policies.
The API exposes its schema at /openapi.json and interactive reference at
/docs (under /api through Nginx). Management calls require the appropriate
verified permission. See API authorization and agent mapping.
For existing VPN installations, use the migration toolkit. Whole-application backups use the backup and recovery section.
Develop
See local development for Python setup, the authenticated API/agent stack, and isolated UI testing. Frontend commands and implementation conventions live in frontend/README.md.
From an environment with requirements-dev.txt installed:
ruff format --check .
ruff check .
mypy .
pytest --cov=src/sciaiot/rivet --cov-report=term-missing
Ordinary tests mock privileged operations and cloud services. Live VPN tests are explicitly invoked on disposable Linux infrastructure; see the integration harness guide.
The documentation index links current operational and engineering references, including the architecture.
Metadata
Release files for sciaiot-rivet 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sciaiot_rivet-0.1.7.tar.gz | 272.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sciaiot_rivet-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 461.7 kB
Release files / sciaiot_rivet-0.1.7.tar.gz
| Download URL | sciaiot_rivet-0.1.7.tar.gz |
|---|---|
| Size | 272.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bce9e6f688bbe7c0d31843b3bd95c93175c5261251790ce0f58fa2a5d4e07c60
|
|
BLAKE2b-256 checksum How to use checksums |
3baf94b699722481c17ef015b2fdef2624bb27967ba1a7becea999dfcbb00c10
|
| 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 14, 2026.
Transparency logRelease files / sciaiot_rivet-0.1.7-py3-none-any.whl
| Download URL | sciaiot_rivet-0.1.7-py3-none-any.whl |
|---|---|
| Size | 189.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
290ebc7b45860fface80862795ce61821be118e60d25901b02c9c6dd3385484a
|
|
BLAKE2b-256 checksum How to use checksums |
9e8ada78cac7fb552d75e8be3af59eacd67d5a9b591bf462413efc0b5222eb85
|
| 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 14, 2026.
Transparency log