computr
TLDR; You can think of computr as an open source, airgap compatible alternative to Plug wallet that trades off convenience for better security and granular control.
What Is It?
computr is a browser extension *wallet interface for the Internet Computer that allows you to manage your signing keys entirely outside of the browser. Instead of storing private keys within the extension itself, computr intercepts each canister call request and displays the dfx command needed to sign it in your terminal. Once you paste the signed response back in, it submits the response on your behalf, making the workflow compatible even with airgapped setups.
Why?
The Internet Computer deserves a better open source wallet. For those of us who have been around, once Plug wallet was acquired and went closed sourced, there was no way to verifiably trust it any more. Not only may you be trusting the keys to your life savings on an extension that you do not know what data is being sent to external servers, but since itās distributed by a centralized web store, most people who still use Plug are also likely trusting extension auto-updates, and not to mention, Googleās distribution integrity, which I personally donāt think is a good long-term strategy.
So along came Oisy wallet from DFINITY, who we all thought was supposed to be developing the protocol, not products. Regardless, this is my reccomended hot wallet for a good balance between security and practicality. But the issue is that Oisy is much too complicated and cannot in any practical way be self-deployed as it is tied closely to the Oisy domain and DFINITY infrastructure. I also donāt think we should all be centralizing around a single wallet workflow as the end-all solution. What if hypothetically, DFINITY in a whim decides to.. letās say.. enforce Oisy 2.0 with features no one likes? They would never do that right? There is no precedent for this right? Right? ā¦
The second gripe I have with Oisy is that back when Plug was āsafeā to use, the wallets were recoverable by seed phrase, but Oisy does not let you import your identity from seed phrase (as far as I am aware). I get that this partly comes down to personal preference, but I like the BIP39 seed phrase implementation in that it is a cross-chain standard and you can use it with physical steel wallets, plus it comes with creative custody solutions like multi-sig. Of course, this has its tradeoffs (could get lost, stolen etc.), but for what itās worth, it canāt get bricked (as is all too common with our hardware devices) and itās also not based on the good faith of Big Tech companies like the auth solutions that Internet Identity now offers (Google, Microsoft..). Furthermore, according to stats, most people store their passkeys on a password provider implemented by a Big Tech company. Is this really the direction we wanted to go?
For this reason, I think when used cautiously, computr has laid the groundwork to be the safest wallet workflow on the IC (albeit there are some dangerous features). I refer to computr as a wallet interface, because the wallet part of the flow is actually being handled by dfx (cli) and computr is just the interface that serves as the bridge to the browser context. But computr doesnāt only represent a paradigm shift in security/privacy, itās also a very interesting tool for dissecting (poorly architected) IC web apps. The main reason it is usable at all is because it can spoof itself as Plug wallet, making it compatible with most dApps if they already have Plug wallet integrations.
Hereās where things get spicy.. if a dApp is relying solely on the frontend and Plug to resolve critical app logic and fails to verify important details with the IC backend (hopefully no one actually does this), there are going to be some fatal flaws that can be exposed through computr (and in all honesty, could have been exposed in many other ways as well). The development of computr naturally progressed into having features such as signing a transaction as a different user than what the frontend perceives, modifying the args of the canister call requested, fabricating responses to the frontend, and editing the response from a transaction before it gets passed back to the dApp. For the record, trusting the data returned from a wallet provider as infallible was never a correct assumption to make. Hopefully computr will bring more awareness to such novice design flaws and prompt dApp creators to make more secure decisions when it comes to gluing together their frontend and backend.
Post Script
This was a long time in the making, I think I started this project before or around the time of the first release of Oisy, but Iām not entirely sure anymore. I was really only able to finish it due to AI coding agents suddenly becoming āgoodā at coding and quickly finishing all the tedious work. I wish I had been able to finish the project back when the IC had a more vibrant user base, but it is what it is. I still consider it an important project for me personally and also for the IC ecosystem.
Screenshots
ā¦Nevermind, looks like I canāt embed them here.
You can find screenshots on the šĢ¶šĢ¶šĢ¶šĢ¶šĢ¶š»Ģ¶ Codeberg repo below
Help
I wonāt even ask for coffee. But..
If you have an X account, I havenāt been active for a long time so if you want to help boost visibility hereās the post
https://x.com/swagcomputer/status/2079998237562355728
If you have a Codeberg account (or decide to create one because youāre fed up with GitHub) please consider star-ing the repo.
Source Code:
https://codeberg.org/bradyinfinity/computr
Download computr: