github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/README.md (about)

     1  ## Keybase
     2  
     3  This repository contains the Keybase core crypto libraries, command-line
     4  utility, and local Keybase service. All code is written in the [Go
     5  Language](https://golang.org), making heavy use of Go's
     6  [OpenPGP](https://godoc.org/golang.org/x/crypto/openpgp) and
     7  [NaCl](https://godoc.org/golang.org/x/crypto/nacl)
     8  [Library](https://github.com/agl/ed25519) implementation.
     9  
    10  Our intended architecture is that `keybase` runs a local service on Desktop
    11  environments, which can be connected to over a local Unix domain sockets on OSX/Linux,
    12  and over named pipes on Windows. The persistent service will eventually listen
    13  for asynchronous server updates, and will serve several clients, like the command-line
    14  utility, the graphical desktop app ([see `electron`](../electron)), and the Keybase
    15  FUSE-mounted file system.
    16  
    17  Code in this repository can run against either our [production
    18  site](https://keybase.io) or our [staging
    19  server](https://stage0.keybase.io).
    20  
    21  ### Install production client
    22  
    23  If you're not building Keybase yourself, follow our [usual install
    24  instructions](https://keybase.io/download).
    25  
    26  ### Building
    27  
    28  Here's how to build the command line client on Linux or OSX. You need to
    29  have both Git and **Go 1.19 or higher** installed. (Run `go version` to
    30  see what version you have.)
    31  
    32  ```bash
    33  # First we need to set up a GOPATH. This is a standard first step for
    34  # building Go programs, so if you've done this already, skip on ahead.
    35  # See also https://golang.org/doc/install.
    36  mkdir ~/gopath
    37  export GOPATH="$HOME/gopath"     # Consider putting this in your ~/.bashrc.
    38  export PATH="$PATH:$GOPATH/bin"  # Ditto.
    39  
    40  # Now for the actual clone and build. Currently the Keybase client depends
    41  # on go.mod replace directives, so a `go get` of the repository cannot be
    42  # used. You should use `git` to clone the repository instead.
    43  # See https://github.com/golang/go/issues/30354 for more details.
    44  git clone https://github.com/keybase/client.git
    45  cd client/go
    46  go install -tags production github.com/keybase/client/go/keybase
    47  
    48  # If you did the PATH bit above, this should just work.
    49  keybase
    50  ```
    51  
    52  ### Run the service
    53  
    54  ```bash
    55  keybase service
    56  ```
    57  
    58  Or specify a custom home directory (and use -d for debug):
    59  
    60  ```bash
    61  keybase -H ~/Projects/Keybase/dev -d service
    62  ```
    63  
    64  Note that many commands will start the service in the background
    65  automatically if it's not already running. See also `keybase ctl --help`.
    66  
    67  ### Run the client
    68  
    69  ```bash
    70  keybase login
    71  keybase id max
    72  ```
    73  
    74  ### Or you can run the client in "Standalone" Mode
    75  
    76  ```bash
    77  # No service needed, but you'll be repeatedly prompted for your passphrase
    78  keybase --standalone id max
    79  ```
    80  
    81  ### Run tests
    82  
    83  ```bash
    84  cd $GOPATH/src/github.com/keybase/client/go/test
    85  ./run_tests.sh
    86  ```
    87  
    88  ### Calculate package dependenies
    89  
    90  ```bash
    91  make gen-deps
    92  ```
    93  
    94  ### License
    95  
    96  Most code is released under the New BSD (3 Clause) License.