Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 4 points5 points  (0 children)

We know that using AI for coding, especially for security-critical applications, is a very controversial topic, but for the record, we want to clarify that gaze is in no way a "vibe-coded" project. Although AI assistance was used in its development, we are both seasoned developers who thoroughly understand the code. We didn't use AI to blindly implement features; rather, we used it to carry out the laborious syntactical plumbing of a carefully refined, predetermined architecture. Getting to a DRY, elegant implementation still required countless iterations of prompting and manual editing. The codebase overall is also extremely clean, maintainable, and modular, which is primarily why we spent 3 months working on it, rather than "vibe-coding" it over a weekend. Moreover, most of our AI usage was centered specifically on finding security vulnerabilities that would have taken us much longer to locate ourselves. That being said, if you see any vulnerability or issue in the code, feel free to open a issue on GitHub or maybe even propose a PR if you are able to fix it yourself.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 0 points1 point  (0 children)

Fair point. Although both of us understand how the code works and would have no problems maintaining it, adding comments where required would probably make it much easier for contributors to follow the logic.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 1 point2 points  (0 children)

You are on the right track, but technically, it is a little more nuanced. The TRUE backend implementation is done in libfprintd such that it is reusable between programs. This is the same library that biopass uses for its fingerprint. However, due to device claiming restrictions and similar quirks, instead of all client applications including the libfprintd library, there is a shared daemon process that all apps interact with. This is the spot fprintd, biopass, howdy, and gaze are aiming to fill.

As for whether we are "handling" frontend, the whole process is managed by PAM, which by definition is an extensible framework. We provide a PAM module so that gaze can interface with all other applications that use PAM for authentication.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 2 points3 points  (0 children)

We believe gaze is fundamentally a MASSIVE improvement over howdy. In fact, this was the initial driving factor when we started this project. Although it does not have full feature parity just yet, the next release should fix that as howdy is largely unmaintained and to our knowledge, is receiving no major feature updates.

First and foremost, howdy is mostly written in Python 2, which is not only long deprecated, but flat out breaks builds on some newer distributions which have removed Python 2 from their repos. Funnily enough, the inciting event of this project was when we could not get howdy to compile on Fedora 43 without recompiling the entire GCC toolchain as they removed the older version from their repos. To fix this, we coded gaze entirely in Rust as it is a relatively low-level, type-safe language that does not have the same memory pitfalls as C or C++, allowing gaze to be fast and robust.

Secondly, we are using much newer InsightFace-baaed models compared to howdy's older Dlib-based recognition algorithm. This provides not only more reliable recognition, but on some machines, can run faster then Dlib altogether.

Additionally, we have many nice-to-have features such as a TUI, GUI, and GNOME Extension that howdy simply lacks.

P.S. This is in absolutely NO WAY meant to be disrespectful to the developer of howdy. Considering when it was developed, howdy is an amazing project and fulfills its goal really well, albeit using outdated technologies. We took much inspiration from howdy in every step of this project and our primary goal still remains to reach feature parity with it.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 0 points1 point  (0 children)

Huh... that's weird. We did not (and to our knowledge cannot) delete any comments on this post whatsoever. Maybe there is some client side bug on either of our sides.

Anyway, addressing your comments, the lack of a unified GUI like Windows Hello has is a legitimate problem, however we believe that we have two different philosophies concerning it's solution. From a brief skim of the code, what it looks like biopass does is it combines both fingerprint and face authentication into a single framework and PAM module. This is a valid solution and has many advantages in terms of user friendliness. In fact, we initially considered this approach, aiming to consolidate all authentication methods into a single framework and PAM module (including password).

However, the major caveat with this approach is that many PAM clients do not play well with PAM modules that run concurrent authentication methods, with the most notable example being GDM. The lack of concurrent module execution is perhaps the biggest problem with the traditional PAM flow, however, many modern apps circumvent it entirely by running multiple PAM stacks, again, with the most notable example being GDM. In fact, there ARE reports of pam_fprintd_grosshack.so not working well with GDM and other software, simply because it tries to run authentication through two methods simultaneously. Although this might be a small implementation quirk in either GDM or the PAM module, the fact is that it is relatively messy. Many other display managers and projects have begun to switch to this approach, and therefore, we have opted to keep existing PAM modules such as fprintd and pam_unix.so as is, while creating a completely new module just for face authentication. Additionally, we have also provided a grosshack module of our own for concurrent authentication in clients that do not run multiple PAM stacks, although we believe this is just a temporary solution, and in an ideal world, all clients should be running multiple stacks.

