Skip to main content

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:

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

  1. Create new crate in crates/:
cargo new --lib crates/my-protocol-rs
  1. Add to workspace in root Cargo.toml:
[workspace]
members = [
    "crates/keeper-pam-webrtc-rs",
    "crates/python-bindings",
    "crates/my-protocol-rs"  # Add here
]
  1. 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(())
}
  1. 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(())
}
  1. 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

🏗️ Architecture & Design

🔧 Implementation Details

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

keeper_pam_webrtc_rs-2.0.0.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

keeper_pam_webrtc_rs-2.0.0-cp37-abi3-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.7+Windows x86-64

keeper_pam_webrtc_rs-2.0.0-cp37-abi3-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.7+musllinux: musl 1.2+ x86-64

keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.28+ x86-64

keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_aarch64.whl (6.3 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.28+ ARM64

keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl (5.5 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

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

Hashes for keeper_pam_webrtc_rs-2.0.0.tar.gz
Algorithm Hash digest
SHA256 fc751f264db41fabc85d697a49555a662f5a75732deed333801b5ef1a1020828
MD5 c18f458db223761551e885cae79c7b30
BLAKE2b-256 356cddcd7a10e5e8700175aaa429d6d4a09c530ab39e73c8452c450372195cfe

See more details on using hashes here.

File details

Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for keeper_pam_webrtc_rs-2.0.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 6b89e0706eb85a2a8c57f0c2e1e355e4ff063eec9c30ffc710fefe6e589fe83d
MD5 4a8c7eb8d8a413d5a9d9c9eb27feab79
BLAKE2b-256 a4f9bc0ada26e4406267eacdb93fec03025822bcff472342a9f769a63b425f81

See more details on using hashes here.

File details

Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for keeper_pam_webrtc_rs-2.0.0-cp37-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ae36bbd66aa2e526a1720987cf4e4c3d1e29c0ebaa461b5b7c14b6a4e172fa2d
MD5 b65fd29c92416da7860f09b198d093b8
BLAKE2b-256 1e4545188a6a53c0023fa1a06ae25e55beb8bf54b05bcdc08ba965b6f114855a

See more details on using hashes here.

File details

Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c1d2bccc5f57c38a93f96ab1e243d63c7554a1075f8695da8a5d0293ef52150c
MD5 c85add82e096475dce9d27a69eb78ddd
BLAKE2b-256 fcc0b4fdb266824c391222dd554387da1af7e5ba92fbd27d734d39c358812f3f

See more details on using hashes here.

File details

Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for keeper_pam_webrtc_rs-2.0.0-cp37-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1c7c4e9f519849e7dbe64b61bf4796f6e4aeffc51aa7e0b768001cccc6296cc3
MD5 e14b873272f4f5f7684653afd1831ffc
BLAKE2b-256 c00276abb944fd438da0184bbebf72fe6b56201fe18c1c448b1e4cd761ee9643

See more details on using hashes here.

File details

Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22442a083461b5fe32d727cdb1b8c0691b1637f4ad029754341243460e29e12d
MD5 1f347decb2e0a74b58f15a87fa0cb3c6
BLAKE2b-256 d405a04c91c74084200298cab00f464427e12f6e55c2fc7a1184868465be51d8

See more details on using hashes here.

File details

Details for the file keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for keeper_pam_webrtc_rs-2.0.0-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 08f47020e8289ab7d3bb7edb6cb899f7763f2cc063444019ab989ebb1ed97ecf
MD5 aaff9df550058571927c01e2b529aae4
BLAKE2b-256 71a8b5ca9c462af565bb3ab9b4d9273fcb52f89b30c2b5662a3cbe706a527e0a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page