{"id":14420518,"url":"https://github.com/defguard/client","last_synced_at":"2026-04-01T19:40:31.214Z","repository":{"id":201176088,"uuid":"684021788","full_name":"DefGuard/client","owner":"DefGuard","description":"Sole VPN client implementing Multi-Factor Authentication on WireGuard® VPN connection","archived":false,"fork":false,"pushed_at":"2026-03-31T06:27:19.000Z","size":17522,"stargazers_count":359,"open_issues_count":77,"forks_count":31,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-03-31T08:40:50.693Z","etag":null,"topics":["2fa","mfa","multi-factor-authentication","sso","vpn","wireguard"],"latest_commit_sha":null,"homepage":"https://defguard.net","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DefGuard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"custom":["https://defguard.net/pricing/"]}},"created_at":"2023-08-28T09:35:17.000Z","updated_at":"2026-03-31T06:26:25.000Z","dependencies_parsed_at":"2026-01-17T11:06:27.981Z","dependency_job_id":null,"html_url":"https://github.com/DefGuard/client","commit_stats":null,"previous_names":["defguard/client"],"tags_count":171,"template":false,"template_full_name":null,"purl":"pkg:github/DefGuard/client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefGuard%2Fclient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefGuard%2Fclient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefGuard%2Fclient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefGuard%2Fclient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefGuard","download_url":"https://codeload.github.com/DefGuard/client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefGuard%2Fclient/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["2fa","mfa","multi-factor-authentication","sso","vpn","wireguard"],"created_at":"2024-08-29T22:01:07.518Z","updated_at":"2026-04-01T19:40:31.178Z","avatar_url":"https://github.com/DefGuard.png","language":"TypeScript","readme":" \u003cp align=\"center\"\u003e\n    \u003cimg src=\"docs/header.png\" alt=\"defguard\"\u003e\n \u003c/p\u003e\n\n# Defguard desktop client\n\nDesktop client for managing WireGuard VPN connections (any WireGuard server and [defguard](https://github.com/DefGuard/defguard) instances).\n\n![defguard desktop client](https://defguard.net/images/product/client/main-screen.png)\n\n## Features\n\n- Supports any WireGuard server\n- Multi-platform - Linux, macOS \u0026 Windows\n- Detailed network overview - see all details of your connection history and statistics with real-time charts and logs\n- Multi-Factor Authentication with TOTP/Email \u0026 WireGuard PSK - Since WireGuard protocol doesn't support 2FA, most (if not all) available WireGuard clients use 2FA authorization to the \"application\" itself (not Wireguard tunnel). When using this client with [defguard VPN \u0026 SSO server](https://github.com/DefGuard/defguard) (which is \u003cstrong\u003efree \u0026 open source\u003c/strong\u003e) you will get \u003cstrong\u003ereal Multi-Factor Authentication using TOTP/Email codes + WireGuard Pre-shared session keys\u003c/strong\u003e.\n- Multiple instances \u0026 locations - When combining with [defguard](https://github.com/DefGuard/defguard) VPN \u0026 SSO you can have multiple defguard instances (sites/installations) and multiple Locations (VPN tunnels in that location/site) in \u003cstrong\u003eone client\u003c/strong\u003e! If you are an admin/devops - all your customers (instances) and all their tunnels (locations) can be in one place!\n- Fast! - Built with Rust, [tauri](https://tauri.app/) and [React.js](https://react.dev/).\n\nTo learn more about the system see our [documentation](https://docs.defguard.net).\n\n## Development\n\n### Tauri requirements\n\nMake sure to install prerequisites from [tauri](https://tauri.app/v1/guides/getting-started/prerequisites/).\n\n### Proto submodule\n\nMake sure you have cloned, and up to date, proto submodule in `src-tauri/proto`\n\n### Protoc compiler\n\nMake sure you have [protoc](https://grpc.io/docs/protoc-installation/) available.\n\n### Install pnpm and node deps\n\n```bash\npnpm install\n```\n\n### Sqlx and local database file\n\nTo work with sqlx on a local db file, you'll have to set `DATABASE_URL` env variable.\nIt's best to set it to absolute path since `pnpm tauri dev` runs with weird paths.\n\nInit the file with:\n\n```bash\nexport DATABASE_URL=sqlite://\u003cfull-path-to-project-dir\u003e/dev.db`\nsqlx db create\nsqlx migrate run --source src-tauri/migrations/\n```\n\nThen keep the `$DATABASE_URL` set during development (use direnv etc.)\n\n### Dev server command\n\n```bash\npnpm tauri dev\n```\n\n### Build command\n\n```bash\npnpm tauri build\n```\n\nBuilt packages are available after in `src-tauri/target/release/bundle`.\n\n### Windows\n\nFor windows development you'll need:\n\n1. The `stable-x86_64-pc-windows-gnu` Rust toolchain. Use `rustup` to change the toolchain:\n\n```\nrustup install stable-x86_64-pc-windows-gnu\nrustup default stable-x86_64-pc-windows-gnu\n```\n\n2. Install [MSYS2](https://www.msys2.org/)\n\n3. Then run this in the MSYS2 terminal:\n\n```\npacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-nasm\n```\n\n4. Finally add msys to your PATH:\n\n```\n# cmd\nset PATH=C:\\msys64\\ucrt64\\bin;%PATH%\n# power-shell\n$env:PATH = \"C:\\msys64\\ucrt64\\bin;\" + $env:PATH\n```\n\nMore info can be found [here](https://stackoverflow.com/a/79640980).\n\n# Legal\n\n## Trademarks\n\nWireGuard® is [registered trademarks](https://www.wireguard.com/trademark-policy/) of Jason A. Donenfeld.\n\n## Third-Party Licenses\n\nThis product includes third-party software components.\nThe licenses for these components are provided in the \"licenses\" directory\nincluded with this distribution.\n\nFor details, see:\n  licenses/THIRD_PARTY_LICENSES.txt\n\n# Known issues\n\n## Failed to bundle project\n\n`pnpm tauri build` may fail with error: `Error failed to bundle project: error running appimage.sh`. To\nfix this set the NO_STRIP environment variable:\n\n```\nNO_STRIP=1 pnpm tauri build\n```\n\n## Blank screen\n\nThe app launches but the window is blank. Set the `WEBKIT_DISABLE_DMABUF_RENDERER` environment variable:\n\n```\nWEBKIT_DISABLE_DMABUF_RENDERER=1 defguard-client\n```\n\n## Failed to run `pnpm tauri dev`\n\n`pnpm tauri dev` command may result in the following error:\n\n```\nError [ERR_REQUIRE_ESM]: require() of ES Module /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/path-type@5.0.0/node_modules/path-type/index.js from /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/read-pkg@3.0.0/node_modules/read-pkg/index.js not supported.\nInstead change the require of /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/path-type@5.0.0/node_modules/path-type/index.js in /home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/read-pkg@3.0.0/node_modules/read-pkg/index.js to a dynamic import() which is available in all CommonJS modules.\n    at TracingChannel.traceSync (node:diagnostics_channel:315:14)\n    at Object.\u003canonymous\u003e (/home/jck/workspace/work/teonite/defguard/client/node_modules/.pnpm/read-pkg@3.0.0/node_modules/read-pkg/index.js:4:18) {\n  code: 'ERR_REQUIRE_ESM'\n}\n\nNode.js v22.7.0\n ELIFECYCLE  Command failed with exit code 1.\n       Error The \"beforeDevCommand\" terminated with a non-zero status code.\n ELIFECYCLE  Command failed with exit code 1.\n```\n\nTo fix this remove node_modules and rerun `pnpm install`.\n","funding_links":["https://defguard.net/pricing/"],"categories":["Applications"],"sub_categories":["Security"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefguard%2Fclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefguard%2Fclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefguard%2Fclient/lists"}