pacli-tool


Namepacli-tool JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
SummaryA secure CLI to manage secrets locally with encryption, master password, and clipboard support.
upload_time2025-07-14 10:37:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseMIT License Copyright (c) 2025 Mobarak Hosen Shakil Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords cli secrets encryption password token clipboard security
VCS
bugtrack_url
requirements cffi click cryptography pycparser pyperclip
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![pacli-logo](https://github.com/user-attachments/assets/742d776d-107a-495e-8bcf-5f68f25a087f)

___

# 🔐 pacli - Secrets Management CLI

[![Build Status](https://github.com/imshakil/pacli/actions/workflows/release.yml/badge.svg)](https://github.com/imshakil/pacli/actions)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/imShakil/pacli/main.svg)](https://results.pre-commit.ci/latest/github/imShakil/pacli/main)
[![PyPI version](https://img.shields.io/pypi/v/pacli-tool.svg)](https://pypi.org/project/pacli-tool/)
[![PyPI Downloads](https://static.pepy.tech/badge/pacli-tool)](https://pepy.tech/projects/pacli-tool)
[![Python Versions](https://img.shields.io/pypi/pyversions/pacli-tool.svg)](https://pypi.org/project/pacli-tool/)
[![License](https://img.shields.io/github/license/imshakil/pacli)](LICENSE)
[![security:bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/imShakil/pacli)

pacli is a simple, privacy-focused CLI tool for managing your secrets locally. Unlike online password managers, pacli keeps your sensitive information on your device, reducing the risk of leaks from server breaches or hacks.

## Features

- Securely store and manage secrets locally
- Master password protection
- Support separate options for token, password, and SSH connections
- Add, retrieve, update, and delete secrets
- Copy secrets directly to your clipboard
- SSH connection management with key file support
- Export list of secrets into JSON or CSV file
- Easy-to-use command-line interface

## Installation

```sh
pip install pacli-tool
```

## Usage

To see all available commands and options:

```sh
pacli --help
```

### Common Commands

| Command                | Description                                      |
|------------------------|--------------------------------------------------|
| `init`                 | Initialize pacli and set a master password       |
| `add`                  | Add a secret with a label                        |
| `get`                  | Retrieve secrets by label                        |
| `get-by-id`            | Retrieve a secret by its ID                      |
| `update`               | Update old secret by label                       |
| `update-by-id`         | Update old secret by its ID                      |
| `list`                 | List all saved secrets                           |
| `delete`               | Delete a secret by label                         |
| `delete-by-id`         | Delete a secret by its ID                        |
| `ssh`                  | Connect to SSH server using saved credentials    |
| `change-master-key`    | Change the master password without losing data   |
| `export`               | Export secrets to JSON or CSV format             |
| `version`              | Show the current version of pacli                |

### Examples

#### Adding and Retrieving Secrets

```sh
# Initialize pacli (run once)
pacli init

# Add a password
pacli add --pass github

# Add a token
pacli add --token api-key

# Add SSH connection
pacli add --ssh ec2-vm user:192.168.1.100

# Add SSH connection with key file
pacli add --ssh ec2-vm user:192.168.1.100 --key-path ~/.ssh/id_rsa

# Retrieve a secret
pacli get github

# Connect via SSH
pacli ssh ec2-vm

# Export secrets to JSON
pacli export --format json --output my_secrets.json

# Export secrets to CSV
pacli export --format csv --output my_secrets.csv
```

## Display Format

- Credentials are shown as: `username:password`
- SSH connections are shown as: `user:ip` or `user:ip (Key: /path/to/key)`

## Copy to Clipboard

To copy a secret directly to your clipboard, use the `--clip` option:

```sh
pacli get google --clip
```

For more information, use `pacli --help` or see the documentation.

## Tips

### Avoid Master Password Prompts

To avoid entering your master password repeatedly, you can set it as an environment variable:

```sh
# For current session only
export PACLI_MASTER_PASSWORD="your-master-password"

# Or add to your shell profile for permanent use
echo 'export PACLI_MASTER_PASSWORD="your-master-password"' >> ~/.bashrc  # For bash
echo 'export PACLI_MASTER_PASSWORD="your-master-password"' >> ~/.zshrc   # For zsh
```

**Security Note:** Adding the password to your shell profile makes it persistent but less secure. Use the session-only approach for better security.

## Demo

![demo](https://github.com/user-attachments/assets/be7ea309-9f5c-4f5a-a4f3-fdf065577d8b)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pacli-tool",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "cli, secrets, encryption, password, token, clipboard, security",
    "author": null,
    "author_email": "Mobarak Hosen Shakil <mh.ice.iu@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/30/37/6de561e519fd7e739af7edec7094ae3689a1f940e078478aa3eb457e9525/pacli_tool-1.1.0.tar.gz",
    "platform": null,
    "description": "![pacli-logo](https://github.com/user-attachments/assets/742d776d-107a-495e-8bcf-5f68f25a087f)\n\n___\n\n# \ud83d\udd10 pacli - Secrets Management CLI\n\n[![Build Status](https://github.com/imshakil/pacli/actions/workflows/release.yml/badge.svg)](https://github.com/imshakil/pacli/actions)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/imShakil/pacli/main.svg)](https://results.pre-commit.ci/latest/github/imShakil/pacli/main)\n[![PyPI version](https://img.shields.io/pypi/v/pacli-tool.svg)](https://pypi.org/project/pacli-tool/)\n[![PyPI Downloads](https://static.pepy.tech/badge/pacli-tool)](https://pepy.tech/projects/pacli-tool)\n[![Python Versions](https://img.shields.io/pypi/pyversions/pacli-tool.svg)](https://pypi.org/project/pacli-tool/)\n[![License](https://img.shields.io/github/license/imshakil/pacli)](LICENSE)\n[![security:bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/imShakil/pacli)\n\npacli is a simple, privacy-focused CLI tool for managing your secrets locally. Unlike online password managers, pacli keeps your sensitive information on your device, reducing the risk of leaks from server breaches or hacks.\n\n## Features\n\n- Securely store and manage secrets locally\n- Master password protection\n- Support separate options for token, password, and SSH connections\n- Add, retrieve, update, and delete secrets\n- Copy secrets directly to your clipboard\n- SSH connection management with key file support\n- Export list of secrets into JSON or CSV file\n- Easy-to-use command-line interface\n\n## Installation\n\n```sh\npip install pacli-tool\n```\n\n## Usage\n\nTo see all available commands and options:\n\n```sh\npacli --help\n```\n\n### Common Commands\n\n| Command                | Description                                      |\n|------------------------|--------------------------------------------------|\n| `init`                 | Initialize pacli and set a master password       |\n| `add`                  | Add a secret with a label                        |\n| `get`                  | Retrieve secrets by label                        |\n| `get-by-id`            | Retrieve a secret by its ID                      |\n| `update`               | Update old secret by label                       |\n| `update-by-id`         | Update old secret by its ID                      |\n| `list`                 | List all saved secrets                           |\n| `delete`               | Delete a secret by label                         |\n| `delete-by-id`         | Delete a secret by its ID                        |\n| `ssh`                  | Connect to SSH server using saved credentials    |\n| `change-master-key`    | Change the master password without losing data   |\n| `export`               | Export secrets to JSON or CSV format             |\n| `version`              | Show the current version of pacli                |\n\n### Examples\n\n#### Adding and Retrieving Secrets\n\n```sh\n# Initialize pacli (run once)\npacli init\n\n# Add a password\npacli add --pass github\n\n# Add a token\npacli add --token api-key\n\n# Add SSH connection\npacli add --ssh ec2-vm user:192.168.1.100\n\n# Add SSH connection with key file\npacli add --ssh ec2-vm user:192.168.1.100 --key-path ~/.ssh/id_rsa\n\n# Retrieve a secret\npacli get github\n\n# Connect via SSH\npacli ssh ec2-vm\n\n# Export secrets to JSON\npacli export --format json --output my_secrets.json\n\n# Export secrets to CSV\npacli export --format csv --output my_secrets.csv\n```\n\n## Display Format\n\n- Credentials are shown as: `username:password`\n- SSH connections are shown as: `user:ip` or `user:ip (Key: /path/to/key)`\n\n## Copy to Clipboard\n\nTo copy a secret directly to your clipboard, use the `--clip` option:\n\n```sh\npacli get google --clip\n```\n\nFor more information, use `pacli --help` or see the documentation.\n\n## Tips\n\n### Avoid Master Password Prompts\n\nTo avoid entering your master password repeatedly, you can set it as an environment variable:\n\n```sh\n# For current session only\nexport PACLI_MASTER_PASSWORD=\"your-master-password\"\n\n# Or add to your shell profile for permanent use\necho 'export PACLI_MASTER_PASSWORD=\"your-master-password\"' >> ~/.bashrc  # For bash\necho 'export PACLI_MASTER_PASSWORD=\"your-master-password\"' >> ~/.zshrc   # For zsh\n```\n\n**Security Note:** Adding the password to your shell profile makes it persistent but less secure. Use the session-only approach for better security.\n\n## Demo\n\n![demo](https://github.com/user-attachments/assets/be7ea309-9f5c-4f5a-a4f3-fdf065577d8b)\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Copyright (c) 2025 Mobarak Hosen Shakil\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "A secure CLI to manage secrets locally with encryption, master password, and clipboard support.",
    "version": "1.1.0",
    "project_urls": {
        "Homepage": "https://github.com/imshakil/pacli",
        "Issues": "https://github.com/imshakil/pacli/issues"
    },
    "split_keywords": [
        "cli",
        " secrets",
        " encryption",
        " password",
        " token",
        " clipboard",
        " security"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "91d7a090264168efd606f32dba2a446b9278eaf1c4faeab8a9d671e0b41dc67a",
                "md5": "4143fb49043bbcb2d0002cb0d87c3dec",
                "sha256": "61abe2d8b65564787268c38884be794cf7bd254a6c091807899fb7594b7e7c1b"
            },
            "downloads": -1,
            "filename": "pacli_tool-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4143fb49043bbcb2d0002cb0d87c3dec",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 13482,
            "upload_time": "2025-07-14T10:37:29",
            "upload_time_iso_8601": "2025-07-14T10:37:29.353485Z",
            "url": "https://files.pythonhosted.org/packages/91/d7/a090264168efd606f32dba2a446b9278eaf1c4faeab8a9d671e0b41dc67a/pacli_tool-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "30376de561e519fd7e739af7edec7094ae3689a1f940e078478aa3eb457e9525",
                "md5": "bd7370de71551e62e6f8667bdae2219d",
                "sha256": "461dc70ef79332755e22f4cea393b77158e43d84f6a169f2f2c4231e7a308c02"
            },
            "downloads": -1,
            "filename": "pacli_tool-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "bd7370de71551e62e6f8667bdae2219d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 36199,
            "upload_time": "2025-07-14T10:37:30",
            "upload_time_iso_8601": "2025-07-14T10:37:30.660078Z",
            "url": "https://files.pythonhosted.org/packages/30/37/6de561e519fd7e739af7edec7094ae3689a1f940e078478aa3eb457e9525/pacli_tool-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-14 10:37:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "imshakil",
    "github_project": "pacli",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "cffi",
            "specs": [
                [
                    "==",
                    "1.17.1"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "==",
                    "8.2.1"
                ]
            ]
        },
        {
            "name": "cryptography",
            "specs": [
                [
                    "==",
                    "45.0.5"
                ]
            ]
        },
        {
            "name": "pycparser",
            "specs": [
                [
                    "==",
                    "2.22"
                ]
            ]
        },
        {
            "name": "pyperclip",
            "specs": [
                [
                    "==",
                    "1.9.0"
                ]
            ]
        }
    ],
    "lcname": "pacli-tool"
}
        
Elapsed time: 0.67845s