diff --git a/docs/netbox-extensions/branching/index.md b/docs/netbox-extensions/branching/index.md
deleted file mode 100644
index 5bb814bd..00000000
--- a/docs/netbox-extensions/branching/index.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# NetBox Branching
-
-!!! info "Documentation Location"
-    **NetBox Branching documentation has moved!**
-    
-    For the most current and authoritative NetBox Branching documentation, please visit:
-    
-    **[NetBox Branching Documentation →](https://netboxlabs.com/docs/netbox-branching/)**
-
-## About NetBox Branching
-
-NetBox Branching is a powerful plugin that introduces version control-like functionality to NetBox. It allows you to create discrete, static snapshots of the NetBox database that can be modified independently and later merged back into the main database.
-
-### Key Features
-
-- **Branch Creation**: Create isolated copies of your NetBox data
-- **Independent Modifications**: Make changes within branches without affecting main data
-- **Merge Operations**: Integrate branch changes back into the main database
-- **Conflict Resolution**: Handle data conflicts during merge operations
-- **API Support**: Full REST API support for programmatic branch management
-
-### Getting Started
-
-To get started with NetBox Branching, including installation instructions, configuration options, and detailed usage guides, please visit the official documentation:
-
-**[→ Visit NetBox Branching Documentation](https://netboxlabs.com/docs/netbox-branching/)**
-
-### Quick Links
-
-- **[Installation Guide](https://netboxlabs.com/docs/netbox-branching/installation/)**
-- **[Configuration Options](https://netboxlabs.com/docs/netbox-branching/configuration/)**
-- **[User Guide](https://netboxlabs.com/docs/netbox-branching/user-guide/)**
-- **[API Reference](https://netboxlabs.com/docs/netbox-branching/api/)**
-- **[GitHub Repository](https://github.com/netboxlabs/netbox-branching)**
-
----
-
-!!! note "Why the redirect?"
-    NetBox Branching documentation is maintained in its own dedicated repository to ensure you always have access to the most up-to-date information, including the latest features, bug fixes, and best practices.
\ No newline at end of file
diff --git a/docs/netbox-extensions/diode/diode-get-started.md b/docs/netbox-extensions/diode/getting-started.md
similarity index 99%
rename from docs/netbox-extensions/diode/diode-get-started.md
rename to docs/netbox-extensions/diode/getting-started.md
index 2d9455a0..f94ac61f 100644
--- a/docs/netbox-extensions/diode/diode-get-started.md
+++ b/docs/netbox-extensions/diode/getting-started.md
@@ -1,4 +1,4 @@
-# Get Started with Diode
+# Getting Started with Diode
 
 This guide will help you set up and start using Diode to ingest data into NetBox.
 
diff --git a/docs/netbox-extensions/diode/index.md b/docs/netbox-extensions/diode/index.md
index f9233018..6d0628f2 100644
--- a/docs/netbox-extensions/diode/index.md
+++ b/docs/netbox-extensions/diode/index.md
@@ -1,46 +1,51 @@
 # Diode
 
-!!! info "Currently in Public Preview"
+Diode is a data ingestion service for NetBox that greatly simplifies and enhances the process of adding and updating data in NetBox, ensuring your network source of truth is always accurate and up to date. Our guiding principle in designing Diode has been to make it as easy as possible to get data into NetBox, removing as much burden as possible from the user while shifting that effort to technology.
 
-    The Diode project is currently in _Public Preview_. Please see [NetBox Labs Product and Feature Lifecycle](https://netboxlabs.com/docs/product_feature_lifecycle/) for more details.
+## Project Status
 
-## Overview 
+The Diode project is currently in the _Public Preview_ stage. Please see [NetBox Labs Product and Feature Lifecycle](https://netboxlabs.com/docs/console/product_feature_lifecycle/) for more details. We actively welcome feedback to help identify and prioritize bugs, new features and areas of improvement.
 
-Diode is a NetBox data ingestion service that aims to simplify and enhance the process to add and update network data in NetBox. The guiding principle behind Diode has been to make it as easy as possible to get data into NetBox, removing as much burden as possible from the user while shifting that effort to technology.
+## Prerequisites
 
-Diode is a sidecar service to NetBox that provides a gRPC/protobuf API designed for ingestion of common NetBox data models. Diode reduces the need to preprocess data to make it conform to the strict object hierarchy of the NetBox data model. This allows data to be sent to NetBox in a more freeform manner, in blocks that are intuitive for network engineers such as by device or by interface. Related information is treated as attributes of these blocks. Diode takes care of transforming this data to make it align with NetBox's structured and comprehensive data model.
+- NetBox 4.2.3 or later
+- Python 3.8 or later (for Python SDK)
+- Go 1.18 or later (for Go SDK)
+- Network connectivity between Diode and NetBox
 
-## Prerequisites
+## Quick Start
 
-* NetBox 4.2.3 or later
-* Python 3.8 or later (for Python SDK)
-* Go 1.18 or later (for Go SDK)
-* Network connectivity between Diode and NetBox
+For a quick step-by-step guide, see our [Getting Started Guide](getting-started.md).
 
-## Components
+1. **Deploy the Diode Server**
+   See [deployment instructions](https://github.com/netboxlabs/diode/blob/develop/diode-server/README.md)
 
-There are several components that make up the Diode ecosystem:
+2. **Install the Diode NetBox Plugin**
+   See [installation instructions](https://github.com/netboxlabs/diode-netbox-plugin/blob/develop/README.md)
 
-1. **Diode Server** - The core service that provides ingestion and reconciliation services. See [deployment instructions](https://github.com/netboxlabs/diode/tree/develop/diode-server#readme).
+3. **Choose Your Data Ingestion Method**
+   - Use the NetBox Discovery agent for automated network discovery: see [instructions to run Orb agent](https://github.com/netboxlabs/orb-agent)
+   - Build custom integrations using our SDKs:
+     - [Python SDK](https://github.com/netboxlabs/diode-sdk-python)
+     - [Go SDK](https://github.com/netboxlabs/diode-sdk-go)
 
-2. **Diode NetBox Plugin** - Required component that provides API key management and ORM integration into NetBox. See [installation instructions](https://github.com/netboxlabs/diode-netbox-plugin).
+## Documentation
 
-3. **Data Ingestion Methods**:
-   * **NetBox Discovery Agent** - Automated discovery using the [Orb agent](https://github.com/netboxlabs/orb-agent).
-   * **SDK Integrations**:
-     * [Python SDK](https://github.com/netboxlabs/diode-sdk-python)
-     * [Go SDK](https://github.com/netboxlabs/diode-sdk-go)
+- [Diode Protocol Documentation](protobuf/diode-proto.md)
+- [Metrics](observability/metrics.md)
+- Example scripts and tutorials can be found in the NetBox Labs [NetBox Learning repository](https://github.com/netboxlabs/netbox-learning/tree/develop/diode)
 
-## Quick Start
+## Related Projects
 
-For a quick step-by-step guide, see our [Getting Started Guide](diode-get-started.md).
+- [Orb Agent](https://github.com/netboxlabs/orb-agent): Network discovery agent that uses Diode for data ingestion
+- [Diode NetBox Plugin](https://github.com/netboxlabs/diode-netbox-plugin): Required NetBox plugin for Diode integration
+- [Diode Protocol](https://github.com/netboxlabs/diode/tree/develop/diode-proto): Protocol definitions for Diode
 
-## Additional Resources
+## Community & Support
 
-* [Diode Protocol Documentation](https://github.com/netboxlabs/diode/tree/develop/diode-proto)
-* Example scripts and tutorials can be found in the NetBox Labs [NetBox Learning repository](https://github.com/netboxlabs/netbox-learning/tree/develop/diode)
+- [GitHub Issues](https://github.com/netboxlabs/diode/issues)
+- [NetBox Community Slack](https://netdev.chat/) - Join the `#orb` channel
 
-## Support
+## License
 
-* [GitHub Issues](https://github.com/netboxlabs/diode/issues)
-* Slack NetDev Community (#orb channel)
\ No newline at end of file
+Diode is released under the [NetBox Limited Use License 1.0](https://github.com/netboxlabs/diode/blob/develop/LICENSE.md).
\ No newline at end of file
diff --git a/docs/netbox-extensions/diode/observability/metrics.md b/docs/netbox-extensions/diode/observability/metrics.md
new file mode 100644
index 00000000..e073e603
--- /dev/null
+++ b/docs/netbox-extensions/diode/observability/metrics.md
@@ -0,0 +1,250 @@
+# Metrics
+
+## Available Metrics
+
+### Core Metrics (All Services)
+- `diode_{service}_service_info` - Service information
+- `diode_{service}_service_startup_attempts_total` - Startup attempts
+
+### Service-Specific Metrics
+
+#### Auth Service
+- `diode_auth_service_info` - Service information
+- `diode_auth_service_startup_attempts_total` - Startup attempts
+
+#### Ingester Service
+- `diode_ingester_service_info` - Service information
+- `diode_ingester_service_startup_attempts_total` - Startup attempts
+- `diode_ingester_ingest_requests_total` - Ingest requests (success)
+- `diode_ingester_ingest_entities_total` - Entities ingested
+
+#### Reconciler Service
+- `diode_reconciler_service_info` - Service information
+- `diode_reconciler_service_startup_attempts_total` - Startup attempts
+- `diode_reconciler_handle_message_total` - Messages handled (success)
+- `diode_reconciler_ingestion_log_create_total` - Ingestion logs created (success)
+- `diode_reconciler_change_set_create_total` - Change sets created (success)
+- `diode_reconciler_change_set_apply_total` - Change sets applied (success)
+- `diode_reconciler_change_create_total` - Individual changes created
+- `diode_reconciler_change_apply_total` - Individual changes applied
+
+## Configuration Overview
+
+Diode's telemetry implementation supports multiple configuration methods and exporters.
+
+### Exporters
+- **prometheus**: Serve metrics on `/metrics` endpoint
+- **otlp**: Send to OpenTelemetry Collector
+- **console**: Output to stdout (debugging)
+- **none**: Disable metrics
+
+## Environment Variables
+
+### Core Configuration
+
+| Variable | Description | Default | Required | Example |
+|----------|-------------|---------|----------|---------|
+| `TELEMETRY_SERVICE_NAME` | Service identifier | Auto-detected | No | `netboxlabs/diode/auth` |
+| `TELEMETRY_EXPORTER` | Metrics exporter | `prometheus` | No | `prometheus`, `otlp`, `console`, `none` |
+| `TELEMETRY_PROMETHEUS_PORT` | Prometheus port | `9090` | No | `9090` |
+| `TELEMETRY_OTLP_ENDPOINT` | OTLP endpoint | - | Yes (if OTLP) | `http://collector:4317` |
+| `TELEMETRY_OTLP_INSECURE` | OTLP insecure | `false` | No | `true`, `false` |
+
+### Advanced Configuration
+
+| Variable | Description | Default | Required | Example |
+|----------|-------------|---------|----------|---------|
+| `TELEMETRY_OTLP_TIMEOUT` | OTLP timeout | `30s` | No | `30s` |
+| `TELEMETRY_OTLP_COMPRESSION` | OTLP compression | `none` | No | `gzip`, `none` |
+| `TELEMETRY_RESOURCE_ATTRIBUTES` | Resource attributes | - | No | `service.version=1.0.0` |
+
+## Docker Compose Example
+
+```yaml
+version: '3.8'
+
+services:
+  diode-auth:
+    image: netboxlabs/diode-auth:latest
+    environment:
+      - TELEMETRY_SERVICE_NAME=netboxlabs/diode/auth
+      - TELEMETRY_EXPORTER=prometheus
+      - TELEMETRY_PROMETHEUS_PORT=9090
+    ports:
+      - "9090:9090"
+
+  diode-ingester:
+    image: netboxlabs/diode-ingester:latest
+    environment:
+      - TELEMETRY_SERVICE_NAME=netboxlabs/diode/ingester
+      - TELEMETRY_EXPORTER=prometheus
+      - TELEMETRY_PROMETHEUS_PORT=9091
+    ports:
+      - "9091:9091"
+
+  diode-reconciler:
+    image: netboxlabs/diode-reconciler:latest
+    environment:
+      - TELEMETRY_SERVICE_NAME=netboxlabs/diode/reconciler
+      - TELEMETRY_EXPORTER=prometheus
+      - TELEMETRY_PROMETHEUS_PORT=9092
+    ports:
+      - "9092:9092"
+
+  prometheus:
+    image: prom/prometheus:latest
+    ports:
+      - "9093:9090"
+    volumes:
+      - ./prometheus.yml:/etc/prometheus/prometheus.yml
+    command:
+      - '--config.file=/etc/prometheus/prometheus.yml'
+      - '--storage.tsdb.path=/prometheus'
+      - '--web.console.libraries=/etc/prometheus/console_libraries'
+      - '--web.console.templates=/etc/prometheus/consoles'
+      - '--web.enable-lifecycle'
+```
+
+### Prometheus Configuration
+
+```yaml
+global:
+  scrape_interval: 15s
+
+scrape_configs:
+  - job_name: 'diode-auth'
+    static_configs:
+      - targets: ['diode-auth:9090']
+
+  - job_name: 'diode-ingester'
+    static_configs:
+      - targets: ['diode-ingester:9091']
+
+  - job_name: 'diode-reconciler'
+    static_configs:
+      - targets: ['diode-reconciler:9092']
+```
+
+## OTLP Configuration
+
+### Environment Variables
+
+```bash
+export TELEMETRY_EXPORTER=otlp
+export TELEMETRY_OTLP_ENDPOINT=http://otel-collector:4317
+export TELEMETRY_OTLP_INSECURE=true
+export TELEMETRY_OTLP_TIMEOUT=30s
+export TELEMETRY_OTLP_COMPRESSION=gzip
+```
+
+### OpenTelemetry Collector Configuration
+
+```yaml
+receivers:
+  otlp:
+    protocols:
+      grpc:
+        endpoint: 0.0.0.0:4317
+      http:
+        endpoint: 0.0.0.0:4318
+
+processors:
+  batch:
+
+exporters:
+  prometheus:
+    endpoint: "0.0.0.0:8889"
+  logging:
+    loglevel: debug
+
+service:
+  pipelines:
+    metrics:
+      receivers: [otlp]
+      processors: [batch]
+      exporters: [prometheus, logging]
+```
+
+## Troubleshooting
+
+### Common Issues
+
+1. **Metrics not appearing**
+   - Check the exporter configuration
+   - Verify the service is running
+   - Check firewall rules for metrics ports
+
+2. **Prometheus scraping failures**
+   - Verify the target endpoint is accessible
+   - Check the scrape configuration
+   - Ensure the service is exposing metrics on the correct port
+
+3. **OTLP connection issues**
+   - Verify the collector endpoint is reachable
+   - Check TLS/insecure settings
+   - Validate the collector configuration
+
+### Debugging
+
+1. **Enable console exporter**
+   ```bash
+   export TELEMETRY_EXPORTER=console
+   ```
+
+2. **Check service logs**
+   ```bash
+   docker compose logs diode-auth
+   docker compose logs diode-ingester
+   docker compose logs diode-reconciler
+   ```
+
+3. **Verify metrics endpoints**
+   ```bash
+   curl http://localhost:9090/metrics
+   curl http://localhost:9091/metrics
+   curl http://localhost:9092/metrics
+   ```
+
+## Grafana Dashboard
+
+### Sample Queries
+
+#### Service Health
+```promql
+# Service uptime
+up{job=~"diode-.*"}
+
+# Service restarts
+increase(diode_*_service_startup_attempts_total[5m])
+```
+
+#### Ingestion Metrics
+```promql
+# Ingestion rate
+rate(diode_ingester_ingest_requests_total[5m])
+
+# Entities ingested
+rate(diode_ingester_ingest_entities_total[5m])
+```
+
+#### Reconciliation Metrics
+```promql
+# Message processing rate
+rate(diode_reconciler_handle_message_total[5m])
+
+# Change set creation rate
+rate(diode_reconciler_change_set_create_total[5m])
+
+# Change set application rate
+rate(diode_reconciler_change_set_apply_total[5m])
+```
+
+### Dashboard JSON
+
+A sample Grafana dashboard configuration is available in the [Diode repository](https://github.com/netboxlabs/diode/tree/develop/examples/grafana).
+
+## References
+
+- [OpenTelemetry Documentation](https://opentelemetry.io/docs/)
+- [Prometheus Documentation](https://prometheus.io/docs/)
+- [Grafana Documentation](https://grafana.com/docs/)
\ No newline at end of file
diff --git a/docs/netbox-extensions/diode/protobuf/diode-proto.md b/docs/netbox-extensions/diode/protobuf/diode-proto.md
new file mode 100644
index 00000000..01eda928
--- /dev/null
+++ b/docs/netbox-extensions/diode/protobuf/diode-proto.md
@@ -0,0 +1,275 @@
+# Protocol Documentation
+
+This document describes the Diode protocol buffer definitions used for data ingestion and communication between Diode services and NetBox.
+
+## Overview
+
+The Diode protocol is defined using Protocol Buffers (protobuf) and includes definitions for all major NetBox data models including:
+
+- **Network Infrastructure**: Devices, Interfaces, Cables, Circuits
+- **IP Management**: IP Addresses, Prefixes, Aggregates, VLANs
+- **Data Center**: Racks, Locations, Sites, Clusters
+- **Virtualization**: Virtual Machines, Clusters, Platforms
+- **Organization**: Tenants, Contacts, Providers
+
+## Service Definition
+
+The main service endpoint is defined as:
+
+```protobuf
+service IngesterService {
+  // Ingest data entities into NetBox
+  rpc Ingest(stream IngestRequest) returns (stream IngestResponse);
+}
+```
+
+## Core Message Types
+
+### IngestRequest
+
+The primary message type for sending data to Diode:
+
+```protobuf
+message IngestRequest {
+  // Unique identifier for the data source
+  string data_source_id = 1;
+  
+  // Entity being ingested
+  Entity entity = 2;
+}
+```
+
+### Entity
+
+Wrapper for all supported NetBox entities:
+
+```protobuf
+message Entity {
+  oneof entity {
+    // DCIM entities
+    Site site = 1;
+    Location location = 2;
+    Device device = 3;
+    Interface interface = 4;
+    Cable cable = 5;
+    
+    // IPAM entities
+    Prefix prefix = 6;
+    IPAddress ip_address = 7;
+    VLAN vlan = 8;
+    
+    // Circuits entities
+    Circuit circuit = 9;
+    CircuitTermination circuit_termination = 10;
+    
+    // Tenancy entities
+    Tenant tenant = 11;
+    
+    // Virtualization entities
+    VirtualMachine virtual_machine = 12;
+    
+    // And many more...
+  }
+}
+```
+
+## Data Models
+
+### Core Infrastructure
+
+#### Site
+Represents a physical location or facility:
+
+```protobuf
+message Site {
+  string name = 1;
+  string slug = 2;
+  string status = 3;
+  string description = 4;
+  string facility = 5;
+  repeated string tags = 6;
+  map<string, CustomFieldValue> custom_fields = 7;
+}
+```
+
+#### Device
+Represents a network device:
+
+```protobuf
+message Device {
+  string name = 1;
+  string device_type = 2;
+  string site = 3;
+  string location = 4;
+  string role = 5;
+  string platform = 6;
+  string serial = 7;
+  string asset_tag = 8;
+  string status = 9;
+  repeated string tags = 10;
+  map<string, CustomFieldValue> custom_fields = 11;
+}
+```
+
+#### Interface
+Represents a network interface:
+
+```protobuf
+message Interface {
+  string device = 1;
+  string name = 2;
+  string type = 3;
+  string description = 4;
+  string mac_address = 5;
+  bool enabled = 6;
+  int32 mtu = 7;
+  repeated string tags = 8;
+  map<string, CustomFieldValue> custom_fields = 9;
+}
+```
+
+### IP Address Management
+
+#### Prefix
+Represents an IP prefix:
+
+```protobuf
+message Prefix {
+  string prefix = 1;
+  string status = 2;
+  string vrf = 3;
+  string tenant = 4;
+  string site = 5;
+  string role = 6;
+  string description = 7;
+  repeated string tags = 8;
+  map<string, CustomFieldValue> custom_fields = 9;
+}
+```
+
+#### IPAddress
+Represents an IP address:
+
+```protobuf
+message IPAddress {
+  string address = 1;
+  string status = 2;
+  string vrf = 3;
+  string tenant = 4;
+  string description = 5;
+  string dns_name = 6;
+  repeated string tags = 7;
+  map<string, CustomFieldValue> custom_fields = 8;
+}
+```
+
+## Custom Fields
+
+All entities support custom fields through a flexible map structure:
+
+```protobuf
+message CustomFieldValue {
+  oneof value {
+    string string_value = 1;
+    int64 integer_value = 2;
+    bool boolean_value = 3;
+    double float_value = 4;
+    string date_value = 5;
+    string url_value = 6;
+    string json_value = 7;
+    repeated string multi_select_value = 8;
+  }
+}
+```
+
+## Response Messages
+
+### IngestResponse
+
+Response message containing ingestion results:
+
+```protobuf
+message IngestResponse {
+  // Operation result
+  string state = 1;
+  
+  // Entity that was processed
+  Entity entity = 2;
+  
+  // Any errors that occurred
+  repeated Error errors = 3;
+}
+```
+
+## Usage Examples
+
+### Python SDK Example
+
+```python
+from diode_sdk import DiodeClient
+
+# Initialize client
+client = DiodeClient(
+    target="grpc://diode.example.com:8080/diode",
+    client_id="your-client-id",
+    client_secret="your-client-secret"
+)
+
+# Create a site
+site = Site(
+    name="New York DC",
+    slug="ny-dc",
+    status="active",
+    description="Primary data center in New York"
+)
+
+# Ingest the site
+response = client.ingest(site)
+print(f"Ingestion result: {response.state}")
+```
+
+### Go SDK Example
+
+```go
+package main
+
+import (
+    "context"
+    "github.com/netboxlabs/diode-sdk-go/diode"
+)
+
+func main() {
+    // Initialize client
+    client, err := diode.NewClient(
+        "grpc://diode.example.com:8080/diode",
+        "your-client-id",
+        "your-client-secret",
+    )
+    if err != nil {
+        panic(err)
+    }
+
+    // Create a device
+    device := &diode.Device{
+        Name:       "switch01",
+        DeviceType: "cisco-catalyst-9300",
+        Site:       "ny-dc",
+        Status:     "active",
+    }
+
+    // Ingest the device
+    response, err := client.Ingest(context.Background(), device)
+    if err != nil {
+        panic(err)
+    }
+    
+    fmt.Printf("Ingestion result: %s\n", response.State)
+}
+```
+
+## References
+
+- [Diode Protocol Repository](https://github.com/netboxlabs/diode/tree/develop/diode-proto)
+- [Python SDK Documentation](https://github.com/netboxlabs/diode-sdk-python)
+- [Go SDK Documentation](https://github.com/netboxlabs/diode-sdk-go)
+- [Protocol Buffers Documentation](https://developers.google.com/protocol-buffers)
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index d6085ce4..2049fd42 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -62,7 +62,6 @@ nav:
   - Home: index.md
   - Community:
     - NetBox Plugins:
-      - Branching: "netbox-extensions/branching/index.md"
       - Change Management:
         - Overview: "netbox-extensions/changes/index.md"
         - Configuration: "netbox-extensions/changes/configuration.md"
@@ -75,8 +74,10 @@ nav:
           - Review: "netbox-extensions/changes/models/review.md"
         - Changelog: "netbox-extensions/changes/changelog.md"
       - Diode:
-        - Overview: "netbox-extensions/diode/index.md"
-        - Get Started: "netbox-extensions/diode/diode-get-started.md"
+        - Introduction: "netbox-extensions/diode/index.md"
+        - Getting Started: "netbox-extensions/diode/getting-started.md"
+        - Protobuf Reference: "netbox-extensions/diode/protobuf/diode-proto.md"
+        - Observability: "netbox-extensions/diode/observability/metrics.md"
     - NetBox Discovery:
       - Overview: "netbox-discovery/index.md"
       - Get Started: "netbox-discovery/getting-started.md"
