![](https://private-user-images.githubusercontent.com/8351121/302226935-096d909f-2088-4a9c-afbd-b753e237d457.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MDE1MjgsIm5iZiI6MTczOTYwMTIyOCwicGF0aCI6Ii84MzUxMTIxLzMwMjIyNjkzNS0wOTZkOTA5Zi0yMDg4LTRhOWMtYWZiZC1iNzUzZTIzN2Q0NTcuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA2MzM0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg1MjVkOGVlMWFjODM5Nzc3MDlmYjc5YmZlMGVmYzIyM2JmZmYwMzExMGM1ZTU5NmM4YjgwYjA5ZjI5MWE0ZTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.o02lI2EPq6HTYIpL4U7sDc0rjRZ4s5iAVwjnt9mJTm4)
![](https://private-user-images.githubusercontent.com/8351121/302227002-0200090d-ec21-4b3c-b820-4caaebe86921.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MDE1MjgsIm5iZiI6MTczOTYwMTIyOCwicGF0aCI6Ii84MzUxMTIxLzMwMjIyNzAwMi0wMjAwMDkwZC1lYzIxLTRiM2MtYjgyMC00Y2FhZWJlODY5MjEuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA2MzM0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE2NjUzYjNkMzE4YTUxZjJmZDI4ZmJlYjU0YWYyYWRmMDljZGEzZmU5YmYxZTFkN2U2MTFkZWUyY2IzZGQxNDcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.iUb-NbvAgrt5k-R6xLIjeLVK40QjYKeu6XmKQxCBqb4)
![](https://private-user-images.githubusercontent.com/8351121/302227533-3fc66203-4fc1-4299-af19-86422fbccd21.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MDE1MjgsIm5iZiI6MTczOTYwMTIyOCwicGF0aCI6Ii84MzUxMTIxLzMwMjIyNzUzMy0zZmM2NjIwMy00ZmMxLTQyOTktYWYxOS04NjQyMmZiY2NkMjEuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA2MzM0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRmZWNjOWJhNDg5MzFmNzAxMDg1MDRmNDljMThlNzBhZjRmZGIzZDAwM2M0MTgyMGZjY2FiZTZkY2QzYzlkNmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.NBZiFx7nyQdcdZErGAmHjkmEiDSl6FQsIefX1eA557w)
![](https://private-user-images.githubusercontent.com/8351121/302227539-b04b543a-5652-4d8a-94a3-1506ac41a2b4.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MDE1MjgsIm5iZiI6MTczOTYwMTIyOCwicGF0aCI6Ii84MzUxMTIxLzMwMjIyNzUzOS1iMDRiNTQzYS01NjUyLTRkOGEtOTRhMy0xNTA2YWM0MWEyYjQuanBlZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA2MzM0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjNDQ4MzkyYzdmOTdiNWQwNGE1Y2RhMDFjNzMyNDliMzJiNGVjZDc1YTc5ZGQyMDlkYmRmNjFiNGViMzM4MGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.vdwtMHKL0GOHfkDyCl0U3yB8eRXEm05ndHAyMqGvh-s)
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.