Documentation

API-driven infrastructure management for Kubernetes


Quick Start

Get up and running in minutes:


Core Components

firestone (Core)

🔥
API Specification Generator The heart of Firestoned. Generate OpenAPI, AsyncAPI specs, and CLI tools from JSON Schema resource definitions. Define your resources once, generate everything else automatically. Key Features: - JSON Schema based workflow - OpenAPI 3.x & AsyncAPI generation - Python Click CLI generation - Code generation via openapi-generator

firestone-lib

📚
Shared Library Core library powering firestone and forevd. Provides reusable components for spec generation, validation, and transformation. Use Cases: - Build custom generators - Embed in your tools - Extend functionality - API automation

bindy

🏗️
Kubernetes DNS Operator Kubernetes-native BIND9 DNS management through CRDs. Demonstrates infrastructure-as-code principles with declarative, GitOps-ready DNS. Key Features: - High-performance Rust operator - Full DNS record type support - DNSSEC automation - High availability

bindcar

🚗
BIND9 REST API Sidecar REST API for BIND9 zone management. Translates HTTP requests into RNDC commands with built-in authentication and Prometheus metrics. Key Features: - OpenAPI/Swagger documentation - ServiceAccount token auth - Real-time zone operations - Metrics and monitoring

zonewarden

🛡️
Service-to-DNS Sync Kubernetes controller for automatic DNS record creation. Watch namespaces, sync IPs, and maintain service discovery across clusters. Key Features: - Automatic DNS registration - Multi-cluster support - LoadBalancer integration - Linkerd mesh ready


Architecture Overview

Understanding how the components work together:

graph TB
    subgraph "Development"
        firestone[firestone<br/>API Generator]
    end

    subgraph "Kubernetes Cluster"
        kubectl[kubectl apply]
        crds[DNS CRDs<br/>Zones & Records]
        bindy[bindy<br/>DNS Operator]
        zonewarden[zonewarden<br/>Service Watcher]
        svc[Kubernetes Services]
    end

    subgraph "DNS Infrastructure"
        forevd[forevd<br/>Auth Proxy]
        bindcar[bindcar<br/>REST API]
        bind9[BIND9<br/>DNS Server]
    end

    firestone -.API Spec.-> bindcar
    kubectl --> crds
    crds --> bindy
    svc --> zonewarden
    zonewarden --> bindy
    bindy --> forevd
    forevd --> bindcar
    bindcar --> bind9

    style bindy fill:#0066cc,color:#fff
    style bindcar fill:#0066cc,color:#fff
    style zonewarden fill:#0066cc,color:#fff
    style firestone fill:#ff6b35,color:#fff
    style forevd fill:#333,color:#fff

Getting Started Guide →


Why Firestoned?

🎯 API-First Development

Define infrastructure resources once using JSON Schema. Automatically generate OpenAPI specs, AsyncAPI specs, CLIs, and client libraries. No manual API coding required.

📐 Schema-Driven Consistency

Single source of truth ensures your API specs, documentation, validation logic, and client code stay in perfect sync. Change the schema, regenerate everything.

🔧 Developer Experience

From resource definition to working API in minutes. Includes practical Kubernetes-native examples showing real-world infrastructure-as-code patterns.


Getting Started

Ready to build API-driven infrastructure? Choose your path:

🚀 Complete Guide

New to Firestoned? Start here for a comprehensive walkthrough from installation to your first API.

Getting Started Guide →

📖 Component Docs

Jump directly to documentation for specific components:

firestone | bindy | bindcar

💬 Community

Get help, report issues, or contribute to the project on GitHub.

GitHub Repository →


Getting Started

Learn how to get started with Firestoned - from building your first API with firestone to exploring the Kubernetes-native DNS utilities

firestone

bindy

bindcar

zonewarden

forevd

Last modified December 12, 2025: Fixing links to work with new FQDN (#3) (ad6eee8)