Metadata-Version: 2.4
Name: velocitycmdb
Version: 0.10.7
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
License-File: LICENSE
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: license-file
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**

## Project Status

VelocityCMDB is in active development and has been extensively tested against real production networks with hundreds of devices across multiple vendors. While functional and feature-complete for core workflows, it is not yet recommended for security-critical environments. The codebase is stabilizing but may still see breaking changes before v1.0.

[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-GPLv3-green.svg)](LICENSE)
[![PyPI](https://img.shields.io/pypi/v/velocitycmdb)](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/slides1.gif)

---

## 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.

### Three Commands to Running

```bash
pip install velocitycmdb
python -m velocitycmdb.cli init
python -m velocitycmdb.app.run
```

That's it. Access the dashboard at `http://localhost:8086` (default: **admin / admin**)

### Key Features

- **Automated Discovery** - LLDP/CDP-based topology mapping
- **Device Inventory** - Complete asset tracking with components, sites, vendors, roles
- **Hardware Components** - Automated inventory parsing with vendor-aware classification
- **Change Detection** - Configuration monitoring with severity classification and diffs
- **Topology Visualization** - Interactive maps with export to GraphML/DrawIO/PNG
- **Map Library** - Import existing Visio/DrawIO diagrams organized by folder
- **Operational Search** - Full-text search across configs, ARP, MAC, inventory captures
- **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?

- **Zero Infrastructure** - Runs from pip install, SQLite backend, no external dependencies
- **Wizard-Driven** - Discovery and collection wizards guide deployment
- **Real-World Tested** - Validated against production networks with multi-vendor environments
- **Engineer-Focused** - CLI tools, REST API, and scriptable workflows
- **Portable** - Run locally on your laptop or deploy to a server

---

## Quick Start

### 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 and save topology map

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

**Total Time: ~45 minutes to full visibility**

---

## Architecture

VelocityCMDB is built on proven open-source components:

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

**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** - Automated hardware inventory with classification
- **Sites/Vendors/Roles** - Complete taxonomy management
- **Bulk Operations** - Preview-commit workflow for batch changes
- **CSV Export** - Export filtered data for reporting

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

### Hardware Inventory
- **Automated Parsing** - Extract components from `show inventory` / `show chassis hardware`
- **Vendor-Aware Classification** - Transceivers, modules, PSUs, fans, supervisors
- **Serial Number Tracking** - Full coverage reporting
- **Filtered Export** - CSV export with current filters applied

### Network Map Library

Centralize your network documentation alongside CMDB data.

- **Bring Your Own Diagrams** - Import SVG exports from Visio, DrawIO, Lucidchart
- **Flexible Organization** - Group by site, region, project, or any folder structure
- **Automatic Thumbnails** - Preview images generated on first view
- **Multiple Formats** - Store companion files (.json, .graphml, .drawio) alongside SVGs

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

### 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 and captures

### Administration
- **Multi-Auth Backend** - LDAP, database, OS authentication
- **Role-Based Access** - Admin and viewer roles
- **Audit Logging** - Track administrative actions
- **Backup/Restore** - Complete system lifecycle management
- **Maintenance Tools** - Index rebuild, database reset, component reclassification

### 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)

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

### Device Detail
![Device Detail](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/device_detail_light.png)

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

### Change Tracking
![Changes](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/changes_light.png)

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

### Collection Wizard
![Collection](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/collection_running_light.png)

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

### Capture Search
![Search](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/capture_search_light.png)

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

### SSH Terminal
![SSH](https://raw.githubusercontent.com/scottpeterman/velocitycmdb/main/screenshots/ssh_light.png)

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

---

## Vendor Support

Tested and validated with:

- **Cisco** - IOS, IOS-XE, NX-OS
- **Arista** - EOS
- **Juniper** - Junos
- **HPE** - ProCurve, Aruba

Additional vendors supported via TextFSM templates.

---

## CLI Reference

```bash
# Initialize system (first time setup)
python -m velocitycmdb.cli init

# Re-initialize and overwrite config
python -m velocitycmdb.cli init --force

# Start web server (default: port 8086)
python -m velocitycmdb.app.run

# Start with SSL enabled
python -m velocitycmdb.app.run --ssl

# Start on custom port
python -m velocitycmdb.app.run -p 8443

# Disable debug mode (for production)
python -m velocitycmdb.app.run --no-debug

# Show help
python -m velocitycmdb.cli init --help
python -m velocitycmdb.app.run --help
```

---

## Documentation

- [Quick Start Guide](QUICKSTART.md)
- [Authentication Configuration](README_Auth_Config.md)
- [Shadow Users Guide](SHADOW_USERS_GUIDE.md)

---

## Roadmap

### v1.0 - Foundation (Current Focus)
- [x] Pip-installable package
- [x] Wizard-driven workflows
- [x] 13+ feature modules
- [x] Multi-auth backend
- [x] Material Design 3 UI
- [x] Hardware component inventory
- [ ] API documentation
- [ ] Installation hardening

### v1.1 - Enhanced Automation
- [ ] Job scheduler UI
- [ ] Webhook notifications
- [ ] Prometheus metrics exporter
- [ ] Advanced search filters

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

---

## Community and Support

- [Discussions](https://github.com/scottpeterman/velocitycmdb/discussions)
- [Issue Tracker](https://github.com/scottpeterman/velocitycmdb/issues)

Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

---

## Related Projects

Part of the network automation ecosystem:

- [Secure Cartography](https://github.com/scottpeterman/secure_cartography) - Network discovery engine
- [VelociTerm](https://github.com/scottpeterman/velociterm) - Web SSH terminal framework  
- [TerminalTelemetry](https://github.com/scottpeterman/terminaltelemetry) - PyQt6 SSH terminal with monitoring

---

## License

GPLv3 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, and SQLite.

---

*VelocityCMDB v0.10.X | December 2025*
