{"id":19901390,"url":"https://github.com/lissy93/adguardian-term","last_synced_at":"2025-10-04T14:19:15.400Z","repository":{"id":169546145,"uuid":"645330651","full_name":"Lissy93/AdGuardian-Term","owner":"Lissy93","description":"🛡️ Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance","archived":false,"fork":false,"pushed_at":"2025-09-28T01:29:13.000Z","size":4182,"stargazers_count":1314,"open_issues_count":22,"forks_count":64,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-09-28T03:25:35.138Z","etag":null,"topics":["adguard","dns","rust","terminal","tui"],"latest_commit_sha":null,"homepage":"https://adguardian.as93.net","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lissy93.png","metadata":{"files":{"readme":".github/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-25T12:17:23.000Z","updated_at":"2025-09-28T01:59:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"92f2615e-abc1-46d8-abbe-65280daf36b2","html_url":"https://github.com/Lissy93/AdGuardian-Term","commit_stats":null,"previous_names":["lissy93/adguardian-term"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/Lissy93/AdGuardian-Term","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissy93%2FAdGuardian-Term","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissy93%2FAdGuardian-Term/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissy93%2FAdGuardian-Term/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissy93%2FAdGuardian-Term/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lissy93","download_url":"https://codeload.github.com/Lissy93/AdGuardian-Term/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lissy93%2FAdGuardian-Term/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278322649,"owners_count":25967969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adguard","dns","rust","terminal","tui"],"created_at":"2024-11-12T20:14:51.659Z","updated_at":"2025-10-04T14:19:15.390Z","avatar_url":"https://github.com/Lissy93.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eAdGuardian-Term\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n\t\u003ci\u003eTerminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance\u003c/i\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"200\" src=\"https://i.ibb.co/25GNT0n/adguardian-banner-4.png\" /\u003e\n\u003c/p\u003e\n\n## About\n\nAdGuardian Terminal Eddition - Keep an eye on your traffic, with this (unofficial) buddy for your AdGuard Home instance\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"600\" src=\"https://i.ibb.co/Nrtd01d/adguardian-demo.gif?\" \u003e\n\u003c/p\u003e\n\n#### Features\n- **Real-time Query Monitoring**: _Fetches and displays all DNS queries in real time, letting you see exactly what's happening on your network at any given moment_\n- **Block and Allow Stats**: _Get a quick overview of the number of queries that have been allowed, filtered or blocked by AdGuard_\n- **Historical Query Counts**: _Analyze network activity over time with historical query count data. This lets you track trends and spot any unusual activity_\n- **Filter Lists**: _AdGuardian displays your active filter lists, showing which ones are doing the most work_\n- **Top Domain Statistics**: _See which domains are getting the most queries (blocked, allowed and otherwise) in your network_\n- **Easy and Lightweight**: _AdGuardian can be run either with a super tiny Docker image, or directly with the zero-dependency executable_\n- **Good and Safe**: _Written in Rust and unit tested, the app runs locally with no external requests, and (of course) it's fully open source_\n\n#### About AdGuard\n[AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) is a free and open source self-hosted (or managed) network-wide ad + tracker blocker. It operates as a DNS server that re-routes tracking domains to a \"black hole\", thus preventing your devices from connecting to those servers. It makes your internet, faster, safer and gives you a bunch of useful features, like encrypted DNS (DoH, DoT, DNSCrypt), parental controls, blocking of malware / phishing, per-device configs, custom DNS rules, etc.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eContents\u003c/b\u003e\u003c/summary\u003e\n\n- [About](#about)\n- [Getting Started](#getting-started)\n  - [Docker](#docker)\n  - [Executable](#executable)\n  - [Install from Crates.io](#install-from-cratesio)\n  - [Build from Source](#build-from-source)\n  - [One-Liner](#one-liner)\n- [Configuring](#configuring)\n   - [With Flags](#with-flags)\n   - [With Env Vars](#with-env-vars)\n   - [In Docker](#in-docker)\n- [Web Mode](#web-mode)\n- [Development](#development)\n  - [Prerequisites](#prerequisites)\n  - [Run](#run)\n  - [Technical Docs](#technical-docs)\n  - [Testing and Quality](#testing-and-quality)\n  - [Building](#building)\n- [Credits](#credits)\n  - [Contributors](#contributors)\n  - [Sponsors](#sponsors)\n  - [Dependencies](#dependencies)\n- [Mirror](#mirror)\n- [Alterntives](#alterntives)\n- [Contributing](#contributing)\n- [License](#license)\n\t\n\u003c/details\u003e\n\n---\n\n## Getting Started\n\nThere are several options for running...\n\n### Docker\n\n```bash\ndocker run -it lissy93/adguardian\n```\n\u003e You may also pass in your AdGuard info with env vars (using `-e`), see the [Configuring](#configuring) section for an example, and list of available config params.\u003cbr\u003e\n\u003e If you experience issues with DockerHub, or would rather use a different registry, the image is also available via GHCR - just replace the image name with: `ghcr.io/lissy93/adguardian`. Alternatively, if you'd like to build it yourself from source, you can do so with `docker buildx build -t  adguardian .` then run it with `docker run -it adguardian`.\n\n### Executable\n\n```bash\ncurl -o adguardian https://github.com/Lissy93/AdGuardian-Term/releases/latest/download/adguardian-linux \u0026\u0026 \\\nchmod +x adguardian \u0026\u0026 \\\n./adguardian\n```\n\n\u003e In the above example, don't forget to update the URL to download the latest stable version for your operating system\u003cbr\u003e\n\u003e You may also just head over the the [Releases](https://github.com/Lissy93/AdGuardian-Term/releases) tab, download the latest executable, and double-click on it to run\n\n### Install from Crates.io\n\n```\ncargo install adguardian\nadguardian\n```\n\n\u003e AdGuardian is published as a crate to [crates.io/crates/adguardian](https://crates.io/crates/adguardian). So providing you've got Cargo installed, you can pull the binary directly, and then execute it as above. Again, see the [Configuring](#configuring) section below for how to pass in your AdGuard info.\n\n### Build from Source\n\n```bash\ngit clone git@github.com:Lissy93/AdGuardian-Term.git \u0026\u0026 \\\ncd AdGuardian-Term \u0026\u0026 \\\nmake\n```\n\n\u003e You'll need `git`, `cargo` and `make` (see [here](#development) for installation notes). You can also run the cargo commands defined in the Makefile directly, e.g. `cargo run`\n\n### Scoop\n\n```\nscoop install extras/adguardian\n```\n\n\u003e For Windows users, AdGuardian is available via the [Scoop](https://scoop.sh/) package manager, as part of the `extras` bucket - You'll need Scoop installed, then follow [these instructions](https://scoop.sh/#/apps?q=adguardian). This was contributed by [@kzshantonu](https://github.com/kzshantonu) in [ScoopInstaller/Extras#11386](https://github.com/ScoopInstaller/Extras/pull/11386)\n\n### [AUR](https://aur.archlinux.org/packages/adguardian)\n\n```bash\nparu -Syu adguardian\n# or\nyay -Syu adguardian\n# or\ngit clone https://aur.archlinux.org/adguardian.git \u0026\u0026 cd adguardian \u0026\u0026 makepkg -si\n```\n\n### One-Liner\n\n```bash\nbash \u003c(curl -sL https://raw.githubusercontent.com/Lissy93/AdGuardian-Term/main/quick-start.sh)\n```\n\n\u003e This will run the [quick-start.sh](https://github.com/Lissy93/AdGuardian-Term/blob/main/quick-start.sh) Bash script, which downloads and executes the latest binary for your system type. Be sure to read and understand the file first\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ch4\u003eNot sure which method to choose?\u003c/h4\u003e\u003c/summary\u003e\n\n- Docker is the easiest but needs to be installed, and adds a bit of overhead (12Mb, to be precise)\n- Whereas using the executable won't require any additional dependencies\n- If you've got Rust installed, fetching from crates.io will also be both easy and performant\n- If your system architecture isn't supported you'll need to build from source, as you also will if you wish to run a fork or make amendments to the code\n\n\u003c/details\u003e\n\n---\n\n## Configuring\n\nThe app requires the details of an AdGuard instance to connect to.\nThis info can be provided either as environmental variables, or passed in as flag parameters.\nIf any of these fields are missing or incomplete, you'll be prompted to enter a value once the app starts.\n\nThe following params are accepted:\n\n- `ADGUARD_IP` / `--adguard-ip` - The IP address of your local AdGuard Home instance\n- `ADGUARD_PORT` / `--adguard-port` - The port that AdGuard is running on\n- `ADGUARD_USERNAME` / `--adguard-username` - An AdGuard Home username\n- `ADGUARD_PASSWORD` / `--adguard-password` - An AdGuard Home password\n\nThere's also some additional optional environment variables that you may set:\n\n- `ADGUARD_PROTOCOL` - The protocol to use when connecting to AdGuard (defaults to `http`)\n- `ADGUARD_UPDATE_INTERVAL` - The rate at which to refresh the UI in seconds (defaults to `2`)\n\n\u003cdetails\u003e\n\u003csummary\u003eExamples\u003c/summary\u003e\n\n#### With Flags\n\t\n```bash\nadguardian -- \\\n\t--adguard-ip \"192.168.180.1\" \\\n\t--adguard-port \"3000\" \\\n\t--adguard-username \"admin\" \\\n\t--adguard-password \"bobs-your-uncle\"\n```\n\t\n#### With Env Vars\n\t\n```bash\nADGUARD_IP=\"192.168.180.1\" ADGUARD_PORT=\"3000\" ADGUARD_USERNAME=\"admin\" ADGUARD_PASSWORD=\"bobs-your-uncle\" adguardian\n```\n\t\n#### In Docker\n\t\n```bash\ndocker run \\\n\t-e \"ADGUARD_IP=192.168.180.1\" \\\n\t-e \"ADGUARD_PORT=3000\" \\\n\t-e \"ADGUARD_USERNAME=admin\" \\\n\t-e \"ADGUARD_PASSWORD=bobs-your-uncle\" \\\n\t-it lissy93/adguardian\n```\n\t\n\u003c/details\u003e\n\n---\n\n## Web Mode\n\nThe terminal dashboard can also be viewed via a browser, thanks to [ttyd](https://github.com/tsl0922/ttyd).\n\nAdGuardian is fully compatible with ttyd, so once you've [installed](https://github.com/tsl0922/ttyd#installation) it, you can just precede your run command with ttyd.\nE.g. `ttyd docker run -it lissy93/adguardian` or `ttyd adguardian`\n\nYou can also just use the ttyd-Dockerfile, this will build the latest AdGuardian-Term from github and the latest ttyd and compiles both together into a single dockerfile.\nSo you don't have to install ttyd on the host, due to security reasons.\n\nThis might be useful for embedding into another app or dashboard (like Dashy 😉 - although Dashy already has an [AdGuard widget](https://github.com/Lissy93/dashy/blob/master/docs/widgets.md#adguard-home-block-stats)!) \n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"500\" src=\"https://i.ibb.co/YNYq3xv/adguardian-browser.png\"\u003e\n\u003c/p\u003e\n\nAnother great option is [gotty](https://github.com/yudai/gotty), which works in a similar way. Note that if you want to allow user input, you'll need to pass the `-w` option.\n\nYou can also combine this with a service like [ngrok](https://ngrok.com/) to forward the port, and access the dashboard from anywhere. But be careful to apply the correct access controls!\n\nAnother fun idea, could be to display it on a little screen, either attached or SSH'd into your AdGuard box.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://i.ibb.co/VNL65hZ/20230529-165416.jpg\" width=\"300\" /\u003e\n\u003c/p\u003e\n\n---\n\n## Development\n\n### Prerequisites\n\nYou'll need Rust installed. Run: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` - see the [installation docs](https://forge.rust-lang.org/infra/other-installation-methods.html). You'll also need [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), if you don't already have it.\n\nThen clone the repo, and cd into it, with: `git clone git@github.com:Lissy93/AdGuardian-Term.git` \u0026\u0026 `cd AdGuardian-Term`\n\nYou can view the full list of available project commands in the [`Makefile`](https://github.com/Lissy93/AdGuardian-Term/blob/main/Makefile)\n\n### Run\n\nTo build and run the project for development, run `cargo run`\n\n### Technical Docs\n\nThe documentation can be viewed at: [lissy93.github.io/AdGuardian-Term](https://lissy93.github.io/AdGuardian-Term/adguardian)\n\n### Testing and Quality\n\n- `cargo test` - Run unit tests\n- `cargo check` - Ensure app is compilable\n- `cargo bench` - Execute benchmarks\n- `cargo clippy` - Analyse areas for improvement\n- `cargo doc` - Generate the documentation\n\n### Building\n\nOnce your finished developing, you can build the project for production with: `cargo build --release`\nThe binaries for your system will then be available in the `./target/release/` directory of the project.\nYou can execute this directly, e.g. by running `./target/release/adguardian` (add .exe if on Windows)\n\n### CI / CD\n\nThe testing, building, and publishing of the app is done with GitHub Actions.\nBelow is an outline + current status of each workflow.\n\n| Workflow                                           | Status                                                                                                                                                                |\n|----------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Build Docker image and push to registry            | [![Build Docker Image 🐳](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/build-docker.yml/badge.svg)](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/build-docker.yml) |\n| Compile binaries and upload artifacts to release   | [![Compile Release 🚀](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/release-binaries.yml/badge.svg)](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/release-binaries.yml) |\n| Publish compiled app to crates.io                  | [![Publish to Crates.io 📦](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/push-cargo.yml/badge.svg)](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/push-cargo.yml) |\n| Generate documentation from Rustdoc, upload to GH pages | [![Generate Rust Docs 📝](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/publish-docs.yml) |\n| Sync repo with downstream codeberg mirror          | [![Mirror to Codeberg 🪞](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/mirror.yml/badge.svg)](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/mirror.yml) |\n| Insert list of contributors + sponsors into readme | [![Insert Contributors 👥](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/insert-contributors.yml/badge.svg)](https://github.com/Lissy93/AdGuardian-Term/actions/workflows/insert-contributors.yml) |\n\n---\n\n## Credits\n\n### Contributors\n\n\u003c!-- readme: contributors -start --\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Lissy93\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1862727?v=4\" width=\"80;\" alt=\"Lissy93\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eAlicia Sykes\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/liss-bot\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/87835202?v=4\" width=\"80;\" alt=\"liss-bot\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eAlicia Bot\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/CrazyWolf13\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/96661824?v=4\" width=\"80;\" alt=\"CrazyWolf13\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eTobias\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/shtrophic\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/47949835?v=4\" width=\"80;\" alt=\"shtrophic\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eChristoph\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/kianmeng\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/134518?v=4\" width=\"80;\" alt=\"kianmeng\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eKian-Meng Ang\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/kiuber\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/17628882?v=4\" width=\"80;\" alt=\"kiuber\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eKiuber\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/tromcho\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/113139586?v=4\" width=\"80;\" alt=\"tromcho\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003c!-- readme: contributors -end --\u003e\n\n### Sponsors\n\n\u003c!-- readme: sponsors -start --\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/vincentkoc\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/25068?u=fbd5b2d51142daa4bdbc21e21953a3b8b8188a4a\u0026v=4\" width=\"80;\" alt=\"vincentkoc\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eVincent Koc\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/anivar\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/422943?u=cdf8a8b22ffbfc018b7dd9aae8220902394d01e7\u0026v=4\" width=\"80;\" alt=\"anivar\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eAnivar Aravind\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/BrianCurliss\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/1222949?v=4\" width=\"80;\" alt=\"BrianCurliss\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eBrian Curliss\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/AnandChowdhary\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/2841780?u=747e554b3a7f12eb20b7910e1c87d817844f714f\u0026v=4\" width=\"80;\" alt=\"AnandChowdhary\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eAnand Chowdhary\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/bile0026\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/5022496?u=aec96ad173c0ea9baaba93807efa8a848af6595c\u0026v=4\" width=\"80;\" alt=\"bile0026\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eZach Biles\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/UlisesGascon\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/5110813?u=3c41facd8aa26154b9451de237c34b0f78d672a5\u0026v=4\" width=\"80;\" alt=\"UlisesGascon\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eUlises Gascón\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/InDieTasten\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/7047377?u=8d8f8017628b38bc46dcbf3620e194b01d3fb2d1\u0026v=4\" width=\"80;\" alt=\"InDieTasten\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/araguaci\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/7318668?v=4\" width=\"80;\" alt=\"araguaci\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/bmcgonag\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/7346620?u=2a0f9284f3e12ac1cc15288c254d1ec68a5081e8\u0026v=4\" width=\"80;\" alt=\"bmcgonag\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eBrian McGonagill\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/vlad-tim\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/11474041?u=eee43705b54d2ec9f51fc4fcce5ad18dd17c87e4\u0026v=4\" width=\"80;\" alt=\"vlad-tim\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eVlad\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/helixzz\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/12218889?u=d06d0c103dfbdb99450623064f7da3c5a3675fb6\u0026v=4\" width=\"80;\" alt=\"helixzz\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eHeliXZz\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/mryesiller\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/24632172?u=0d20f2d615158f87cd60a3398d3efb026c32f291\u0026v=4\" width=\"80;\" alt=\"mryesiller\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eGöksel Yeşiller\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/getumbrel\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/59408891?v=4\" width=\"80;\" alt=\"getumbrel\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eUmbrel\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/OlliVHH\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/84959562?v=4\" width=\"80;\" alt=\"OlliVHH\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eHamburgerJung\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/frankdez93\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/87549420?v=4\" width=\"80;\" alt=\"frankdez93\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/BigoudOps\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/101472804?u=5e4948110e48320024f212edf5ae2332b63fc391\u0026v=4\" width=\"80;\" alt=\"BigoudOps\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eJohn BigoudOps\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/terminaltrove\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/121595180?v=4\" width=\"80;\" alt=\"terminaltrove\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eTerminal Trove\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/hudsonrock-partnerships\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/163282900?u=5f2667f7fe5d284ac7a2da6b0800ea8970b0fcbf\u0026v=4\" width=\"80;\" alt=\"hudsonrock-partnerships\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eNull\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/gl0bal01\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/173822055?u=4d323807f120b34da9b156bfd168b46a22844764\u0026v=4\" width=\"80;\" alt=\"gl0bal01\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eGl0bal01 💖 龴ↀ◡ↀ龴\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n        \u003ca href=\"https://github.com/Quad4-Software\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/u/219317474?v=4\" width=\"80;\" alt=\"Quad4-Software\"/\u003e\n            \u003cbr /\u003e\n            \u003csub\u003e\u003cb\u003eQuad4 Software\u003c/b\u003e\u003c/sub\u003e\n        \u003c/a\u003e\n    \u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003c!-- readme: sponsors -end --\u003e\n\n### Dependencies\n\nThis project was made possible by the maintainers of the following dependencies\n- [anyhow](https://github.com/dtolnay/anyhow) - Error objecr for idiomatic error handling\n- [base64](https://github.com/marshallpierce/rust-base64) - Base 64 encoding\n- [chrono](https://github.com/chronotope/chrono) - Date + time parsing and manipulating\n- [colored](https://github.com/mackwic/colored) - Handling of terminal colors\n- [crossterm](https://github.com/crossterm-rs/crossterm) - Term manipulation for kb + mouse events\n- [futures](https://github.com/rust-lang/futures-rs) - Extension of futures for async computation\n- [reqwest](https://github.com/seanmonstar/reqwest) - HTTP client\n- [serde](https://github.com/serde-rs/serde) - Decerilization of JSON responses\n- [tokio](https://github.com/tokio-rs/tokio) - Improved futures\n- [tui-rs](https://github.com/tui-rs-revival/ratatui) - Terminal graphing\n\n---\n\n## Mirror\n\nA mirror of this repository is published at: [codeberg.org/alicia/adguardian](https://codeberg.org/alicia/adguardian)\n\n---\n\n## Alterntives\n\nThis project was heavily inspired by [PADD](https://github.com/pi-hole/PADD) - terminal status for Pi-Hole users. If you're running [Pi-Hole](https://pi-hole.net/) instead of AdGuard, I highly recommend you check that out, as it's awesome.\n\nOther developers have built similar AdGuard Home monitoring programs for mobile, including:\n- iOS app: [AdGuard Home Remote](https://apps.apple.com/us/app/adguard-home-remote/id1543143740) by RocketScience IT\n- Android app: [AdGuard Home Manager](https://play.google.com/store/apps/details?id=com.jgeek00.adguard_home_manager) by [JGeek00](https://github.com/JGeek00)\n\nIf you're looking for more AdGuard add-ons, then check [this section](https://github.com/AdguardTeam/AdGuardHome#uses) of their repo.\n\nIf you're running [Dashy](https://github.com/Lissy93/dashy/) (a Homelab Dashboard app (which I am the author of)), then there's also 4 [AdGuard Home Widgets](https://github.com/Lissy93/dashy/blob/master/docs/widgets.md#adguard-home-block-stats).\n\nBefore I created this, I first built the same product in Go Lang. You can view that [here](https://github.com/Lissy93/OLD_AdGuardian-Term) - it's fully functional, but not as good as the Rust version (There were some valuable lessons that I learnt the hard way about choosing the right tech stack).\n\n---\n\n## Contributing\n\nContributions of any kind are very welcome (and would be much appreciated!)\nFor Code of Conduct, see [Contributor Convent](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).\nFor project setup, see the [Development](#development) section.\n\n#### New here?\nTo get started, fork the repo, make your changes, add, commit and push the code, then come back here to open a pull request. If you're new to GitHub or open source, [this tutorial](https://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3#let-s-make-our-first-pull-request-) may help, I've also put some beginner guides together at [git-into-open-source](https://github.com/Lissy93/git-into-open-source) - but feel free to reach out if you need any support.\n\n#### Not a coder?\nYou can support the project in other ways too, drop us a star, consider sponsoring us on GitHub, share within your network, and report any bugs you come across.\n\n---\n\n## License\n\n\n\u003e _**[Lissy93/AdGuardian-Term](https://github.com/Lissy93/adguardian-term)** is licensed under [MIT](https://github.com/Lissy93/adguardian-term/blob/HEAD/LICENSE) © [Alicia Sykes](https://aliciasykes.com) 2023._\u003cbr\u003e\n\u003e \u003csup align=\"right\"\u003eFor information, see \u003ca href=\"https://tldrlegal.com/license/mit-license\"\u003eTLDR Legal \u003e MIT\u003c/a\u003e\u003c/sup\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand License\u003c/summary\u003e\n\n```\nThe MIT License (MIT)\nCopyright (c) Alicia Sykes \u003calicia@omg.com\u003e \n\nPermission is hereby granted, free of charge, to any person obtaining a copy \nof this software and associated documentation files (the \"Software\"), to deal \nin the Software without restriction, including without limitation the rights \nto use, copy, modify, merge, publish, distribute, sub-license, and/or sell \ncopies of the Software, and to permit persons to whom the Software is furnished \nto do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included install \ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\nINCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A\nPARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n\n\u003c/details\u003e\n\n\u003c!-- License + Copyright --\u003e\n\u003cp  align=\"center\"\u003e\n  \u003ci\u003e© \u003ca href=\"https://aliciasykes.com\"\u003eAlicia Sykes\u003c/a\u003e 2023\u003c/i\u003e\u003cbr\u003e\n  \u003ci\u003eLicensed under \u003ca href=\"https://gist.github.com/Lissy93/143d2ee01ccc5c052a17\"\u003eMIT\u003c/a\u003e\u003c/i\u003e\u003cbr\u003e\n  \u003ca href=\"https://github.com/lissy93\"\u003e\u003cimg src=\"https://i.ibb.co/4KtpYxb/octocat-clean-mini.png\" /\u003e\u003c/a\u003e\u003cbr\u003e\n  \u003csup\u003eThanks for visiting :)\u003c/sup\u003e\n\u003c/p\u003e\n\n\u003c!-- Dinosaurs are Awesome --\u003e\n\u003c!-- \n                        . - ~ ~ ~ - .\n      ..     _      .-~               ~-.\n     //|     \\ `..~                      `.\n    || |      }  }              /       \\  \\\n(\\   \\\\ \\~^..'                 |         }  \\\n \\`.-~  o      /       }       |        /    \\\n (__          |       /        |       /      `.\n  `- - ~ ~ -._|      /_ - ~ ~ ^|      /- _      `.\n              |     /          |     /     ~-.     ~- _\n              |_____|          |_____|         ~ - . _ _~_-_\n--\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flissy93%2Fadguardian-term","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flissy93%2Fadguardian-term","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flissy93%2Fadguardian-term/lists"}