[{"data":1,"prerenderedAt":351},["ShallowReactive",2],{"page-\u002Fprojects\u002Fdarvaza-penne":3,"categories":191,"go-packages":338},{"id":4,"title":5,"body":6,"category":176,"description":180,"extension":181,"go":5,"licence":182,"meta":183,"navigation":184,"npm":185,"path":186,"repo":187,"seo":188,"stem":189,"__hash__":190},"projects\u002Fprojects\u002Fdarvaza-penne.md","darvaza.org\u002Fpenne",{"type":7,"value":8,"toc":167},"minimark",[9,18,23,26,49,53,86,90,93,97,100,144,148],[10,11,12,13,17],"p",{},"Config-driven, pipeline-oriented DNS resolver that allows complex\nworkflows to be defined simply. Built using the Darvaza sidecar\nengine and ",[14,15],"go-pkg",{"mod":16},"darvaza.org\u002Fresolver",".",[19,20,22],"h2",{"id":21},"architecture","Architecture",[10,24,25],{},"Penne uses a pipeline\u002Fmiddleware design with three resolver modes:",[27,28,29,37,43],"ul",{},[30,31,32,36],"li",{},[33,34,35],"strong",{},"Iterative"," — performs iterative DNS resolution from root servers.",[30,38,39,42],{},[33,40,41],{},"Forwarder"," — forwards queries to upstream resolvers.",[30,44,45,48],{},[33,46,47],{},"Chained"," — chains multiple resolver strategies together.",[19,50,52],{"id":51},"key-features","Key features",[27,54,55,61,76],{},[30,56,57,60],{},[33,58,59],{},"Horizons"," — named CIDR sets that route, annotate, or filter DNS\nrequests based on the client's IP address, enabling split-horizon DNS.",[30,62,63,66,67,70,71,75],{},[33,64,65],{},"Pattern matching"," — uses globbing (via\n",[14,68],{"mod":69},"github.com\u002Fgobwas\u002Fglob",") instead of regex for suffix\nmatching and name rewrites, with capture group replacements\n(",[72,73,74],"code",{},"${n}",").",[30,77,78,81,82,85],{},[33,79,80],{},"Capabilities"," — domain-specific resolver restriction, record\nfiltering (e.g., dropping ",[72,83,84],{},"AAAA"," records), and request\u002Fresponse\nrewriting.",[19,87,89],{"id":88},"configuration","Configuration",[10,91,92],{},"Penne is designed to be config-driven, with YAML or JSON\nconfiguration files defining resolver pipelines, horizons,\nand transformation rules. This allows complex DNS workflows to\nbe declared without writing code.",[19,94,96],{"id":95},"planned-features","Planned features",[10,98,99],{},"Future versions of Penne will adopt a plugin architecture — each\ncapability below is planned as a standalone plugin, so you only\ninstall the pieces you need. The planned plugins are:",[27,101,102,108,114,120,126,132,138],{},[30,103,104,107],{},[33,105,106],{},"Authoritative DNS"," — host your own DNS zones with persistent\nstorage, turning Penne into a full network DNS server.",[30,109,110,113],{},[33,111,112],{},"DHCP server"," — integrated DHCP lease management alongside DNS,\nkeeping address assignment and name resolution under one roof.",[30,115,116,119],{},[33,117,118],{},"IPAM server"," — IP Address Management for tracking address\nusage, planning subnets, and managing allocations across the\nnetwork.",[30,121,122,125],{},[33,123,124],{},"Security licence (Protective DNS)"," — threat protection at the\nDNS layer, blocking known malicious domains, phishing sites, and\nmalware command-and-control servers.",[30,127,128,131],{},[33,129,130],{},"Enhanced reporting"," — richer analytics and reporting on DNS\nactivity across the network.",[30,133,134,137],{},[33,135,136],{},"Blocklists"," — network-wide domain blocking, similar to ad-blockers\nbut applied at the server level for all clients.",[30,139,140,143],{},[33,141,142],{},"HA clustering"," — high-availability mode with multiple Penne nodes\nstaying in sync to provide failover if one node goes down.",[19,145,147],{"id":146},"see-also","See also",[27,149,150,155,161],{},[30,151,152,153],{},"DNS resolver library — ",[14,154],{"mod":16},[30,156,157,158],{},"Core helpers — ",[14,159],{"mod":160},"darvaza.org\u002Fcore",[30,162,163,164],{},"Structured logging — ",[14,165],{"mod":166},"darvaza.org\u002Fslog",{"title":168,"searchDepth":169,"depth":169,"links":170},"",2,[171,172,173,174,175],{"id":21,"depth":169,"text":22},{"id":51,"depth":169,"text":52},{"id":88,"depth":169,"text":89},{"id":95,"depth":169,"text":96},{"id":146,"depth":169,"text":147},[177,178,179],"darvaza","networking","go","Config-driven, pipeline-oriented DNS resolver that allows complex workflows to be defined simply, with split-horizon DNS support built on the Darvaza sidecar engine and resolver interface.","md","MIT",{},true,null,"\u002Fprojects\u002Fdarvaza-penne","github:darvaza-proxy\u002Fpenne",{"title":5,"description":180},"projects\u002Fdarvaza-penne","tm-DcdVgV96VIrOQX_JnJaLGU9KIgOxYccdmHiEDeoo",[192,209,223,236,257,270,286,299,312,325],{"id":193,"title":194,"body":195,"description":202,"extension":181,"kind":203,"meta":204,"navigation":184,"path":205,"seo":206,"stem":207,"__hash__":208},"categories\u002Fcategories\u002Fdarvaza.md","Darvaza",{"type":7,"value":196,"toc":200},[197],[10,198,199],{},"A family of Go libraries for building proxies and networking\ninfrastructure. An open-source project by Apptly Software.",{"title":168,"searchDepth":169,"depth":169,"links":201},[],"Go proxy and networking libraries.","umbrella",{},"\u002Fcategories\u002Fdarvaza",{"title":194,"description":202},"categories\u002Fdarvaza","LsPVpZAnH3RQcxeTw_b2V7YftItUdHiv_U46ek7GiI0",{"id":210,"title":211,"body":212,"description":216,"extension":181,"kind":217,"meta":218,"navigation":184,"path":219,"seo":220,"stem":221,"__hash__":222},"categories\u002Fcategories\u002Fgo.md","Go",{"type":7,"value":213,"toc":214},[],{"title":168,"searchDepth":169,"depth":169,"links":215},[],"Projects written in Go.","language",{},"\u002Fcategories\u002Fgo",{"title":211,"description":216},"categories\u002Fgo","ULWwBCwYo0s0dltCZKbfhGL3VDGzmJrIYgPF0aD381E",{"id":224,"title":225,"body":226,"description":230,"extension":181,"kind":185,"meta":231,"navigation":184,"path":232,"seo":233,"stem":234,"__hash__":235},"categories\u002Fcategories\u002Finfrastructure.md","Infrastructure",{"type":7,"value":227,"toc":228},[],{"title":168,"searchDepth":169,"depth":169,"links":229},[],"Deployment, orchestration, and platform tooling.",{},"\u002Fcategories\u002Finfrastructure",{"title":225,"description":230},"categories\u002Finfrastructure","4zhV0rSeRtvnzmBjj4hYBqXGoRGJ-HXglMTzbbeNURY",{"id":237,"title":238,"body":239,"description":251,"extension":181,"kind":203,"meta":252,"navigation":184,"path":253,"seo":254,"stem":255,"__hash__":256},"categories\u002Fcategories\u002Fkagal.md","Kagal",{"type":7,"value":240,"toc":249},[241],[10,242,243,244,248],{},"Named after the Sumerian ",[245,246,247],"em",{},"Ká.Gal"," (𒆍𒃲, \"Great Gate\"), Kagal is a\ncollection of TypeScript libraries for Cloudflare edge infrastructure\nand related tooling. An open-source project by Apptly Software.",{"title":168,"searchDepth":169,"depth":169,"links":250},[],"TypeScript libraries for Cloudflare edge infrastructure.",{},"\u002Fcategories\u002Fkagal",{"title":238,"description":251},"categories\u002Fkagal","9lgG7kCfdjUFD8pusQnAwcVCHU0EFn1W_8C33k4-xH0",{"id":258,"title":259,"body":260,"description":264,"extension":181,"kind":185,"meta":265,"navigation":184,"path":266,"seo":267,"stem":268,"__hash__":269},"categories\u002Fcategories\u002Fnetworking.md","Networking",{"type":7,"value":261,"toc":262},[],{"title":168,"searchDepth":169,"depth":169,"links":263},[],"Protocols, transports, and connectivity.",{},"\u002Fcategories\u002Fnetworking",{"title":259,"description":264},"categories\u002Fnetworking","Z3wIzhHCRt3IO9IPRDGzAkEGtYm13UdbarFAC_j9R-E",{"id":271,"title":272,"body":273,"description":280,"extension":181,"kind":203,"meta":281,"navigation":184,"path":282,"seo":283,"stem":284,"__hash__":285},"categories\u002Fcategories\u002Fpoupe.md","Poupe",{"type":7,"value":274,"toc":278},[275],[10,276,277],{},"Material Design component library for Vue. An open-source project\nby Apptly Software.",{"title":168,"searchDepth":169,"depth":169,"links":279},[],"Material Design component library for Vue.",{},"\u002Fcategories\u002Fpoupe",{"title":272,"description":280},"categories\u002Fpoupe","3HdL090wyXtyiBZLconBhol5p15dj1LZIfdqk5VGGuA",{"id":287,"title":288,"body":289,"description":293,"extension":181,"kind":185,"meta":294,"navigation":184,"path":295,"seo":296,"stem":297,"__hash__":298},"categories\u002Fcategories\u002Fsecurity.md","Security",{"type":7,"value":290,"toc":291},[],{"title":168,"searchDepth":169,"depth":169,"links":292},[],"Cryptography, authentication, and PKI.",{},"\u002Fcategories\u002Fsecurity",{"title":288,"description":293},"categories\u002Fsecurity","-vhE3ktjZGJKeNDg9ZbKoF6sRqhmnbaH8fZZYlCvdRc",{"id":300,"title":301,"body":302,"description":306,"extension":181,"kind":185,"meta":307,"navigation":184,"path":308,"seo":309,"stem":310,"__hash__":311},"categories\u002Fcategories\u002Ftooling.md","Tooling",{"type":7,"value":303,"toc":304},[],{"title":168,"searchDepth":169,"depth":169,"links":305},[],"Developer tools, build utilities, and CLI helpers.",{},"\u002Fcategories\u002Ftooling",{"title":301,"description":306},"categories\u002Ftooling","5syL8Jir-4gLAe_4IimZ6zP9SKf-N5XcWHE1-He2YbU",{"id":313,"title":314,"body":315,"description":319,"extension":181,"kind":217,"meta":320,"navigation":184,"path":321,"seo":322,"stem":323,"__hash__":324},"categories\u002Fcategories\u002Ftypescript.md","TypeScript",{"type":7,"value":316,"toc":317},[],{"title":168,"searchDepth":169,"depth":169,"links":318},[],"Projects written in TypeScript.",{},"\u002Fcategories\u002Ftypescript",{"title":314,"description":319},"categories\u002Ftypescript","ZvMEwtpsv0uX1pC0zKQ55ZHChbxJHDqfJXP3XS138pE",{"id":326,"title":327,"body":328,"description":332,"extension":181,"kind":185,"meta":333,"navigation":184,"path":334,"seo":335,"stem":336,"__hash__":337},"categories\u002Fcategories\u002Fui.md","UI",{"type":7,"value":329,"toc":330},[],{"title":168,"searchDepth":169,"depth":169,"links":331},[],"User interface components and design systems.",{},"\u002Fcategories\u002Fui",{"title":327,"description":332},"categories\u002Fui","9pERIpNBwMqn40vshxSDv8QA4NeK9JZrH-ysMGHUzP8",{"darvaza.org\u002Fcache":339,"darvaza.org\u002Fcore":340,"darvaza.org\u002Fpenne":186,"darvaza.org\u002Fresolver":341,"darvaza.org\u002Fslog":342,"darvaza.org\u002Fx\u002Fcmp":343,"darvaza.org\u002Fx\u002Fconfig":344,"darvaza.org\u002Fx\u002Fcontainer":345,"darvaza.org\u002Fx\u002Ffs":346,"darvaza.org\u002Fx\u002Fnet":347,"darvaza.org\u002Fx\u002Fsync":348,"darvaza.org\u002Fx\u002Ftls":349,"darvaza.org\u002Fx\u002Fweb":350},"\u002Fprojects\u002Fdarvaza-cache","\u002Fprojects\u002Fdarvaza-core","\u002Fprojects\u002Fdarvaza-resolver","\u002Fprojects\u002Fdarvaza-slog","\u002Fprojects\u002Fdarvaza-x-cmp","\u002Fprojects\u002Fdarvaza-x-config","\u002Fprojects\u002Fdarvaza-x-container","\u002Fprojects\u002Fdarvaza-x-fs","\u002Fprojects\u002Fdarvaza-x-net","\u002Fprojects\u002Fdarvaza-x-sync","\u002Fprojects\u002Fdarvaza-x-tls","\u002Fprojects\u002Fdarvaza-x-web",1775810536777]