![](https://private-user-images.githubusercontent.com/8351121/302226935-096d909f-2088-4a9c-afbd-b753e237d457.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTI3NTcsIm5iZiI6MTczOTA5MjQ1NywicGF0aCI6Ii84MzUxMTIxLzMwMjIyNjkzNS0wOTZkOTA5Zi0yMDg4LTRhOWMtYWZiZC1iNzUzZTIzN2Q0NTcuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA5MTQxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc5ZDI2MDVmYjQyYjZiY2RkYThiNjMzN2NiYzIwOTFhNWU5MDNkZmNjZWQ4N2EyM2MxOWRmZWFjMmQyMGRmOTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.3sUf6un4KmnjIeBQ_bjp9aumO0K_Do8aiUGvoYYChlY)
![](https://private-user-images.githubusercontent.com/8351121/302227002-0200090d-ec21-4b3c-b820-4caaebe86921.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTI3NTcsIm5iZiI6MTczOTA5MjQ1NywicGF0aCI6Ii84MzUxMTIxLzMwMjIyNzAwMi0wMjAwMDkwZC1lYzIxLTRiM2MtYjgyMC00Y2FhZWJlODY5MjEuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA5MTQxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY2MjgwMDFmNmU4YzgwNzUyNzI4NzBjNzhkNzllNzA2NTE0NzllYzRhMWM4ZDI5NzVhYzE3NzEzNTAxMDYwOWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.HyRHaiFAkeToP9ouymAPogSuXLse9lZ3DUzOh26yZCM)
![](https://private-user-images.githubusercontent.com/8351121/302227533-3fc66203-4fc1-4299-af19-86422fbccd21.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTI3NTcsIm5iZiI6MTczOTA5MjQ1NywicGF0aCI6Ii84MzUxMTIxLzMwMjIyNzUzMy0zZmM2NjIwMy00ZmMxLTQyOTktYWYxOS04NjQyMmZiY2NkMjEuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA5MTQxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJlMDBiZWY5NGJiYjZmYjU3MDJjMjVkOTA5NDAwMGIzZDExOWM4NGVhNzUxY2I5NWEyNjhlYTQ2N2UwYTM2NWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.A85B-HK2HXreTLfAyAhuS10GRm85gp9QqIDOBwRa6s4)
![](https://private-user-images.githubusercontent.com/8351121/302227539-b04b543a-5652-4d8a-94a3-1506ac41a2b4.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwOTI3NTcsIm5iZiI6MTczOTA5MjQ1NywicGF0aCI6Ii84MzUxMTIxLzMwMjIyNzUzOS1iMDRiNTQzYS01NjUyLTRkOGEtOTRhMy0xNTA2YWM0MWEyYjQuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA5MTQxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU4NWM5MzgwOWE2ODQyYzdjMjE3OTRlNTkzMDJjYjQzNzQ4MGY1YmJkZDNkNmUzYzA3MWUyZWEyZWMyMjQ3N2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.5eqeZQDMkKD7U7UFLeURHuue0NXM4rAYtbx29FI6cZQ)
Cuckoo Authenticator is an open source and self hosted Time-Based One-Time Password (TOTP) manager.
It consists of a server and clients components. It is designed to maintain end-to-end encryption between its components and follows ”zero-knowledge” (aka no-knowledge or zero access) principle.
Server component is written in Go and its source code is available here https://github.com/cuckoo-authenticator/server under AGPL-3.0 license. Docker image is available here https://hub.docker.com/repository/docker/serhiylunak/cuckoo/general.
There is a client available for iOS platform and I am currently using it on a daily basis. Its source code is not available yet. I will be registering Apple Developer account and publishing the app on its App Store under TestFlight program.
Apps for other platforms are planned with the following priority order: Android, Chrome Browser Extension.
I would love to understand if there is any interest in this self hosted TOTP solution. Please leave your opinion here.