Metadata-Version: 2.4
Name: velocitycmdb
Version: 0.10.0
Summary: Tactical network CMDB with automated discovery, change detection, and operational intelligence
Home-page: https://github.com/scottpeterman/velocitycmdb
Author: Scott Peterman
Author-email: scottpeterman@gmail.com
Project-URL: Documentation, https://github.com/scottpeterman/velocitycmdb/blob/main/README.md
Project-URL: Source, https://github.com/scottpeterman/velocitycmdb
Project-URL: Tracker, https://github.com/scottpeterman/velocitycmdb/issues
Keywords: network,cmdb,discovery,monitoring,cisco,arista,juniper,netbox,automation,network-management,configuration-management,network-discovery,lldp,cdp,textfsm
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Information Technology
Classifier: Topic :: System :: Networking
Classifier: Topic :: System :: Networking :: Monitoring
Classifier: Topic :: System :: Systems Administration
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Classifier: Environment :: Web Environment
Classifier: Framework :: Flask
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: Flask>=3.1.2
Requires-Dist: Flask-SocketIO>=5.5.1
Requires-Dist: Werkzeug>=3.1.3
Requires-Dist: Jinja2>=3.1.6
Requires-Dist: MarkupSafe>=3.0.3
Requires-Dist: itsdangerous>=2.2.0
Requires-Dist: blinker>=1.9.0
Requires-Dist: python-socketio>=5.14.3
Requires-Dist: python-engineio>=4.12.3
Requires-Dist: bidict>=0.23.1
Requires-Dist: simple-websocket>=1.1.0
Requires-Dist: click>=8.3.0
Requires-Dist: paramiko>=4.0.0
Requires-Dist: netmiko>=4.6.0
Requires-Dist: napalm>=5.1.0
Requires-Dist: napalm-procurve>=0.6.0
Requires-Dist: ncclient>=0.7.0
Requires-Dist: pyserial>=3.5
Requires-Dist: scp>=0.15.0
Requires-Dist: textfsm>=2.1.0
Requires-Dist: ntc_templates>=8.1.0
Requires-Dist: ttp>=0.10.0
Requires-Dist: ttp-templates>=0.3.7
Requires-Dist: netutils>=1.15.1
Requires-Dist: junos-eznc>=2.7.5
Requires-Dist: lxml>=6.0.2
Requires-Dist: pyeapi>=1.0.4
Requires-Dist: pynxos>=0.0.5
Requires-Dist: networkx>=3.4
Requires-Dist: n2g>=0.3.0
Requires-Dist: matplotlib>=3.10.7
Requires-Dist: secure-cartography>=0.9.5
Requires-Dist: python-igraph>=1.0.0
Requires-Dist: igraph>=1.0.0
Requires-Dist: PyYAML>=6.0.3
Requires-Dist: ruamel.yaml>=0.18.16
Requires-Dist: ruamel.yaml.clib>=0.2.14
Requires-Dist: yamlordereddictloader>=0.4.2
Requires-Dist: python-dotenv>=1.2.1
Requires-Dist: openpyxl>=3.1.5
Requires-Dist: et_xmlfile>=2.0.0
Requires-Dist: bcrypt>=5.0.0
Requires-Dist: cryptography>=46.0.3
Requires-Dist: PyNaCl>=1.6.0
Requires-Dist: ldap3>=2.9.1
Requires-Dist: requests>=2.32.5
Requires-Dist: requests-toolbelt>=1.0.0
Requires-Dist: urllib3>=2.5.0
Requires-Dist: certifi>=2025.10.5
Requires-Dist: h11>=0.16.0
Requires-Dist: wsproto>=1.2.0
Requires-Dist: netaddr>=1.3.0
Requires-Dist: pillow>=12.0.0
Requires-Dist: cairocffi>=1.7.1
Requires-Dist: CairoSVG>=2.8.2
Requires-Dist: contourpy>=1.3.0
Requires-Dist: cycler>=0.12.1
Requires-Dist: fonttools>=4.60.1
Requires-Dist: kiwisolver>=1.4.9
Requires-Dist: pyparsing>=3.2.5
Requires-Dist: numpy>=2.2.6
Requires-Dist: python-dateutil>=2.9.0.post0
Requires-Dist: six>=1.17.0
Requires-Dist: future>=1.0.0
Requires-Dist: func_timeout>=4.3.5
Requires-Dist: transitions>=0.9.3
Requires-Dist: texttable>=1.7.0
Requires-Dist: docutils>=0.22.3
Requires-Dist: markdown-it-py>=4.0.0
Requires-Dist: mdurl>=0.1.2
Requires-Dist: Pygments>=2.19.2
Requires-Dist: rich>=14.2.0
Requires-Dist: bleach>=6.3.0
Requires-Dist: defusedxml>=0.7.1
Requires-Dist: nh3>=0.3.2
Requires-Dist: cssselect2>=0.8.0
Requires-Dist: tinycss2>=1.4.0
Requires-Dist: webencodings>=0.5.1
Requires-Dist: cffi>=2.0.0
Requires-Dist: pycparser>=2.23
Requires-Dist: pyasn1>=0.6.1
Requires-Dist: setuptools>=80.9.0
Requires-Dist: wheel>=0.45.1
Requires-Dist: packaging>=25.0
Requires-Dist: pkginfo>=1.12.1.2
Requires-Dist: readme_renderer>=44.0
Requires-Dist: rfc3986>=2.0.0
Requires-Dist: importlib_metadata>=8.7.0
Requires-Dist: importlib_resources>=6.5.2
Requires-Dist: zipp>=3.23.0
Requires-Dist: typing_extensions>=4.15.0
Requires-Dist: jaraco.classes>=3.4.0
Requires-Dist: jaraco.context>=6.0.1
Requires-Dist: jaraco.functools>=4.3.0
Requires-Dist: more-itertools>=10.8.0
Requires-Dist: invoke>=2.2.1
Requires-Dist: keyring>=25.6.0
Requires-Dist: pywin32>=311; sys_platform == "win32"
Requires-Dist: pywin32-ctypes>=0.2.3; sys_platform == "win32"
Requires-Dist: WMI>=1.5.1; sys_platform == "win32"
Requires-Dist: colorama>=0.4.6; sys_platform == "win32"
Requires-Dist: PyQt6>=6.10.0
Requires-Dist: PyQt6-Qt6>=6.10.0
Requires-Dist: PyQt6-WebEngine>=6.10.0
Requires-Dist: PyQt6-WebEngine-Qt6>=6.10.0
Requires-Dist: PyQt6_sip>=13.10.2
Provides-Extra: windows
Requires-Dist: pywin32>=311; extra == "windows"
Requires-Dist: WMI>=1.5.1; extra == "windows"
Provides-Extra: linux
Requires-Dist: python-pam>=2.0.2; extra == "linux"
Provides-Extra: all
Requires-Dist: pywin32>=311; sys_platform == "win32" and extra == "all"
Requires-Dist: WMI>=1.5.1; sys_platform == "win32" and extra == "all"
Requires-Dist: python-pam>=2.0.2; sys_platform == "linux" and extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=5.0.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "docs"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# VelocityCMDB

