Keeper PAM WebRTC for Python - A secure, stable, and high-performance Tube API for Python, providing WebRTC-based secure tunneling with enterprise-grade security and reliability optimizations.
Project description
keeper-pam-connections
Keeper PAM connection management monorepo - unified Python package for secure connection management.
Overview
This workspace provides a unified Python package (keeper-pam-connections) that aggregates multiple Rust-based connection management libraries. The architecture allows for easy extension with new protocol-specific crates while maintaining a single, cohesive Python API.
Architecture
keeper-pam-connections/
├── crates/
│ ├── keeper-pam-webrtc-rs/ # Core WebRTC tunneling library
│ ├── python-bindings/ # Unified Python package (aggregates all crates)
│ ├── guacr/ # Protocol handlers (aggregator)
│ ├── guacr-handlers/ # Handler trait definitions
│ ├── guacr-protocol/ # Guacamole protocol codec
│ ├── guacr-terminal/ # Terminal emulation
│ ├── guacr-ssh/ # SSH protocol handler
│ ├── guacr-telnet/ # Telnet protocol handler
│ ├── guacr-rdp/ # RDP protocol handler
│ ├── guacr-vnc/ # VNC protocol handler
│ ├── guacr-database/ # Database protocol handlers
│ ├── guacr-sftp/ # SFTP file transfer
│ ├── guacr-rbi/ # Remote Browser Isolation
│ └── guacr-threat-detection/ # AI threat detection
Distribution Channels
This monorepo supports multiple distribution channels for different use cases:
For Python Users
pip install keeper-pam-connections
import keeper_pam_connections
# Access WebRTC + protocol handlers
registry = keeper_pam_connections.PyTubeRegistry()
For Rust Users - Protocol Handlers Only
[dependencies]
guacr = { version = "1.1", features = ["ssh", "rdp", "vnc"] }
For Rust Users - WebRTC Tunneling
[dependencies]
keeper-pam-webrtc-rs = "2.0"
guacr = "1.1" # Optional, for built-in protocol handlers
Crates
keeper-pam-webrtc-rs
Core WebRTC-based secure tunneling library providing:
- Secure WebRTC data channel management
- Multi-protocol support (TCP tunnel, Guacamole, SOCKS5)
- High-performance frame processing (700K-2.5M frames/sec)
- Enterprise-grade stability and failure isolation
Documentation:
- Crate README
- Architecture Docs (workspace-level)
- Protocol Docs (crate-specific)
guacr (Protocol Handlers)
Protocol handlers for remote desktop access:
- SSH - Secure Shell (production-ready)
- Telnet - Telnet protocol
- RDP - Remote Desktop Protocol (production-ready with IronRDP)
- VNC - Virtual Network Computing
- Database - MySQL, PostgreSQL, MongoDB, Redis, Oracle, SQL Server, MariaDB
- SFTP - SSH File Transfer Protocol
- RBI - Remote Browser Isolation (Chrome/CDP)
Documentation:
python-bindings
Unified Python package that exposes all functionality through a single module. Combines WebRTC tunneling with protocol handlers for a complete solution.
Installation
From PyPI
pip install keeper-pam-connections
From Source
# Build all crates
cargo build --release
# Build Python package
cd crates/python-bindings
maturin develop --release
Development
Build All Crates
cargo build --release
Run All Tests
# Rust tests
cargo test --release
# Python tests
cd crates/python-bindings
python -m pytest tests/ -v
Add New Protocol Crate
- Create new crate in
crates/:
cargo new --lib crates/my-protocol-rs
- Add to workspace in root
Cargo.toml:
[workspace]
members = [
"crates/keeper-pam-webrtc-rs",
"crates/python-bindings",
"crates/my-protocol-rs" # Add here
]
- Implement Python registration function in your crate:
// crates/my-protocol-rs/src/python/mod.rs
pub fn register_my_protocol_module(py: Python<'_>, parent: &Bound<'_, PyModule>) -> PyResult<()> {
parent.add_class::<MyProtocolClass>()?;
// ... register your functionality
Ok(())
}
- Add dependency and registration in
crates/python-bindings/src/lib.rs:
#[pymodule]
fn keeper_pam_connections(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
keeper_pam_webrtc_rs::python::register_webrtc_module(py, m)?;
my_protocol_rs::python::register_my_protocol_module(py, m)?; // Add here
Ok(())
}
- Rebuild:
cd crates/python-bindings
maturin develop --release
Now your new functionality is available:
import keeper_pam_connections
# Use both WebRTC and your new protocol
Project Structure
- Root: Workspace configuration, shared dependencies
- crates/keeper-pam-webrtc-rs/: Core WebRTC library (pure Rust)
- crates/python-bindings/: Unified Python package (cdylib)
- .github/workflows/: CI/CD pipelines
- build_*.sh: Build scripts for various platforms
Key Features
- Unified Python API: Single import for all functionality
- Extensible Architecture: Easy to add new protocol crates
- High Performance: Sub-microsecond frame processing
- Enterprise Stability: Lock-free architecture, RAII resource management
- Cross-Platform: Linux, macOS, Windows, Alpine support
- Memory Safe: Rust-powered with comprehensive bounds checking
Documentation
📚 Quick Start
- Python Users: Python API Contract
- Architecture Overview: Architecture Explanation
- Testing Guide: Testing Strategy
🏗️ Architecture & Design
- Actor + DashMap + RAII - Registry concurrency architecture
- Failure Isolation - WebRTC isolation, circuit breakers
- Hot Path Optimizations - Performance details
- Performance Benchmarks - Measured results
🔧 Implementation Details
- Testing Strategy - Workspace-wide testing approach
- Protocol-Specific Docs - ICE, SOCKS5, WebSocket
Full documentation index: docs/README.md
License
MIT - See LICENSE for details.
Authors
Keeper Security Engineering engineering@keeper.io
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file keeper_pam_webrtc_rs-2.0.0.tar.gz.
File metadata
- Download URL: keeper_pam_webrtc_rs-2.0.0.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc751f264db41fabc85d697a49555a662f5a75732deed333801b5ef1a1020828
|
|
| MD5 |
c18f458db223761551e885cae79c7b30
|
|
| BLAKE2b-256 |
356cddcd7a10e5e8700175aaa429d6d4a09c530ab39e73c8452c450372195cfe
|
File details
Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-win_amd64.whl.
File metadata
- Download URL: keeper_pam_webrtc_rs-2.0.0-cp37-abi3-win_amd64.whl
- Upload date:
- Size: 5.7 MB
- Tags: CPython 3.7+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b89e0706eb85a2a8c57f0c2e1e355e4ff063eec9c30ffc710fefe6e589fe83d
|
|
| MD5 |
4a8c7eb8d8a413d5a9d9c9eb27feab79
|
|
| BLAKE2b-256 |
a4f9bc0ada26e4406267eacdb93fec03025822bcff472342a9f769a63b425f81
|
File details
Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: keeper_pam_webrtc_rs-2.0.0-cp37-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 5.2 MB
- Tags: CPython 3.7+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae36bbd66aa2e526a1720987cf4e4c3d1e29c0ebaa461b5b7c14b6a4e172fa2d
|
|
| MD5 |
b65fd29c92416da7860f09b198d093b8
|
|
| BLAKE2b-256 |
1e4545188a6a53c0023fa1a06ae25e55beb8bf54b05bcdc08ba965b6f114855a
|
File details
Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.7+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1d2bccc5f57c38a93f96ab1e243d63c7554a1075f8695da8a5d0293ef52150c
|
|
| MD5 |
c85add82e096475dce9d27a69eb78ddd
|
|
| BLAKE2b-256 |
fcc0b4fdb266824c391222dd554387da1af7e5ba92fbd27d734d39c358812f3f
|
File details
Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.7+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c7c4e9f519849e7dbe64b61bf4796f6e4aeffc51aa7e0b768001cccc6296cc3
|
|
| MD5 |
e14b873272f4f5f7684653afd1831ffc
|
|
| BLAKE2b-256 |
c00276abb944fd438da0184bbebf72fe6b56201fe18c1c448b1e4cd761ee9643
|
File details
Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 5.3 MB
- Tags: CPython 3.7+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22442a083461b5fe32d727cdb1b8c0691b1637f4ad029754341243460e29e12d
|
|
| MD5 |
1f347decb2e0a74b58f15a87fa0cb3c6
|
|
| BLAKE2b-256 |
d405a04c91c74084200298cab00f464427e12f6e55c2fc7a1184868465be51d8
|
File details
Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 5.5 MB
- Tags: CPython 3.7+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08f47020e8289ab7d3bb7edb6cb899f7763f2cc063444019ab989ebb1ed97ecf
|
|
| MD5 |
aaff9df550058571927c01e2b529aae4
|
|
| BLAKE2b-256 |
71a8b5ca9c462af565bb3ab9b4d9273fcb52f89b30c2b5662a3cbe706a527e0a
|