Polykey is an open-source, peer-to-peer system that addresses the critical challenge in cybersecurity: the secure sharing and delegation of authority, in the form of secrets like keys, tokens, certificates, and passwords.
It allows users including developers, organizations, and machines—to store these secrets in encrypted vaults on their own devices, and share them directly with trusted parties.
All data is end-to-end encrypted, both in transit and at rest, eliminating the risk associated with third-party storage.
Polykey provides a command line interface, desktop and mobile GUI, and a web-based control plane for organizational management.
By treating secrets as tokenized authority, it offers a fresh approach to managing and delegating authority in zero-trust architectures without adding burdensome policy complexity - a pervasive issue in existing zero-trust systems.
Unlike complex self-hosted secrets management systems that require specialized skills and infrastructure, Polykey is installed and running directly from the end-user device.
It is built to automatically navigate network complexities like NAT traversal, connecting securely to other nodes without manual configuration.
Key features:
This repository is the core library for Polykey.
The Polykey project is split up into these main repositories:
Have a bug or a feature-request? Please submit it the issues of the relevant subproject above.
For tutorials, how-to guides, reference and theory, see the docs.
Have a question? Join our discussion board.
Have a security issue you want to let us know? You can contact us on our website.
Our main website is https://polykey.com
npm install --save polykey
Run nix-shell
, and once you're inside, you can use:
# install (or reinstall packages from package.json)
npm install
# build the dist
npm run build
# run the repl (this allows you to import from ./src)
npm run ts-node
# run the tests
npm run test
# lint the source code
npm run lint
# automatically fix the source
npm run lintfix
When calling commands in development, use this style:
npm run polykey -- p1 p2 p3
The --
is necessary to make npm
understand that the parameters are for your own executable, and not parameters to npm
.
npm run docs
See the docs at: https://matrixai.github.io/Polykey/
# npm login
npm version patch # major/minor/patch
npm run build
npm publish --access public
git push
git push --tags
Generated using TypeDoc