You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First, I have to say, I haven't done extensive vetting but this project looks amazing.
Honestly, a little too amazing. This seems to have come from nowhere, two weeks ago.
From what I see, this is a lot of what I need. I'm just a little nervous given the current landscape of the internet.
The sole thing which would fit this system into my network better would be supported loading and auto-reloading of external files, IE, I manage three DNS zones via zone file (loaded via CoreDNS 'auto' plugin, or 'file' plugin) created dynamically based on running containers.
It's a weird ask, but would you mind disclosing a bit about your background and how this came to be? What's your use of AI in the codebase? Does this deployment operate fully locally, or is there a cloud/telemetry/etc?
I basically created Faro for my own homelab. I got tired of dealing with issues with Pi-hole and AdGuard Home, and I also got tired of relatives wanting ad blocking on their networks but finding the existing tools too hard to use. I figured I'd release it publicly in case anyone else found it useful.
Faro is 100% local, with zero telemetry, and I have no plans to ever add any. I'm actually trying to move more of what I run at home toward being completely cloud-free, so it would be pretty hypocritical for me to do otherwise.
As for my background, I've been in the software industry for over 18 years and I'm currently a Tech Lead at a robotics company. We build software for warehouse automation, so I spend most of my time working with Kubernetes, IoT, distributed systems, robots, and some hilariously old industrial software. Basically real life "Factorio" 😆. A big part of our job is taking incredibly complex systems and making them approachable for operators by hiding as much complexity as possible. That philosophy naturally carried over into Faro.
As for the AI question, I'll be completely transparent. Yep, AI was used extensively while building Faro. I use GPT-5.6 Luna as a coding partner because I prefer working in small, reviewable chunks. It lets me understand every change, review the implementation, test it, refactor it, and make sure everything behaves the way I expect before moving on.
I completely understand why people are skeptical of AI-generated code. For me, Faro wasn't an experiment to see how much code AI could write. It was simply a tool that helped me build something I genuinely wanted to run on my own network. If I wasn't comfortable trusting it myself, I wouldn't expect anyone else to.
Regarding the external zone files, that's actually a really interesting idea. Right now Faro owns the generated CoreDNS configuration, but I can definitely see the value in supporting externally managed zones through CoreDNS's file or auto plugins. I'll keep this issue open as a feature request and give it some thought. 👍
Thank you for taking the time to be so thorough with your answer, especially regarding the use of AI.
I also appreciate the fully local design. There's just way too much invasive software out there. Thank you.
I must say, I can relate to the background re: pihole, adguard, etm -- I've been using CoreDNS as a sole solution for a while. I really like the look of Faro, and I'm probably going to move things over - especially if you're willing to (continue to, lol) answer a few questions regarding implementation. I appreciate that you've got a deep background, it comes across well in the quality of Faro's interface, and that's frankly part of what made me so wary. It just looks too good to be so new, lol.
Generally I do look down on "AI projects" but this sounds like a personal project where AI was used as a tool, and used in an intelligent manner. Some may look down their nose when AI was even consulted during the coding phase, but the way I see it, so long as the AI is helping you understand how to accomplish your goal and not accomplishing your goal for you I'm less upset by it. (It's also close to how I code, when I reach the edge of my familiarity. I don't use any code produced by AI; it explains options to cover my need, shows basic implementation examples, and then I go read language/library documentation/examples until I grok.)
So, regarding my personal deployment, here's a vaguely modified version of my Corefile;
This server is also exposed to the internet, as I'm working toward being able to configure it as an Android Private DNS target.
So after poking around a bit more, there are a few things I would absolutely love to DEATH if they were implemented in Faro;
The capacity to forward multiple specific domains to a specific server
The capacity to load zones via either 'file' or 'auto'
certificates, DoT/DoH/Quic/etc
Honestly, I'd also settle for the option to manually inject entries into the final file, listed as an "expert" option or similar.
And lastly (for now) a query regarding redundancy; I saw options for it in the menus -- you'll have to forgive me, I wasn't prepared to spend too much time until I heard more about the project -- where it stated that one could run a second instance of Faro, and link them. Can you describe how this works? Right now I have two DNS servers, where primary clones its config to secondary with each update. I'd imagine a similar sort of deployment here?
(Also, consider opening Discussions on this repo, if you'd like to humor conversation about the project but don't feel Issues are the most appropriate place.)
First commit is all that was required to get the config loading, the others are for my own local use of the repo as a service on my network. I've deployed and run this overnight, and done some thorough but brief testing this morning, and even with my extraordinarily unusual requirements, my repo and this Corefile.external are all I needed and everything does work;
As far as "minimum required for Faro to run and suit my specific needs" that covers it. For more comfortable integration, you could make it detect and only import Corefile.external if it were present in /config, or create an empty one and load it by default as it does now, or even make it a frontend toggle with a textbox editor.
I'd love to see "my personal needs" addressed fully in the frontend with the same level of detail and sophistication as the rest, lol, but I certainly won't expect any of it from you unless you deem it worth adding.
Anyway, that's all for now. Thanks again for the great project.
Hey, that's awesome! You’ve convinced me to add some more advanced features. I’ll try to keep a balanced experience though. The whole point of Faro is to make this stuff easy to use, and I definitely don’t want it to turn into an airplane cockpit for CoreDNS 😅
You also asked about Faro redundancy. Right now, from the primary Faro instance you can go into Settings and generate a pairing token. Then on the second Faro instance, during the initial setup flow, there’s an option to configure it as a secondary. You enter the primary instance IP and the token, and that’s basically it.
Under the hood, it’s mainly synchronizing the DNS configuration from the primary to the secondary. I still need to finish the part where the secondary sends its metrics back to the primary so you can see everything from one place.
I’m actually running it this way at home right now: the primary is on a mini PC and the secondary is on my Unraid server.
I also have a ton of changes locally that I haven’t pushed yet because I’m currently going through the codebase, cleaning things up, and changing some pieces I’m not happy with. 👍
don’t want it to turn into an airplane cockpit for CoreDNS
Oh I definitely don't want to try to compel you to make it such either, I really appreciate the balance it has now -- almost. ;)
Faro redundancy
Ah, okay - fair enough. I went ahead and deployed it on my three (primary, secondary, testbed) DNS servers for our network with my patch. (I would love to see a frontend interface for "reset and join" instead of manually nuking /config.) You can't even click Back on the "create an admin" page when you notice the Join link you should've clicked, lol, it's already too late.
I do rather love the presentation overall, for sure. Another tiny note, my DNS servers have multiple IPs because (for example) the Automation VLAN isn't routed to the LAN. I'm not sure what the implication is beyond UI presentation, though, so this might not matter..?
running it this way at home right now
Me too! lol. Primary DNS is handled by a ZimaBlade 7700 which also handles remotely starting a borg backup on my important hosts. Secondary is handled by an RPi5 which also acts as a home audio system/bluetooth/airplay audio target, and the testbed in an LXC container on Unraid. Primary and Secondary both run a service which connects to the Docker socket through a permissions proxy, and write out a zonefile based on my template, so I get the format of container_name.docker_network.docker_host.docker aka mealie.extsvc.alpha.docker or ombi.services.tower.docker
I also have a ton of changes locally that I haven’t pushed yet because I’m currently going through the codebase, cleaning things up, and changing some pieces I’m not happy with. 👍
Ooh, that sounds fun. I'm happy to help out with testing when you're ready for extra eyes and ears; I'm pretty experienced with deploying and testing homelab DNS on a rather unusual network, so I can trip over all sorts of edge cases lol. I'm also pretty good at breaking things.
Activity
derek-diaz commentedon Aug 7, 2026
Completely valid to be skeptical! 😅
I basically created Faro for my own homelab. I got tired of dealing with issues with Pi-hole and AdGuard Home, and I also got tired of relatives wanting ad blocking on their networks but finding the existing tools too hard to use. I figured I'd release it publicly in case anyone else found it useful.
Faro is 100% local, with zero telemetry, and I have no plans to ever add any. I'm actually trying to move more of what I run at home toward being completely cloud-free, so it would be pretty hypocritical for me to do otherwise.
As for my background, I've been in the software industry for over 18 years and I'm currently a Tech Lead at a robotics company. We build software for warehouse automation, so I spend most of my time working with Kubernetes, IoT, distributed systems, robots, and some hilariously old industrial software. Basically real life "Factorio" 😆. A big part of our job is taking incredibly complex systems and making them approachable for operators by hiding as much complexity as possible. That philosophy naturally carried over into Faro.
As for the AI question, I'll be completely transparent. Yep, AI was used extensively while building Faro. I use GPT-5.6 Luna as a coding partner because I prefer working in small, reviewable chunks. It lets me understand every change, review the implementation, test it, refactor it, and make sure everything behaves the way I expect before moving on.
I completely understand why people are skeptical of AI-generated code. For me, Faro wasn't an experiment to see how much code AI could write. It was simply a tool that helped me build something I genuinely wanted to run on my own network. If I wasn't comfortable trusting it myself, I wouldn't expect anyone else to.
Regarding the external zone files, that's actually a really interesting idea. Right now Faro owns the generated CoreDNS configuration, but I can definitely see the value in supporting externally managed zones through CoreDNS's file or auto plugins. I'll keep this issue open as a feature request and give it some thought. 👍
codefaux commentedon Aug 7, 2026
Thank you for taking the time to be so thorough with your answer, especially regarding the use of AI.
I also appreciate the fully local design. There's just way too much invasive software out there. Thank you.
I must say, I can relate to the background re: pihole, adguard, etm -- I've been using CoreDNS as a sole solution for a while. I really like the look of Faro, and I'm probably going to move things over - especially if you're willing to (continue to, lol) answer a few questions regarding implementation. I appreciate that you've got a deep background, it comes across well in the quality of Faro's interface, and that's frankly part of what made me so wary. It just looks too good to be so new, lol.
Generally I do look down on "AI projects" but this sounds like a personal project where AI was used as a tool, and used in an intelligent manner. Some may look down their nose when AI was even consulted during the coding phase, but the way I see it, so long as the AI is helping you understand how to accomplish your goal and not accomplishing your goal for you I'm less upset by it. (It's also close to how I code, when I reach the edge of my familiarity. I don't use any code produced by AI; it explains options to cover my need, shows basic implementation examples, and then I go read language/library documentation/examples until I grok.)
So, regarding my personal deployment, here's a vaguely modified version of my Corefile;
This server is also exposed to the internet, as I'm working toward being able to configure it as an Android Private DNS target.
So after poking around a bit more, there are a few things I would absolutely love to DEATH if they were implemented in Faro;
Honestly, I'd also settle for the option to manually inject entries into the final file, listed as an "expert" option or similar.
And lastly (for now) a query regarding redundancy; I saw options for it in the menus -- you'll have to forgive me, I wasn't prepared to spend too much time until I heard more about the project -- where it stated that one could run a second instance of Faro, and link them. Can you describe how this works? Right now I have two DNS servers, where primary clones its config to secondary with each update. I'd imagine a similar sort of deployment here?
(Also, consider opening Discussions on this repo, if you'd like to humor conversation about the project but don't feel Issues are the most appropriate place.)
codefaux commentedon Aug 8, 2026
So I've kind of brute-forced the functionality I need.
https://github.com/codefaux/Faro/tree/ugly_import_hack
First commit is all that was required to get the config loading, the others are for my own local use of the repo as a service on my network. I've deployed and run this overnight, and done some thorough but brief testing this morning, and even with my extraordinarily unusual requirements, my repo and this Corefile.external are all I needed and everything does work;
As far as "minimum required for Faro to run and suit my specific needs" that covers it. For more comfortable integration, you could make it detect and only
import Corefile.externalif it were present in /config, or create an empty one and load it by default as it does now, or even make it a frontend toggle with a textbox editor.I'd love to see "my personal needs" addressed fully in the frontend with the same level of detail and sophistication as the rest, lol, but I certainly won't expect any of it from you unless you deem it worth adding.
Anyway, that's all for now. Thanks again for the great project.
derek-diaz commentedon Aug 8, 2026
Hey, that's awesome! You’ve convinced me to add some more advanced features. I’ll try to keep a balanced experience though. The whole point of Faro is to make this stuff easy to use, and I definitely don’t want it to turn into an airplane cockpit for CoreDNS 😅
You also asked about Faro redundancy. Right now, from the primary Faro instance you can go into Settings and generate a pairing token. Then on the second Faro instance, during the initial setup flow, there’s an option to configure it as a secondary. You enter the primary instance IP and the token, and that’s basically it.
Under the hood, it’s mainly synchronizing the DNS configuration from the primary to the secondary. I still need to finish the part where the secondary sends its metrics back to the primary so you can see everything from one place.
I’m actually running it this way at home right now: the primary is on a mini PC and the secondary is on my Unraid server.
I also have a ton of changes locally that I haven’t pushed yet because I’m currently going through the codebase, cleaning things up, and changing some pieces I’m not happy with. 👍
codefaux commentedon Aug 8, 2026
Oh I definitely don't want to try to compel you to make it such either, I really appreciate the balance it has now -- almost. ;)
Ah, okay - fair enough. I went ahead and deployed it on my three (primary, secondary, testbed) DNS servers for our network with my patch. (I would love to see a frontend interface for "reset and join" instead of manually nuking /config.) You can't even click Back on the "create an admin" page when you notice the Join link you should've clicked, lol, it's already too late.
I do rather love the presentation overall, for sure. Another tiny note, my DNS servers have multiple IPs because (for example) the Automation VLAN isn't routed to the LAN. I'm not sure what the implication is beyond UI presentation, though, so this might not matter..?
Me too! lol. Primary DNS is handled by a ZimaBlade 7700 which also handles remotely starting a borg backup on my important hosts. Secondary is handled by an RPi5 which also acts as a home audio system/bluetooth/airplay audio target, and the testbed in an LXC container on Unraid. Primary and Secondary both run a service which connects to the Docker socket through a permissions proxy, and write out a zonefile based on my template, so I get the format of
container_name.docker_network.docker_host.dockerakamealie.extsvc.alpha.dockerorombi.services.tower.dockerOoh, that sounds fun. I'm happy to help out with testing when you're ready for extra eyes and ears; I'm pretty experienced with deploying and testing homelab DNS on a rather unusual network, so I can trip over all sorts of edge cases lol. I'm also pretty good at breaking things.