# 🛡️ Loxide Python/Rust/Oxide toolkit for secure, auditable, and automated Airlock agent and policy management. Designed for enterprise environments, it supports advanced policy workflows, device tracking, and terminal-based interaction. ![Python](https://img.shields.io/badge/python-3.10+-blue.svg) ![Rust](https://img.shields.io/badge/rust-backend-orange.svg) ![License](https://img.shields.io/badge/license-AGPL--3.0-green.svg) ![Textual](https://img.shields.io/badge/textual-6.5.0-purple.svg) --- ## 🚀 Features - 🔍 **Fuzzy Device Search** Quickly locate devices using partial or approximate matches with wildcard support (`*`, `?`). - 📦 **Batch Move Devices** Move multiple devices between groups or policies easily with multi-select and file import. - 🔄 **Toggle Enforcement/Audit Policies** Seamlessly switch devices between enforcement and audit modes. - 🕵️ **Device History Search** Track agent executions with configurable date ranges (1-365 days) and CSV export. - 🧰 **Prepare Policies for Enforcement** Multi-step wizard to validate and stage policies before pushing to enforcement. - 💤 **Find Quiet Hosts** Identify inactive devices ready for enforcement using Rust-powered analysis. - 🔐 **OTP Management** Generate, revoke, and monitor one-time passwords for agents. - 📋 **Server Log Viewer** Real-time server activity monitoring with DataTable display. - 🎛️ **Modern TUI** Full keyboard navigation with Textual framework, toast notifications, and color-coded results. --- ## 🧭 Roadmap - ✅ **Carbon Black-style Local Approval** Enable local user approvals for policy exceptions and enforcement actions. - 📊 **Audit Logging & Export** Add detailed logging and export capabilities for compliance and analysis. --- ## 📦 Installation ### Prerequisites - Python 3.10+ - Access to Airlock API - Network access to private PyPI server ### Install Dependencies ```bash pip install -r requirements.txt ``` ### Requirements ``` # Core TUI textual==6.5.0 # API and data handling requests==2.32.5 pandas==2.3.3 numpy==2.3.4 # Database pymongo==4.15.3 # Security cryptography==46.0.3 keyring==25.6.0 # Utilities python-dotenv==1.2.1 tqdm==4.67.1 urllib3==2.5.0 pyperclip==1.11.0 # Private package --extra-index-url https://git.racooncity.org/api/packages/brotoskyj/pypi/simple/ airlock_libs==5.2.1 ``` See also: [airlock_libs](https://git.racooncity.org/brotoskyj/-/packages/pypi/airlock-libs/) --- ## 📖 Usage ```bash python Loxide.py ``` ### Keyboard Shortcuts | Key | Action | |-----|--------| | `Tab` | Navigate between elements | | `Enter` | Select/Confirm | | `Escape` | Go back / Cancel | | `←` `→` | Navigate tabs | | `r` | Refresh (context-dependent) | | `e` | Export to CSV | | `q` | Quit application | --- ## 🏗️ Architecture ``` Loxide/ ├── Loxide.py # Main entry point ├── API.py # AirlockAPIWrapper ├── setup.py # Initialization & logging ├── configmanager.py # Config management │ ├── models/ # Data models ├── services/ # Business logic ├── utils/ # Helper functions │ └── TUI/ ├── Screens/ # Workflow screens │ ├── policyprepworkflowscreen.py │ ├── quietagentworkflowscreen.py │ ├── agentmoveoperations.py │ ├── otprevokescreen.py │ └── executionhistoryscreen.py │ └── Widgets/ # Reusable components ├── policyselector.py ├── multiagentselector.py └── serverlogwidget.py ``` --- ## 👥 Authors - **Brandon Wickline** - *Lead Python Developer* - **James Brotosky** - *Lead Rust Developer* --- ## 📜 License **Loxide** is licensed under the **GNU Affero General Public License v3.0**. You may copy, distribute, and modify the software under the terms of the AGPL-3.0 license. ``` Copyright (C) 2025 James Brotosky, Brandon Wickline This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ``` See the [LICENSE](LICENSE.md) file for full details, or visit [https://www.gnu.org/licenses/agpl-3.0.html](https://www.gnu.org/licenses/agpl-3.0.html)