Determinist // Devlog 2 // 2026.08.01
Welcome back to the second devlog of Determinist! It’s been a while, so let’s recap what happened…
Release!!
The first official release of Determinist is here! You can check out the GitHub page to learn more.
Algorithm V2
Quite a few changes here.
- I changed the algorithm so that it uses the bytes that Argon2 returns
- The bytes are now mapped to characters in a shuffled charset
- Insert/Replace modes have been removed because special characters are already in the charset
- You can now construct your own charset
Typer
I made my CLI with Typer, which was a challenge to say the least. This is my first time using it, and looking back, it wasn’t THAT bad.
All I had to do is refactor generator.py completely, and make my types compatible (which I worked REALLY HARD on for V1).
Typer doesn’t allow me to use things like lists and dictionaries, both of which are essential, but I managed to change everything in a way that’s mostly straightforward. I can split strings into a list and use JSON for dictionaries.
Refactoring Challenges
This is pretty funny. I wrote a series of tests for version 2 of the algorithm before I started implementing Typer. After than however, all tests passed except one. I was supposed to use assertUnequal(), but used the opposite instead, and that was I caught an error in my code that would’ve went unnoticed.
The tests saved me another time, when I noticed that changing the order in which the charset character types are written changes the output, which is not what I need because it’s essentially the same input, and it should be more like a toggle.
The fix was making the charset canonical. The algorithm goes through the list, writes the correct characters into a string, and uses that in the salt instead of the list of the charset.
Other
- The
Generatorclass was removed, as it served no purpose.
Comments 8
Yooo this project sounds really cool. I’m curious though, if someone got hold of a password that was generated using this for one website, could they then use that to figure out your master password? Or do you have something to protect against that? (I don’t know much about cryptography and stuff so apologies if it’s a silly question lol)
@Carlisle Hey, no such thing as bad questions! Your master password is encrypted by Argon2 and the output is shuffled multiple times at different points in the generation. The character set you’re using is shuffled, and the password is shuffled at the end before it is returned to you.
TL;DR: The master password cannot be recovered from the generated password
Ok this is awesome then. Is there even actually any disadvantage of this over a traditional password manager like Keeper or LastPass?
The only disadvantage of this that I can think of is if a website address changes, then you could be locked out if you don’t remember the original URL.
@Carlisle It’s important to note that Determinist does NOT manage or store your passwords, it only generates them for you. Please refer to the disclaimer on the GitHub page about that. Forgetting the URL can definitely make your password unrecoverable though. However, you don’t need to use the URL of a website as any string will do. It is merely part of the (or in case of V1, it is the) salt that Argon2 uses along with your master pass. This means you can use any string you’d like on both the master and the salt inputs. I plan on eventually making a website so you can access it from mobile and maybe(!) a browser extension. If you got any other questions, feel free to ask!
I know it doesn’t store the passwords, but so long as you remember your master password and the website URL, it doesn’t need to store the password, as you can easily get it by running the regeneration command again, right?
Why doesn’t something like this exist already lol, this seems like if it had a nice interface, it would be way better than a password manager (and already is practicality wise imo)
@Carlisle yes, you can absolutely regenerate all your passwords you have made with it, if you know your inputs. Essentially you can just “store” the passwords in your head even if they’re all different. And thank you! After some QoL features such as presets I’ll start working on the website, which I’m planning on releasing publicly on my domain. If you have any suggestions, feel free to share!
Awesome, can’t wait for the website!
Sign in to join the conversation.