Skip to content

Overview

Welcome to the Nautobot Core Documentation! Use the top navigation bar to read about:

What is Nautobot?

Nautobot Logo

Nautobot is an open source Network Source of Truth and Network Automation Platform built as a web application atop the Django Python framework with a PostgreSQL or MySQL database.

Key Use Cases

Nautobot enables three (3) key use cases.

  1. Flexible Source of Truth for Networking - Nautobot core data models are used to define the intended state of network infrastructure enabling it as a Source of Truth. While a baseline set of models are provided (such as IP networks and addresses, devices and racks, circuits and cable, etc.) it is Nautobot's goal to offer maximum data model flexibility. This is enabled through features such as user-defined relationships, custom fields on any model, and data validation that permits users to codify everything from naming standards to having automated tests run before data can be populated into Nautobot.

  2. Extensible Data Platform for Automation - Nautobot has a rich feature set to seamlessly integrate with network automation solutions. Nautobot offers GraphQL and native Git integration along with REST APIs and webhooks. Git integration dynamically loads YAML data files as Nautobot config contexts. Nautobot also has an evolving plugin system that enables users to create custom models, APIs, and UI elements. The plugin system is also used to unify and aggregate disparate data sources creating a Single Source of Truth to streamline data management for network automation.

  3. Platform for Network Automation Apps - The Nautobot plugin system enables users to create Network Automation Apps. Apps can be as lightweight or robust as needed based on user needs. Using Nautobot for creating custom applications saves up to 70% development time by re-using features such as authentication, permissions, webhooks, GraphQL, change logging, etc. all while having access to the data already stored in Nautobot. Some production ready applications include:

Screenshots

Main Page

Config Contexts

Prefix Hierarchy

GraphQL API

App Screenshots

Golden Config App

ChatOps App

Design Philosophy

The following tenets drive the direction of Nautobot.

Replicate the Real World

Careful consideration has been given to the data model to ensure that it can accurately reflect a real-world network. For instance, IP addresses are assigned not to devices, but to specific interfaces attached to a device, and an interface may have multiple IP addresses assigned to it.

Serve as a Source of Truth (SoT)

Nautobot intends to represent the desired state of a network versus its operational state. While plugins and apps can be built and integrated with Nautobot to extend its capabilities to various aspects of the operational state, the core platform's focus is on the desired state.

Serve as a Network Automation Platform

Nautobot intends to be a vehicle to deliver high-value network automation apps. Using the extensible plugin system, users have the choice and freedom to create the integrations that make sense for them.

Ensure Maximum Flexibility & Extensibility

While Nautobot intends to replicate the real world and offer opinionated models to get started defining the intended state of the network, it is understood that organizations and networks have unique design considerations that may need to be addressed in the SoT or Network Automation Platform. Nautobot strives to enable flexibility and extensibility to power and automate all types of networks.

Keep it Simple

When given a choice between a relatively simple 80% solution and a much more complex complete solution, the former will typically be favored. This ensures a lean codebase with a low learning curve.

Application Stack

Nautobot is built on the Django Python Web framework and requires either a PostgreSQL or MySQL database backend. It runs as a WSGI service behind your choice of HTTP server.

Function Component
HTTP service NGINX
WSGI service uWSGI or Gunicorn
Application Django/Python
Database PostgreSQL 12.0+ or MySQL 8.0+
Cache Django/Redis
Task queuing Redis/Celery
Live device access NAPALM

Added in version 1.1.0

MySQL support was added.

Removed in version 2.0.0

  • django-rq support was removed.
  • django-cacheops usage was removed and replaced with Django's native caching features.

Removed in version 2.1.0

Support for versions of PostgreSQL older than 12.0 was removed.

The following diagram displays how data travels through Nautobot's application stack.

Application stack diagram

Supported Python Versions

Nautobot supports Python 3.8 through 3.11.

Added in version 1.3.0

Python 3.10 support was added.

Removed in version 1.3.0

Python 3.6 support was removed.

Changed in version 1.6.0

Python 3.11 support was added and Python 3.7 support was removed.

Getting Started

See the installation guide for help getting Nautobot up and running quickly.

Notices

Nautobot was initially developed as a fork of NetBox (v2.10.4), which was originally created by Jeremy Stretch at DigitalOcean and by the NetBox open source community.