2024-05-24 17:26:37 -03:00
<p align="center">
2024-05-28 15:15:01 -03:00
<img src="https://nginx.gederico.dynu.net/images/CONNPY-resized.png" alt="App Logo">
2024-05-24 17:26:37 -03:00
</p>
2024-05-24 17:17:33 -03:00
2024-05-24 15:53:20 -03:00
# Connpy
2022-04-17 00:06:13 -03:00
[](https://pypi.org/pypi/connpy/)
[](https://pypi.org/pypi/connpy/)
[](https://github.com/fluzzi/connpy/blob/main/LICENSE)
[](https://pypi.org/pypi/connpy/)
2022-03-26 16:30:37 -03:00
2026-05-13 14:16:14 -03:00
**Connpy ** is a powerful Connection Manager and Network Automation Platform for Linux, Mac, and Docker. It provides a unified interface for **SSH, SFTP, Telnet, kubectl, Docker pods, and AWS SSM ** .
2024-07-15 15:38:01 -03:00
2026-05-13 14:16:14 -03:00
The v6 release introduces the **AI Copilot ** , an interactive terminal assistant that understands your network context and helps you manage your infrastructure more intelligently.
2022-03-26 16:30:37 -03:00
2023-12-06 17:46:10 -03:00
2026-05-13 14:16:14 -03:00
## 🤖 AI Copilot (New in v6)
The AI Copilot is deeply integrated into your terminal workflow:
- **Terminal Context Awareness**: The Copilot can "see" your screen output, helping you diagnose errors or analyze command results in real-time.
- **Hybrid Multi-Agent System**: Automatically escalates complex tasks between the **Network Engineer ** (execution) and the **Network Architect ** (strategy).
- **MCP Integration**: Dynamically load tools from external providers (6WIND, AWS, etc.) via the Model Context Protocol.
- **Interactive Chat**: Launch with `conn ai` for a collaborative troubleshooting session.
2024-05-28 15:15:01 -03:00
2026-05-13 14:16:14 -03:00
## Core Features
- **Multi-Protocol**: Native support for SSH, SFTP, Telnet, kubectl, Docker exec, and AWS SSM.
- **Context Management**: Set regex-based contexts to manage specific nodes across different environments (work, home, clients).
- **Advanced Inventory**:
- Organize nodes in folders (`@folder` ) and subfolders (`@subfolder@folder` ).
- Use Global Profiles (`@profilename` ) to manage shared credentials easily.
- Bulk creation, copying, moving, and export/import of nodes.
- **Modern UI**: High-performance terminal experience with `prompt-toolkit` , including:
- Fuzzy search integration with `fzf` .
- Advanced tab completion.
- Syntax highlighting and customizable themes.
- **Automation Engine**: Run parallel tasks and playbooks on multiple devices with variable support.
- **Plugin System**: Build and execute custom Python scripts locally or on a remote gRPC server.
- **gRPC Architecture**: Fully decoupled Client/Server model for distributed management.
- **Privacy & Sync**: Local-first encrypted storage (RSA/OAEP) with optional Google Drive backup.
2024-05-28 15:15:01 -03:00
2026-05-13 14:16:14 -03:00
## Installation
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
``` bash
pip install connpy
2023-12-14 16:56:59 -03:00
```
2026-05-13 14:16:14 -03:00
### Run it in Windows/Linux using Docker
``` bash
git clone https://github.com/fluzzi/connpy
cd connpy
docker compose build
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
# Run it like a native app (completely silent)
docker compose --log-level ERROR run --rm --remove-orphans connpy-app [ command]
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
# Pro Tip: Add this alias for a 100% native experience from any folder
alias conn = 'docker compose -f /path/to/connpy/docker-compose.yml --log-level ERROR run --rm --remove-orphans connpy-app'
2023-12-14 16:56:59 -03:00
```
2026-05-13 14:16:14 -03:00
---
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
## 🔒 Privacy & Integration
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
### Privacy Policy
Connpy is committed to protecting your privacy:
- **Local Storage**: All server addresses, usernames, and passwords are encrypted and stored **only ** on your machine. No data is transmitted to our servers.
- **Data Access**: Data is used solely for managing and automating your connections.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
### Google Integration
Used strictly for backup:
- **Backup**: Sync your encrypted configuration with your Google Drive account.
- **Scoped Access**: Connpy only accesses its own backup files.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
---
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
## Usage
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
``` bash
usage: conn [ -h] [ --add | --del | --mod | --show | --debug] [ node| folder] [ --sftp]
conn { profile,move,copy,list,bulk,export,import,ai,run,api,plugin,config,sync,context} ...
2025-08-04 11:34:22 -03:00
```
2026-05-13 14:16:14 -03:00
### Basic Examples:
``` bash
# Add a folder and subfolder
conn --add @office
conn --add @datacenter@office
2026-04-17 18:42:08 -03:00
2026-05-13 14:16:14 -03:00
# Add a node with a profile
conn --add server1@datacenter@office --profile @myuser
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
# Connect to a node (fuzzy match)
conn server1
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
# Start the AI Copilot
conn ai
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
# Run a command on all nodes in a folder
conn run @office "uptime"
2025-08-04 11:34:22 -03:00
```
2026-05-13 14:16:14 -03:00
---
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
## 🔌 Plugin System
Connpy supports a robust plugin architecture where scripts can run transparently on a remote gRPC server.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
### Structure
Plugins must be Python files containing:
- **Class `Parser` **: Defines `argparse` arguments.
- **Class `Entrypoint` **: Execution logic.
- **Class `Preload` **: (Optional) Hooks and modifications to the core app.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
See the [Plugin Requirements section ](#plugin-requirements-for-connpy ) for full technical details.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
---
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
## Plugin Requirements for Connpy
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
### Remote Plugin Execution
When Connpy operates in remote mode, plugins are executed **transparently on the server ** :
- The client automatically downloads the plugin source code (`Parser` class context) to generate the local `argparse` structure and provide autocompletion.
- The execution phase (`Entrypoint` class) is redirected via gRPC streams to execute in the server's memory.
- You can manage remote plugins using the `--remote` flag.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
### General Structure
- The plugin script must define specific classes:
1. **Class `Parser` ** : Handles `argparse.ArgumentParser` initialization.
2. **Class `Entrypoint` ** : Main execution logic (receives `args` , `parser` , and `connapp` ).
3. **Class `Preload` ** : (Optional) For modifying core app behavior or registering hooks.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
### Preload Modifications and Hooks
You can customize the behavior of core classes using hooks:
- **`modify(method)` **: Alter class instances (e.g., `connapp.config` , `connapp.ai` ).
- **`register_pre_hook(method)` **: Logic to run before a method execution.
- **`register_post_hook(method)` **: Logic to run after a method execution.
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
### Command Completion Support
Plugins can provide intelligent tab completion:
1. **Tree-based Completion (Recommended) ** : Define `_connpy_tree(info)` returning a navigation dictionary.
2. **Legacy Completion ** : Define `_connpy_completion(wordsnumber, words, info)` .
2025-08-04 11:34:22 -03:00
2026-05-13 14:16:14 -03:00
---
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
## ⚙️ gRPC Service Architecture
Connpy can operate in a decoupled mode:
1. **Start the API (Server) ** : `conn api -s 50051`
2. **Configure the Client ** :
```bash
conn config --service-mode remote
conn config --remote-host localhost:50051
` ``
All inventory management and execution will now happen on the server.
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
---
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
## 🐍 Automation Module (API)
You can use ` connpy` as a Python library for your own scripts.
2023-12-14 16:56:59 -03:00
2026-05-13 14:16:14 -03:00
### Basic Execution
` ``python
2022-04-04 11:40:51 -03:00
import connpy
2026-05-13 14:16:14 -03:00
router = connpy.node("uniqueName", "1.1.1.1", user="admin")
router.run(["show ip int brief"])
2022-03-26 16:30:37 -03:00
print(router.output)
` ``
2026-05-13 14:16:14 -03:00
### Parallel Tasks with Variables
2026-04-03 15:11:37 -03:00
` ``python
2023-05-05 13:41:32 -03:00
import connpy
2026-05-13 14:16:14 -03:00
config = connpy.configfile()
nodes = config.getitem("@office", ["router1", "router2"])
routers = connpy.nodes(nodes, config=config)
2023-05-05 13:41:32 -03:00
2026-05-13 14:16:14 -03:00
variables = {
"router1@office": {"id": "1"},
"__global__": {"mask": "255.255.255.0"}
}
routers.run(["interface lo{id}", "ip address 10.0.0.{id} {mask}"], variables)
2023-04-15 22:38:52 -03:00
` ``
2023-05-05 13:41:32 -03:00
2026-05-13 14:16:14 -03:00
### AI Programmatic Use
2026-04-17 18:42:08 -03:00
` ``python
import connpy
2026-05-13 14:16:14 -03:00
myai = connpy.ai(connpy.configfile())
response = myai.ask("What is the status of the BGP neighbors in the office?")
2023-05-05 13:41:32 -03:00
` ``
2026-05-13 14:16:14 -03:00
---
* For detailed developer notes and plugin hooks documentation, see the [Documentation](https://fluzzi.github.io/connpy/). *