**Tactical, highly portable network CMDB with automated discovery, change detection, and operational intelligence for Windows, Mac or Linux**

## ⚠️ Important Notice
VelocityCMDB is currently in Proof of Concept (POC) stage and is under active development. While functional, it is not yet recommended for production environments. The codebase and features are subject to significant changes. Feel free to test, contribute, and provide feedback, but please exercise caution in production or security-critical environments.

[![Python Version](https://img.shields.io/badge/python-3.9%2B-blue)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-GPLv3-green.svg)](LICENSE)
[![PyPI](https://img.shields.io/badge/pypi-coming%20soon-orange)](https://pypi.org/project/velocitycmdb/)

> **New site onboarded in under 1 hour** - Automated discovery, configuration capture, and topology visualization out of the box.

![Secure Cartography Visualization](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/sc_light.png)

---

## What is VelocityCMDB?

VelocityCMDB is a **pip-installable network CMDB** that combines asset management, automated discovery, configuration tracking, and operational intelligence in a unified platform.

**Key Features:**
- 🔍 **Automated Discovery** - LLDP/CDP-based topology mapping
- 📊 **Device Inventory** - Complete asset tracking with components, sites, vendors, roles
- 🔄 **Change Detection** - Real-time configuration and other cli captured information monitoring with severity classification
- 🗺️ **Topology Visualization** - Interactive maps with export to GraphML/DrawIO/PNG
- 🔍 **Operational Search** - Full-text search across 8,891+ captures (Config, Arp, Mac, Inventory and more)
- 📝 **Integrated Documentation** - Wiki-style notes linked to devices
- 🖥️ **Web SSH Terminal** - Browser-based device access with authentication
- 👥 **Multi-Auth** - LDAP, local database, and OS authentication

**Why VelocityCMDB?**
- ⚡ **Fast Setup** - `pip install velocitycmdb && init command, then start the app`
- 🎯 **Wizard-Driven** - Discovery and collection wizards guide deployment
- 🏢 **Enterprise Friendly** - Basic Role-based access, audit logging, backup/restore
- 🔧 **Engineer-Focused** - CLI tools, REST API, and scriptable workflows, run locally or on a server

---

## Quick Start

### Installation

```bash
# Install from PyPI (coming soon)
pip install velocitycmdb

# Initialize databases and directories
python -m velocitycmdb.cli init

# Create first admin user
python -m velocitycmdb.cli create-admin

# Start the web server
python -m velocitycmdb.app.run
```

Access the dashboard at `http://localhost:8086`

### Onboard Your First Site

**Step 1: Run Discovery Wizard** (15 minutes)
- Navigate to Discovery → Wizard
- Enter seed device credentials
- Let LLDP/CDP discover your network
- Review topology map

**Step 2: Run Collection Wizard** (30 minutes)
- Select discovered devices
- Choose capture types (configs, routes, MACs, etc.)
- Execute concurrent collection
- Review capture status

**Total Time: ~45 minutes** ✅

---

## Architecture

VelocityCMDB is built on proven open-source components:

**Foundation:**
- [Secure Cartography](https://github.com/scottpeterman/secure_cartography) - Network discovery (134⭐, 21 forks)
- Paramiko - SSH automation
- TextFSM - Multi-vendor parsing (100+ templates)
- Flask + SocketIO - Real-time web interface
- SQLite FTS5 - Full-text search

**Novel Contributions:**
- Pip-installable packaging with CLI entry points
- Wizard-driven workflows for discovery and collection
- Component-level hardware tracking with normalization
- Integrated knowledge system with device associations
- Dual-database architecture (assets + ARP tracking)
- Configuration change detection with content hashing

**Structure:**
```
velocitycmdb/
├── cli.py                 # Command-line interface
├── app/                   # Flask web application
│   ├── blueprints/       # 13+ modular features
│   └── templates/        # Material Design 3 UI
├── services/             # Business logic
│   ├── discovery.py      # LLDP-based topology
│   ├── collection.py     # Data capture orchestration
│   └── fingerprint.py    # Device classification
├── db/                   # Database management
└── pcng/                 # Capture engine (100+ job templates)
```

---

## Features

### Asset Management
- **Devices** - Full CRUD with sites, vendors, roles, stacks
- **Components** - Hardware inventory (1,684 components tracked)
- **Sites/Vendors/Roles** - Complete taxonomy management
- **Bulk Operations** - Preview-commit workflow for batch changes

### Discovery & Topology
- **Automated Discovery** - LLDP/CDP-based network mapping
- **Topology Maps** - Interactive visualization with export
- **Secure Cartography** - Enhanced topology with vendor icons
- **Multiple Formats** - GraphML (yEd), DrawIO, PNG, SVG

### Operational Intelligence
- **Capture Search** - Full-text search across configurations
- **Change Detection** - Real-time config monitoring with diffs
- **Coverage Analysis** - Gap identification and success metrics
- **OS Version Tracking** - Compliance monitoring
- **ARP Search** - MAC address lookup with vendor OUI

### Collaboration
- **Notes System** - Wiki-style documentation with rich text
- **Device Associations** - Link notes to devices and sites
- **Internal Linking** - `[[Note Title]]` syntax for knowledge graphs
- **Full-Text Search** - Unified search across notes + captures

### Security & Administration
- **Multi-Auth Backend** - LDAP, database, OS authentication
- **Role-Based Access** - Admin, operator, viewer groups
- **Audit Logging** - Track all administrative actions
- **Backup/Restore** - Complete system lifecycle management
- **User Management** - Full CRUD with password policies

### Automation
- **SSH Terminal** - WebSocket-based browser access
- **Collection Wizard** - Concurrent capture execution
- **100+ Job Templates** - Pre-built for Cisco, Arista, Juniper, HPE
- **REST API** - Programmatic access to all features

---

## Screenshots

<table>
<tr>
<td width="50%">

### Device Inventory
![Device List](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/devices_light.png)
*12 devices across sites with vendor/role filtering*

</td>
<td width="50%">

### Device Detail
![Device Detail](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/device_detail_light.png)
*Hardware components with capture status*

</td>
</tr>
<tr>
<td width="50%">

### Change Tracking
![Changes](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/changes_light.png)
*33 configuration changes with severity*

</td>
<td width="50%">

### Collection Wizard
![Collection](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/collection_running_light.png)
*Real-time concurrent capture execution*

</td>
</tr>
<tr>
<td width="50%">

### Capture Search
![Search](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/capture_search_light.png)
*Full-text search across operational data*

</td>
<td width="50%">

### SSH Terminal
![SSH](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/ssh_light.png)
*Web-based device access with credentials*

</td>
</tr>
</table>

---

## Proven at Scale

**Production Deployment Stats:**
- ✅ 357 devices managed
- ✅ 53 sites across infrastructure  
- ✅ 126 switch stacks tracked
- ✅ 1,684 hardware components
- ✅ 8,891 successful captures
- ✅ 99.3% device classification accuracy

**Performance:**
- Discovery: 45-60 min for 295 devices
- Fingerprinting: 60-90 min (8 concurrent processes)
- Full onboarding cycle: ~4 hours (manual)
- Dashboard response: <500ms
- Backup: 15-30 sec (58 MB compressed)

**Vendor Support:**
- Cisco IOS/IOS-XE/NX-OS
- Arista EOS
- HPE ProCurve/Aruba
- Juniper Junos (beta)

---

## Documentation

Comprehensive guides for every component:

**Getting Started:**
- [Installation Guide](docs/installation.md)
- [Quick Start Tutorial](docs/quickstart.md)
- [Configuration Guide](docs/configuration.md)

**Core Workflows:**
- [Network Discovery](docs/discovery.md)
- [Data Collection](docs/collection.md)
- [Change Detection](docs/changes.md)
- [Topology Visualization](docs/topology.md)

**Administration:**
- [User Management](docs/admin.md)
- [Authentication Setup](docs/authentication.md)
- [Backup & Restore](docs/backup.md)
- [Database Management](docs/database.md)

**Development:**
- [API Documentation](docs/api.md)
- [Plugin Development](docs/plugins.md)
- [Contributing Guide](CONTRIBUTING.md)

---

## CLI Reference

```bash
# Initialize system
velocitycmdb init                    # Create databases and directories
velocitycmdb create-admin            # Create first admin user

# Server management  
velocitycmdb run                     # Start web server (port 8086)
velocitycmdb run --port 5000        # Custom port

# Database operations
velocitycmdb backup                  # Create system backup
velocitycmdb restore backup.zip      # Restore from backup
velocitycmdb db-check               # Validate database health

# Discovery operations
velocitycmdb discover --seed 10.0.1.1 --username admin

# Bulk operations
velocitycmdb collect --site "ENG Site" --capture configs
```

---

## Roadmap

### v1.0 - Foundation (Current)
- ✅ Pip-installable package
- ✅ Wizard-driven workflows
- ✅ 13+ feature modules
- ✅ Multi-auth backend
- ✅ Material Design 3 UI

### v1.1 - Enhanced Automation (Q1 2026)
- [ ] Job scheduler UI
- [ ] Webhook notifications
- [ ] Prometheus exporter
- [ ] Advanced search filters

### v1.2 - Integration (Q2 2026)
- [ ] NetBox plugin/sync
- [ ] REST API expansion
- [ ] Custom collection jobs
- [ ] Device driver plugins

### v2.0 - Enterprise (Q3 2026)
- [ ] Multi-tenancy
- [ ] SSO integration
- [ ] Distributed monitoring
- [ ] GitOps workflows

---

## Community & Support

**Resources:**
- 📖 [Documentation](https://velocitycmdb.readthedocs.io)
- 💬 [Discussions](https://github.com/scottpeterman/velocitycmdb/discussions)
- 🐛 [Issue Tracker](https://github.com/scottpeterman/velocitycmdb/issues)
- 📧 [Mailing List](https://groups.google.com/g/velocitycmdb)

**Contributing:**
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

**Professional Support:**
Enterprise support and training available - contact via GitHub.

---

## Related Projects

Part of the VelociTerm ecosystem:

- [VelociTerm](https://github.com/scottpeterman/velociterm) - Web SSH terminal framework
- [Secure Cartography](https://github.com/scottpeterman/secure_cartography) - Network discovery engine
- [TerminalTelemetry](https://github.com/scottpeterman/terminaltelemetry) - SSH automation patterns
- [PyCorpus](https://github.com/scottpeterman/pycorpus) - Knowledge management (coming soon)

---

## License

MIT License - See [LICENSE](LICENSE) for details.

---

## Credits

Created by [Scott Peterman](https://github.com/scottpeterman)

Built with:
- Flask & SocketIO
- Cytoscape.js
- Material Design 3
- TextFSM & Paramiko
- NetworkX & SQLite

**Acknowledgments:**
- NetBox Labs for community support
- Network automation community for feedback
- Contributors and early adopters

---

*VelocityCMDB v1.0 - Production Ready | November 2025*

---
