> For the complete documentation index, see [llms.txt](https://docs.opsmx.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opsmx.com/opsmx-1/opsmx-context-engine/additional-resources/spinnaker-reference/spinnaker-installation/choose-your-environment/local-git-installation.md).

# Local Git installation

## Local Git installations from Github:

This is suggested if you want to contribute to Spinnaker. For more details click [**here**](https://spinnaker.io/setup/install/environment/#local-git)**.**

The Local Git installation means Spinnaker will be cloned, built, and run on the same single machine where Halyard is run on.

### **Install local dependencies**

Make sure you have the following software installed on your computer:

#### **Ubuntu**

* **git:** sudo apt-get install git
* **curl:** sudo apt-get install curl
* **netcat: s**udo apt-get install netcat
* **redis-server:** sudo apt-get install redis-server

**OpenJDK 11 - JDK (we’re building from source, so a JRE is not sufficient)**

```
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-11
```

**node** (version >=12.16.0, can be installed via [**nvm** ](https://github.com/nvm-sh/nvm#install-script), summarized below)

```
curl -o- 
https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
# Follow instructions at end of script to add nvm to ~/.bash_rc
nvm install v12.16.0
```

* **yarn:** npm install -g yarn or [**guide**](https://yarnpkg.com/lang/en/docs/install/)

#### **MacOS**

brew (a package manager for MacOS, can be installed via [**here** ](https://brew.sh/), summarized below)

{% code overflow="wrap" %}

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

{% endcode %}

* **git:** brew install git
* **curl:** brew install curl
* **netcat:** brew install netcat
* **redis-server:**
  * **Install:** brew install redis
  * **Start:** brew services start redis

**OpenJDK 11 - JDK (we’re building from source, so a JRE is not sufficient)**

```
brew cask install adoptopenjdk/openjdk/11
```

**node** (version >=12.16.0, can be installed via [**nvm**](https://github.com/nvm-sh/nvm#install-script)**,** summarized below)

```
curl -o-
https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
# Follow instructions at end of script to add nvm to ~/.bash_rc
nvm install v12.16.0
```

* **yarn:** npm install -g yarn or [**guide**](https://yarnpkg.com/lang/en/docs/install/)

#### **Fork all Spinnaker repos**

Fork all of the microservices listed here: [**Spinnaker Microservices**](https://www.spinnaker.io/reference/architecture/#spinnaker-microservices) on github ( [**guide**](https://guides.github.com/activities/forking/#fork) ).

#### **Setup SSH keys**

Follow these guides to setup SSH access to your github.com account from your local machine:

* Generating a new ssh key and adding it to your ssh agent.  Refer [**here**](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)**.**
* Adding a new ssh key to your Github account. Refer [**here**](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).

#### **Required Halyard invocations**

Halyard defaults to a **Local Debian** install when first run. If you will be contributing code to the Spinnaker project, you can change your deployment type to **Local Git** type and set up your development environment with the latest code.

{% code overflow="wrap" %}

```
hal config deploy edit --type localgit --git-origin-user=<YOUR_GITHUB_USERNAME
hal config version edit --version branch:upstream/master
```

{% endcode %}

**Refer to the image below (This image is only an example).**<br>

<div align="left"><figure><img src="https://lh6.googleusercontent.com/H5C0iGyakp_R56f0ZKpdREWLLmI4MftGFGg1vEnSq0bBVBN4A5vomp-bX-CeTptFtNR48XWlaQaL1Eo8CtYQ1R_s_e50RYlDJZ8Sz6oex8zMpYxAvDtcQyHuSwCJB8vAMZ7cmSuKRCxpCecyPjd_7AhLGbK2PN3iODEHHqZ2b8DPJ3prPOuVQ3goYg" alt=""><figcaption></figcaption></figure></div>

**In the hal config file, it will be updated as shown in the image below:**

<div align="left"><figure><img src="https://lh3.googleusercontent.com/R06ql7B0L4NTSEB5qfaVUlkebRSp2jJoLnw2NF3nhIAmgmuh9rTNeuOmZyO_YOhOKI0I8mM_kYYKwdDGzoB8Qs-mRBnDq3nxLc6kv5LltthVU5j4eRDhaDGJ6yDHSriOsIWFKdcbFTYQfjzEbOBSDigstVpvDOk-QQ0ql9SvsB4EkYPrvksuBSgy-g" alt=""><figcaption></figcaption></figure></div>

#### **Intended use case:**

The Local Git installation is intended for developers who want to contribute to Spinnaker. It is not intended to be used to manage any production environment.

See the [**developer setup guide** ](https://spinnaker.io/docs/guides/developer/getting-set-up)for a short guide to getting up and running with developing Spinnaker.

{% hint style="info" %}
**Note**: Be sure to use the same username here that you forked the Spinnaker repositor&#x79;**.**
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.opsmx.com/opsmx-1/opsmx-context-engine/additional-resources/spinnaker-reference/spinnaker-installation/choose-your-environment/local-git-installation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
