index.md•5.22 kB
# Getting Started
!!! note
    If you're a user of Genkit and landed here,
    this is engineering documentation that someone contributing
    to Genkit would use, not necessarily only use it.
    For more information about how to get started with using
    Genkit, please see: [User Guide](.)
## Preparing your account
### Create a GitHub account
1. [Sign up](https://github.com/signup) for an account.
2. Please [enable 2 factor authentication
   (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa)
   after having created a GitHub account.
    1.  Use the [Google Authenticator
        app](https://support.google.com/accounts/answer/1066447?hl=en&co=GENIE.Platform%3DAndroid)
        for your device.
        === "Android"
            [Google Authenticator app for Android](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&pli=1)
        === "iOS"
            [Google Authenticator app for iOS](https://apps.apple.com/us/app/google-authenticator/id388497605)
    2.  Use a physical security key such as the [Google
        Titan](https://store.google.com/product/titan_security_key?hl=en-US).
4. [Generate an SSH
   key](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)
   for your workstation to associate it with your GitHub account.
    !!! tip
        You can consider using a script such as the following to easily identify
        your key.
        ```bash
        #!/usr/bin/env bash
        UNAME_MRS=$(uname -mrs || echo 'unknown')
        UNAME_OS="$(uname -s | tr '[:upper:]' '[:lower:]' || echo 'unknown')"
        OS_TYPE="$(echo $OSTYPE | tr '[:upper:]' '[:lower:]' || echo 'unknown')"
        CPU_ARCH="$(uname -m || echo 'unknown')"
        OS_DISTRO="$(cat /etc/os-release 2>/dev/null | grep -E '^ID=.*' | sed -e 's/^ID=\(.*\)/\1/g')"
        ssh-keygen -vvvv -t ed25519 -C "ssh://${USER}@$(hostname)/?arch=${CPU_ARCH}&os=${OS_TYPE}&distro=${OS_DISTRO}×tamp=$(date +'%Y-%m-%dT%H:%M:%S')"
        cat ~/.ssh/id_ed25519.pub >> "${HOME}/.ssh/authorized_keys"
        cat ~/.ssh/id_ed25519.pub
        ```
        Save this to a file called `gen_ssh_key.sh` and run it as follows after
        changing to its container directory:
        ```bash
        chmod a+x gen_ssh_key.sh
        ./gen_ssh_key.sh
        ```
5. [Associate your SSH key with your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).
6. If you're a Googler, also [associate your `@google.com` email
   address](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account)
   with your GitHub account and follow any other requirements to complete this
   process.
### GitHub Organization Membership
Please talk to the Genkit Dec team (on [discord](https://discord.gg/qXt5zzQKpc))
to get yourself added to the appropriate groups for your GitHub organization
membership.
### CLA
* Ensure you have [signed the
CLA](https://github.com/firebase/genkit/blob/main/CONTRIBUTING.md#sign-our-contributor-license-agreement).
* For corporate CLAs, please ask the appropriate channels for help.
## Preparing your workstation
!!! note
    === "macOS"
        Install [Homebrew](https://brew.sh/) before proceeding.
    === "Debian"
        Your system should have the required software ready to go.
    === "Fedora"
        Your system should have the required software ready to go.
### Install the GitHub CLI tool
=== "macOS"
    We're assuming you have [Homebrew](https://brew.sh/) installed
    already.
    ```bash
    brew install gh
    ```
=== "Debian/Ubuntu"
    ```bash
    sudo apt install gh
    ```
=== "Fedora"
    ```bash
    sudo dnf install gh
    ```
### Authenticate the CLI with GitHub
```bash
gh auth login
```
### Check out project-related repositories
Consider setting up your workspace to mimic the paths found on GitHub for easier
disambiguation of forks:
```bash
mkdir -p $HOME/code/github.com/firebase/
cd $HOME/code/github.com/firebase
gh repo clone https://github.com/firebase/genkit.git
```
This should allow you to produce a directory structure similar to the following:
```bash
zsh❯ tree -L 3 code
 code
 └── github.com
     ├── firebase
     │   └── genkit
     ├── google
     │   └── dotprompt
     └── yesudeep
         ├── dotprompt
         └── genkit
```
### Configure Git with your legal name and email address.
!!! note inline end
    Googlers should use their `@google.com` email address
    to make commits.
```bash
git config user.email "{username}@domain.com"
git config user.Name "Your Legal Name."
```
### Engineering workstations
Run the following command from the `code/github.com/firebase/genkit` repository
working tree and it should install the required tools for you.
```bash
py/bin/setup
```
### CI/CD
The following is the equivalent used for CI/CD systems.
```bash
py/bin/setup -a ci
```