PageSourceSearch

https://keys.pub/docs/cli/install.html

html keys.pub collected 2026-10-03 20:42:34 UTC 14,541 bytes, 54 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3  <head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width,initial-scale=1">
6    <title>Install | keys.pub</title>
7    <meta name="generator" content="VuePress 1.8.0">
8    <link rel="apple-touch-icon" sizes="57x57" href="/assets/icons/apple-icon-57x57.png">
9    <link rel="apple-touch-icon" sizes="60x60" href="/assets/icons/apple-icon-60x60.png">
10    <link rel="apple-touch-icon" sizes="72x72" href="/assets/icons/apple-icon-72x72.png">
11    <link rel="apple-touch-icon" sizes="76x76" href="/assets/icons/apple-icon-76x76.png">
12    <link rel="apple-touch-icon" sizes="114x114" href="/assets/icons/apple-icon-114x114.png">
13    <link rel="apple-touch-icon" sizes="120x120" href="/assets/icons/apple-icon-120x120.png">
14    <link rel="apple-touch-icon" sizes="144x144" href="/assets/icons/apple-icon-144x144.png">
15    <link rel="apple-touch-icon" sizes="152x152" href="/assets/icons/apple-icon-152x152.png">
16    <link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-icon-180x180.png">
17    <link rel="icon" type="image/png" sizes="192x192" href="/assets/icons/android-icon-192x192.png">
18    <link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png">
19    <link rel="icon" type="image/png" sizes="96x96" href="/assets/icons/favicon-96x96.png">
20    <link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png">
21    <link rel="manifest" href="/assets/icons/manifest.json">
22    <meta name="description" content="Cryptographic key management, saltpack, noise, sigchains, user identities, signing, encryption">
23    
24    <link rel="preload" href="/assets/css/0.styles.d39084ab.css" as="style"><link rel="preload" href="/assets/js/app.95aadd8a.js" as="script"><link rel="preload" href="/assets/js/2.485f67f9.js" as="script"><link rel="preload" href="/assets/js/13.780eaf37.js" as="script"><link rel="prefetch" href="/assets/js/10.a621cd79.js"><link rel="prefetch" href="/assets/js/11.3a23fa73.js"><link rel="prefetch" href="/assets/js/12.393f78e7.js"><link rel="prefetch" href="/assets/js/14.29851940.js"><link rel="prefetch" href="/assets/js/15.f6b36ab2.js"><link rel="prefetch" href="/assets/js/16.21212409.js"><link rel="prefetch" href="/assets/js/17.78f4730f.js"><link rel="prefetch" href="/assets/js/18.4f3cf4d8.js"><link rel="prefetch" href="/assets/js/19.2c157893.js"><link rel="prefetch" href="/assets/js/20.c9ac2688.js"><link rel="prefetch" href="/assets/js/21.765ad17e.js"><link rel="prefetch" href="/assets/js/22.39b2d53f.js"><link rel="prefetch" href="/assets/js/23.ac84f31e.js"><link rel="prefetch" href="/assets/js/24.a68dfb6b.js"><link rel="prefetch" href="/assets/js/25.bc7202e4.js"><link rel="prefetch" href="/assets/js/26.babc48a2.js"><link rel="prefetch" href="/assets/js/27.c991a4cd.js"><link rel="prefetch" href="/assets/js/28.c5090c96.js"><link rel="prefetch" href="/assets/js/29.0a3ee006.js"><link rel="prefetch" href="/assets/js/3.b4db3c63.js"><link rel="prefetch" href="/assets/js/30.36d0b61a.js"><link rel="prefetch" href="/assets/js/31.cecbc3ea.js"><link rel="prefetch" href="/assets/js/32.076cdc78.js"><link rel="prefetch" href="/assets/js/33.35a0bba3.js"><link rel="prefetch" href="/assets/js/34.23b29410.js"><link rel="prefetch" href="/assets/js/35.9f5f0831.js"><link rel="prefetch" href="/assets/js/36.bb7ecb6c.js"><link rel="prefetch" href="/assets/js/37.7b542b99.js"><link rel="prefetch" href="/assets/js/38.0b0e1677.js"><link rel="prefetch" href="/assets/js/39.0ace0f7d.js"><link rel="prefetch" href="/assets/js/4.c67e9e6e.js"><link rel="prefetch" href="/assets/js/40.09cf5eb1.js"><link rel="prefetch" href="/assets/js/41.38f78fe8.js"><link rel="prefetch" href="/assets/js/5.eaec2b0f.js"><link rel="prefetch" href="/assets/js/6.6405de5a.js"><link rel="prefetch" href="/assets/js/7.77319d9f.js"><link rel="prefetch" href="/assets/js/8.ca496f19.js"><link rel="prefetch" href="/assets/js/9.03923720.js">
25    <link rel="stylesheet" href="/assets/css/0.styles.d39084ab.css">
26  </head>
27  <body>
28    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon">
28<path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">keys.pub</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"> <a href="https://github.com/keys-pub/keys" target="_blank" rel="noopener noreferrer" class="repo-link">
29    GitHub
30    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"> <a href="https://github.com/keys-pub/keys" target="_blank" rel="noopener noreferrer" class="repo-link">
31    GitHub
32    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav>  <ul class="sidebar-links"><li><a href="/" aria-current="page" class="sidebar-link">Guide</a></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>Desktop</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/desktop/install.html" class="sidebar-link">Install</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/docs/cli-index" class="sidebar-heading clickable open"><span>Command Line</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/cli/install.html" aria-current="page" class="active sidebar-link">Install</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/docs/cli/install.html#macos" class="sidebar-link">macOS</a></li><li class="sidebar-sub-header"><a href="/docs/cli/install.html#windows" class="sidebar-link">Windows</a></li><li class="sidebar-sub-header"><a href="/docs/cli/install.html#linux" class="sidebar-link">Linux</a></li></ul></li><li><a href="/docs/cli/auth.html" class="sidebar-link">Auth</a></li><li><a href="/docs/cli/keys.html" class="sidebar-link">Manage Keys</a></li><li><a href="/docs/cli/encrypt.html" class="sidebar-link">Encryption</a></li><li><a href="/docs/cli/sign.html" class="sidebar-link">Signing</a></li><li><a href="/docs/cli/user.html" class="sidebar-link">User</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/docs/webapi-index" class="sidebar-heading clickable"><span>Web API</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/webapi/auth.html" class="sidebar-link">Authorization</a></li><li><a href="/docs/webapi/errors.html" class="sidebar-link">Errors</a></li><li><a href="/docs/webapi/user.html" class="sidebar-link">User</a></li><li><a href="/docs/webapi/sigchain.html" class="sidebar-link">Sigchain</a></li><li><a href="/docs/webapi/share.html" class="sidebar-link">Share</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/docs/lib-index" class="sidebar-heading clickable"><span>Library</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/lib/saltpack.html" class="sidebar-link">Saltpack</a></li><li><a href="/docs/lib/user.html" class="sidebar-link">User</a></li><li><a href="/docs/lib/noise.html" class="sidebar-link">Noise</a></li><li><a href="/docs/lib/packages.html" class="sidebar-link">Packages</a></li></ul></section></li><li><section class="sidebar-group depth-0"><a href="/docs/specs-index" class="sidebar-heading clickable"><span>Specs</span> <!----></a> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/specs/auth.html" class="sidebar-link">Auth</a></li><li><a href="/docs/specs/keys.html" class="sidebar-link">Keys</a></li><li><a href="/docs/specs/sigchain.html" class="sidebar-link">Sigchain</a></li><li><a href="/docs/specs/user.html" class="sidebar-link">User</a></li><li><a href="/docs/specs/wormhole.html" class="sidebar-link">Wormhole</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>
32Other</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="install"><a href="#install" class="header-anchor">#</a> Install</h1> <p>Are you looking for <a href="/docs/cli-index.html">command line usage</a> instead?</p> <p>To manually build the binaries, see <a href="/docs/cli/building.html">building from source</a>.</p> <h2 id="macos"><a href="#macos" class="header-anchor">#</a> macOS</h2> <p>The desktop app installs the command line on first run:</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">ln</span> -s /Applications/Keys.app/Contents/Resources/bin/keys /usr/local/bin/keys
33</code></pre></div><h3 id="homebrew"><a href="#homebrew" class="header-anchor">#</a> Homebrew</h3> <p>Via <a href="https://brew.sh/" target="_blank" rel="noopener noreferrer">homebrew<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>brew tap keys-pub/tap
34brew <span class="token function">install</span> keys
35</code></pre></div><h2 id="windows"><a href="#windows" class="header-anchor">#</a> Windows</h2> <div class="custom-block warning"><p class="custom-block-title">WARNING</p> <p>The scoop install will conflict with the desktop app. Fix is in progress.</p></div> <p>The desktop app ships with the command line utilities, you can add it to your %PATH%:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>%USERPROFILE%<span class="token punctuation">\</span>AppData<span class="token punctuation">\</span>Local<span class="token punctuation">\</span>Programs<span class="token punctuation">\</span>keys<span class="token punctuation">\</span>resources<span class="token punctuation">\</span>bin
36</code></pre></div><h3 id="scoop"><a href="#scoop" class="header-anchor">#</a> Scoop</h3> <p>To install via <a href="https://scoop.sh/" target="_blank" rel="noopener noreferrer">scoop<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>scoop bucket <span class="token function">add</span> keys.pub https://github.com/keys-pub/scoop-bucket
37scoop <span class="token function">install</span> keys
38</code></pre></div><h2 id="linux"><a href="#linux" class="header-anchor">#</a> Linux</h2> <p>Add keys.pub apt repository:</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token builtin class-name">echo</span> <span class="token string">&quot;deb https://storage.googleapis.com/aptly.keys.pub current main&quot;</span> <span class="token punctuation">\</span>
39    <span class="token operator">|</span> <span class="token function">sudo</span> <span class="token function">tee</span> -a /etc/apt/sources.list.d/keys.list
40</code></pre></div><p>Add the keys apt signing public key:</p> <div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">wget</span> -qO - https://storage.googleapis.com/aptly.keys.pub/keys.asc <span class="token operator">|</span> <span class="token function">sudo</span> apt-key <span class="token function">add</span> -
41</code></pre></div><div class="language-shell extra-class"><pre class="language-shell"><code><span class="token function">sudo</span> <span class="token function">apt-get</span> update
42<span class="token function">sudo</span> <span class="token function">apt-get</span> <span class="token function">install</span> keys
43</code></pre></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
44      ←
45      <a href="/docs/desktop/install.html" class="prev">
46        Install
47      </a></span> <span class="next"><a href="/docs/cli/auth.html">
48        Auth
49      </a>
50      →
51    </span></p></div> </main></div><div class="global-ui"></div></div>
52    
52<script src="/assets/js/app.95aadd8a.js" defer></script>
52<script src="/assets/js/2.485f67f9.js" defer></script>
52<script src="/assets/js/13.780eaf37.js" defer></script>
52
53  </body>
54</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.