Metadata-Version: 2.4
Name: velocitycmdb
Version: 0.10.4
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**

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

**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
- **Map Library** - Import existing Visio/DrawIO diagrams organized by folder
- **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 && python -m velocitycmdb.cli init && python -m velocitycmdb.app.run`
- **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
pip install velocitycmdb

# Initialize databases, directories, config, and admin user
python -m velocitycmdb.cli init

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

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

Default credentials: **admin / admin** (change after first login)

### 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+ stars, 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 and 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

### Network Map Library

Centralize your network documentation alongside CMDB data - no discovery required.

- **Bring Your Own Diagrams** - Import SVG exports from Visio, DrawIO, Lucidchart, or any diagramming tool
- **Flexible Organization** - Group by site, region, project, technology, or any folder structure
- **Automatic Thumbnails** - Preview images generated on first view
- **Multiple Formats** - Store companion files (.json, .graphml, .drawio) alongside SVGs
- **In-App Help** - Built-in guidance shows directory structure and setup

**Use Cases:**
- Legacy Visio diagrams maintained over years
- Compliance and audit documentation that must remain static
- Reference architectures and design templates
- Vendor-provided network diagrams
- Hand-crafted documentation for specific systems

**Directory Structure:**
```
~/.velocitycmdb/data/maps/
├── datacenter-east/        # Any folder name becomes a group
│   ├── core-topology.svg
│   └── wan-design.svg
├── compliance-docs/        # Organize however you want
│   └── pci-network.svg
└── projects/
    └── 2025-refresh.svg
```

Maps with an SVG file appear automatically in the UI. Optional companion files (.json, .graphml, .drawio) are available for download when present.


### 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 and 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:**
- [Quick Start Guide](QUICKSTART.md)
- [Authentication Configuration](README_Auth_Config.md)
- [Shadow Users Guide](SHADOW_USERS_GUIDE.md)

**Core Workflows:**
- Network Discovery - See Quick Start
- Data Collection - See Quick Start
- Change Detection - Built-in, automatic

**Administration:**
- User Management - Admin > User Management
- Backup/Restore - Admin > Maintenance

---

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

# Start on custom host and port
python -m velocitycmdb.app.run --host 127.0.0.1 --port 5000

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

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

---

## Roadmap

### v1.0 - Foundation (Current)
- [x] Pip-installable package
- [x] Wizard-driven workflows
- [x] 13+ feature modules
- [x] Multi-auth backend
- [x] 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 and Support

**Resources:**
- [Documentation](QUICKSTART.md)
- [Discussions](https://github.com/scottpeterman/velocitycmdb/discussions)
- [Issue Tracker](https://github.com/scottpeterman/velocitycmdb/issues)

**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

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

---

## Credits

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

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

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

---

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