Skip to main content


Polykey is a set of open source projects:

Polykey Core

The Polykey core contains the service, domain business logic and persistence layers of Polykey.

It is written in TypeScript and C++.

The codebase is intended to be cross-platform, however it is currently only tested on Linux.

As a contributor, this would be your entrypoint to Polykey.


At this point in time, the Polykey core library also contains all of the CLI code. This means in order to use Polykey, you must use the Polykey core library. We intend to extract out the CLI code, and move it into Polykey CLI. Once this is done, users will not directly interact with the Polykey Core. Instead the core will just be a dependency of the other projects.


  • 64-bit Linux Operating System
  • Node v16.15 or above and Node Package Manager
  • Optionally nix-shell to setup development environment

Source Repository

The official source repository is on GitHub. There is an additional mirror on GitLab.

git clone

Use npm install to setup the project.


If you have nix-shell available, enter into nix-shell and it will automatically setup the develoment environment.

Node Package Manager

The core library is published as npm package.

Global Package

Install it with:

npm install --location=global polykey

This will install the Polykey core library into $(npm config get prefix).

There will be 2 executables made available inside $(npm bin --location=global).

For example on Ubuntu:

$ tree "$(npm bin --location=global)"
├── pk -> ../lib/node_modules/polykey/dist/bin/polykey.js
└── polykey -> ../lib/node_modules/polykey/dist/bin/polykey.js

If the npm bin path is added to the $PATH environment variable, then you will be able to execute pk or polykey.

Local Package

Local installation is intended for downstream projects, where Polykey is embedded as a JavaScript library.

npm install polykey

Use the npx polykey or npx pk execute the local executables that are placed in:

$ tree ./node_modules/.bin
├── pk -> ../polykey/dist/bin/polykey.js
└── polykey -> ../polykey/dist/bin/polykey.js

Bundled Executables

The core library is also released as a bundled executable. This is intended for users who do not have Node.js installed.

Go to and download the relevant asset.

We currently bundle for these platforms:

  • linux-x64 - this should work for any Linux distribution that follows the Filesystem Hierarchy Standard.
  • win-x64
  • macos-x64
  • macos-arm64

Not all platfoms are supported currently. We have only tested on linux-x64.

Docker Container

The core library is also released as a Docker container image. This is intended for users who do not have Node.js installed.

Go to and download the asset with the name docker-image-polykey.

For example: nnrdk7v0xm7x96zrm6w5gwsnmvj66cvh-docker-image-polykey-1.0.1-alpha.0.tar.gz.

Polykey CLI


Polykey Desktop


Polykey Mobile