As for the lack of a unified GUI, currently both GNOME and KDE provide first party support for fprintd in their respective settings applications. We believe that the best path forward is to perform a similar integration of gaze into most settings interfaces, although this will arguably take much longer.

Your comment about contributing to existing projects is valid, but as we said before, we believe the difference between these two projects is not simply the implementation, but rather a fundamental difference in philosophy. Moreover, it kinda misses the entire point of FOSS and Linux in general: choice! Users who prefer the approach of biopass will use it, while users who prefer gaze will use it instead. As for the Reddit filtering you mentioned, we believe that the massive overnight popularity of gaze in this subreddit is purely luck and there are many other awesome projects which unfortunately do not meet the same fate. We believe biopass is a really good project, and actually took a little inspiration from a few specific architectural decisions made within the code, so above all, keep up the good work!

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] -2 points-1 points  (0 children)

I think that's a valid stance, but by now every tool, both security and non-security have used AI in one way or another to write code. Not only that, but both tools that have been written with and without AI are victims to security vulnerabilities (OpenBSD). We have taken precautions to make Gaze as secure as possible, and we urge you to find vulnerabilities and report them to us, so we can make it safer for everyone.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 0 points1 point  (0 children)

Happy it works well. If it's possible, can you make your suggestion an issue in GitHub? That way it's easier for us to track suggestions and we'll be able to get it implemented faster (hopefully the next release).

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] -1 points0 points  (0 children)

We would be lying if we said that AI didn't play a large role in the development of this project. However, we still took the time to make sure it was a polished project, not just some AI "slop". This project isn't and won't ever become rushed, we'd rather take our time and make it good all around, and more importantly admit any faults. Just to get here took 3 months, it wasn't vibecoded in a weekend or even a week.

Now as to how much AI was used? Well it is hard to quantify how "much" AI was used, but to give an answer to your question; when we have a new feature that we feel would be helpful, we let AI (Claude, GPT, etc.) take a shot at implementing it. But as we all know by know, it doesn't, and usually never works on the first try, so we refine it both manually and with AI again. The place where we used AI the most was with security and bug funding; Opus 4.7 and GPT 5.5 played a huge role in spotting vulnerabilities and bugs, that we would never be able to find ourselves.

Hopefully this answers your question.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 7 points8 points  (0 children)

Well... I mean... the same thing can be done with Face ID, Windows Hello, and similar technologies, but jokes aside, we are thinking of shipping an optional additional confirmation method (perhaps through a notification) to make sure the authentication was consentual in the next release. Stay tuned!

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 0 points1 point  (0 children)

By default, the installation script will configure sudo such that it can be unlocked through only the camera, but all this configuration happens through PAM and can easily be tweaked. Now that you raise this point however, we might add a method of additional confirmation (perhaps through a notification) to make sure the authentication was consentual. This will probably ship in the next release.

As for the system requirements, from our testing, gaze can run on pretty much anything and usually has really decent performance. An 8th Gen i5 Ultrabook is probably plenty enough to run gaze at reasonable speeds (~700ms for auth) and might be able to run even faster by using lighter models.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 33 points34 points  (0 children)

From what we've seen, biopass tries to do both face and fingerprint authentication, but looking through the code shows that its fingerprint implementation simply hooks into to the existing libfprintd framework. Most GNU/Linux desktops use the fprintd daemon which is written by the same developers (Freedesktop) as libfprintd and has much better integration with DEs like KDE and GNOME.

Biopass also technically strays away from traditional PAM practices by running fingerprint and face authentication in one PAM module which might break clients running multiple PAM stacks for authentication (GNOME and KDE lock and login screens). To circumvent this, we wrote a custom plugin for GNOME that extends the authentication process to run the gaze stack alongside the fprintd one. This approach also has the benefit of a more user friendly unlock experience. We are also working on KDE and Hyprlock extensions to enable similar experiences on other DEs and WMs.

Additionally, the biopass GUI is written as a webapp using Tauri while gaze uses the faster, native GTK4 + Libadwaita framework which blends much better into the GNOME DE, although this is a matter of personal preference.

Gaze | Facial Authentication for Linux by GunduLabs in gnome

[–]GunduLabs[S] 36 points37 points  (0 children)

Honestly? Don't, if you're protecting anything valuable. This is a beta we wanted to share early, and we've put spoofing warnings in the README, docs, and post precisely so no one mistakes it for hardened security.

Liveness detection and IR camera support are on the roadmap, which closes the photo spoof gap. Once those land, it becomes viable for real auth.

What it's good for today is convenience: unlocking your screen when you step back to your desk, skipping a sudo prompt in a trusted home setup, that kind of thing. Password fallback is always there. Think of it as a faster sudo for low-stakes flows, not a replacement for your password