pamela
PAM interface using ctypes
Decision gist · record as of 2026-08-14
Yes, if you need PAM authentication in a Python application on Linux/Unix and accept dormant maintenance. The package is stable (no known vulnerabilities, low install friction, permissive license), but the 735-day gap since last commit means security or compatibility fixes are unlikely to arrive quickly. Suitable for production use in established deployments; less suitable if you anticipate needing active upstream support.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires PAM libraries installed on the system (libpam on Linux); will not work on Windows or systems without PAM support.
- Low install friction with no runtime dependencies.
- Maintenance is dormant—last release was 2024-08-09 but no commits in 735 days, though the repository remains active and the package was merged from two abandoned projects to address a specific need.
License · maintenance · safety
MIT (permissive) — MIT license is permissive, allowing commercial and private use with minimal restrictions, making it safe for most deployment contexts.
last release 2024-08-09 (735 days) · last repo commit 2024-12-18 · 1 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 380,725 downloads/mo, #7,102 on PyPI
Alternatives
Verify before relying
pip install pamela
import pamela
# Authenticate a user
try:
pamela.authenticate('username', 'password')
except pamela.PamError as e:
print(f"Authentication failed: {e}")- Whether the package works with modern PAM implementations and recent Linux distributions
- Compatibility with Python versions beyond what the fact sheet specifies
- Whether ctypes bindings remain stable across system PAM library updates
What it is and what it does
Pamela is a ctypes-based wrapper around the PAM (Pluggable Authentication Modules) system, allowing Python code to authenticate users, open sessions, and manage credentials on Linux and Unix systems. It consolidates functionality from two abandoned projects, adding Python 3 support and more comprehensive PAM call coverage, including session management and informative error handling via PamError exceptions.
The package is used primarily in server contexts where system-level authentication is needed—notably in JupyterHub for user login. It has no external Python dependencies, making it lightweight to install, though it requires the PAM development libraries present on the host system.
Use it for
- Authenticate users against the system PAM database in web applications or services that need OS-level user validation.
- Manage user sessions in multi-user server environments like JupyterHub where credential handling must integrate with system authentication.
- Implement Kerberos or other PAM-backed authentication mechanisms by resetting credentials after authentication.
- Build system administration tools that need to verify user credentials programmatically without spawning external processes.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need PAM authentication in a Python application on Linux/Unix and accept dormant maintenance.
The package is stable (no known vulnerabilities, low install friction, permissive license), but the 735-day gap since last commit means security or compatibility fixes are unlikely to arrive quickly. Suitable for production use in established deployments; less suitable if you anticipate needing active upstream support.
Install
pamela on PyPI
Before you install
Low install friction with no runtime dependencies. Maintenance is dormant—last release was 2024-08-09 but no commits in 735 days, though the repository remains active and the package was merged from two abandoned projects to address a specific need.
Requires PAM libraries installed on the system (libpam on Linux); will not work on Windows or systems without PAM support.
License in practice
MIT license is permissive, allowing commercial and private use with minimal restrictions, making it safe for most deployment contexts.
Quickstart
pip install pamela
import pamela
# Authenticate a user
try:
pamela.authenticate('username', 'password')
except pamela.PamError as e:
print(f"Authentication failed: {e}")
Verify before relying
- Whether the package works with modern PAM implementations and recent Linux distributions
- Compatibility with Python versions beyond what the fact sheet specifies
- Whether ctypes bindings remain stable across system PAM library updates
Package facts
| License | MIT permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Dormant 735 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 380,725 / month, #7,102 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: MacOS :: MacOS XOperating System :: POSIX :: LinuxProgramming Language :: PythonTopic :: Software Development :: Libraries :: Python ModulesTopic :: System :: Systems Administration :: Authentication/Directory |
Evidence: pamela-1.2.0-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “pluggable authentication modules”
- pamelaPamela provides a Python interface to the Linux/Unix PAM (Pluggable…
- python-pamPython wrapper for Linux PAM (Pluggable Authentication Modules) that…
- django-otpAdds one-time password (OTP) support to Django applications, enabling…
Give your agent the search over MCP, or paste the wish link into any chat.
More Python Modules packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
PyYAML parses and emits YAML 1.1 data format, enabling serialization and deserialization of configuration files and Python objects to and from human-readable YAML text.
Pydantic validates Python data structures against type hints, coercing and checking input at runtime to ensure it matches a declared schema.
Provides reusable metadata objects for use with PEP-593 `typing.Annotated` to express common constraints like bounds, collection sizes, and predicates on types.
Install it if you use or build libraries that need to express type constraints in a standardized, inspectable way—or if you want to annotate your own types with…
Provides runtime tools to inspect and introspect Python type annotations, enabling programmatic examination of type hints at execution time.
See also python-pam · kerberos · pykerberos · requests-kerberos · requests-negotiate-sspi · google-cloud-privilegedaccessmanager · python-kadmin-rs · requests-gssapi · pyobjc-framework-AuthenticationServices · pyseccomp