# Welcome to Protocol.Land

Where decentralized protocols roam.

At Protocol.Land, we are on a mission to empower developers by ensuring the preservation and evolution of their work. This ensures future generations can build upon a legacy of shared knowledge.

Here’s what Protocol.Land has in store:

#### In sync with Git

Protocol.Land integrates seamlessly with Git, keeping your typical workflow from repository creation to pushing changes remains intact, blending the new with the familiar in a streamlined experience.

#### Rewarding contributions

Protocol.Land introduces an incentivized coding environment. You can assign bounties to issues, rewarding contributors for their efforts and acknowledging the hard work poured into every line of open source code.

#### Your code on ice

Your code is preserved indefinitely, stored in over 1000 locations worldwide on the Arweave network, instantly. Protocol Land is your personal arctic code vault, ensuring eternal preservation.

#### A snapshot with every commit

Your code isn't just archived; it's a living repository on Protocol.Land. Every commit is a permanent, on-chain snapshot. Powered by Warp contracts, this approach provides a complete, verifiable history. It is essential for reliable progress tracking and validating the integrity of your work.

#### Timeless frontends

Deploy and perpetually host your frontends on the most distributed and decentralized network, all at zero upkeep cost. Protocol.Land also enables user-friendly aliases for these deployments using the Arweave Name System (ArNS).

### Embark on a new era with Protocol.Land

As Protocol.Land opens its doors to everyone, we enter a new chapter in the world of code collaboration. Get started by [creating a new repository](/working-with-repositories/create-a-new-repository) today!

For support,  join our [Community Discord](https://discord.gg/geeWa7uv).

Over the next few weeks we will keep shipping updates that further enhance the developer experience with features like a dark mode, Google logins and CI/CD. If you’re interested in contributing, reach out!


# Create a new repository

Initialize a new repository with your Arweave account using the web UI.

A repository is the fundamental element for storing and collaborating on projects on Protocol.Land.

Follow these steps to create a new repository:

1. On the landing page of Protocol.Land, navigate to the “Create a new repository” panel, then click Create Repository.\
   ![](/files/SGy0LhNfTLbs0EYwonoY)
2. You will be prompted with a modal requesting details for the new repository.\
   ![](/files/qgDWJggqtigC3Fkvx0To)
3. ⁠Type a name and an optional description for your repository.
4. ⁠Choose between Public and Private repository as per your requirements. Private repositories are only visible to their Owners and Contributors.
5. ⁠Preview the estimated cost of creating a new repository by hovering over the information icon.
6. Click Create.
7. You will be redirected to the repository page of your newly created repository.
8. Each repository is created with a default README.md file that includes the title of the repository.


# Fork a repository

Create a personal copy of a repository using the web UI.

Forking repositories is useful for exploring, modifying or building upon existing projects.

Follow these steps to fork a repository on Protocol.Land:

{% hint style="info" %}
Note: You can only fork repositories with visibility set to “Public”.
{% endhint %}

1. Navigate to the main page of the repository you wish to fork.
2. On the top-right corner of the page, click “Fork”.\
   ![](/files/uKTJh4NGFgEEg2aGx5Fb)
3. A modal will appear requesting details for your forked copy.\
   ![](/files/lxxh9XVefW9gZWTC9d6E)
4. ⁠Type a name for your forked repository and an optional description.
5. Click “Create”.
6. Once the process is complete, you are redirected to the main repository page of your forked copy. Alongside the general details of this repository, you can see the “Forked tag” and the id of the repository it was forked from.


# Clone a repository

Create a local copy (clone) of a repository using the command line.

Cloning a repository sets up a local copy (clone) allowing you to work on projects, make changes and contribute the changes to the main repository. This is crucial for a collaborative development process allowing multiple contributors to work simultaneously, streamlining contributions and minimizing conflicts.

Follow these steps to clone a repository on Protocol.Land:

{% hint style="info" %}
Note: Ensure you have the [git remote helper](https://www.npmjs.com/package/@protocol.land/git-remote-helper) installed and properly configured to interact with repositories hosted on Protocol.Land using the command line.
{% endhint %}

1. Navigate to the main page of the repository you wish to clone.
2. On the top-right corner of the page, click “Clone”.\
   ![](/files/V4Z90DdVI60tyiBIUhVZ)
3. A modal will appear displaying the command to clone the repository. Use the Copy Icon to copy this URL.\
   ![](/files/AyZM7RZqQm09hnmqQTvy)
4. Open your command line interface (CLI).
5. Paste and execute the copied command as follows:

```bash
git clone <repo_URL> repo_name
```

6. This creates a local copy of the repository in a new directory named `repo_name`.


# Import a repository from GitHub

Backup a GitHub repository on Protocol.Land.

Backing up your repository on Protocol.Land ensures that the longevity of your code is safeguarded and you have uninterrupted access to it.

Follow these steps to backup your GitHub repository on Protocol.Land:

1. Navigate to your GitHub repository and go to the "Settings" tab.
2. Under "Secrets and variables," select "Actions" then click "New Repository Secret."
3. Add a new secret with "Name" as “WALLET”, paste your Arweave wallet's JWK into the "Secret" field, and click "Add secret."
4. Go to the "Actions" tab of your repository.
5. Click "New workflow" if you have existing actions, or follow the prompt to "Get started with GitHub Actions" if it's your first time.
6. Choose to "Set up a workflow yourself."
7. In the `.yml` file that appears, copy and paste the provided YAML code and commit the changes. This code includes crucial steps, such as checking out all branches and setting up node environments before syncing to Protocol Land.

```yaml
name: Protocol Land Sync
on:
    # Run with every push to 'main' branch:
    push:
        branches:
            - 'main'
    # Run Manually:
    #workflow_dispatch:
jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            - name: 'Checkout repo (default branch)'
              uses: actions/checkout@v3
              with:
                  # fetch all history for all branches:
                  fetch-depth: 0
            - name: 'Checkout all branches'
              run: |
                  default_branch=$(git branch | grep '*' | sed 's/\* //')
                  for abranch in $(git branch -a | grep -v HEAD | grep remotes | sed "s/remotes\/origin\///g"); do git checkout $abranch ; done
                  git checkout $default_branch
                  git branch -a
            - name: 'Setup node 18'
              uses: actions/setup-node@v3
              with:
                  node-version: 18.x
            - name: 'Sync repo to Protocol Land'
              run: npx @protocol.land/sync
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                  REPO_TITLE: ${{ github.event.repository.name }}
                  REPO_DESCRIPTION: ${{ github.event.repository.description }}
                  WALLET: ${{ secrets.WALLET }}
```

8. The code is set to automatically execute with every push to the `main` branch. For manual execution, modify the `on:` section to include `workflow_dispatch:`.
9. If desired, you can adjust the workflow to only sync the main branch by commenting out the 'Checkout all branches' section.

### Add published badge to your Github repo

When you sync your GitHub repo with Protocol.Land, proudly display the "Published on Protocol.land" badge in your README.\
\
Use the below template and replace \<REPO\_ID> with your Protocol.Land repo ID:

```markdown
[![protocol.land](https://arweave.net/eZp8gOeR8Yl_cyH9jJToaCrt2He1PHr0pR4o-mHbEcY)](https://protocol.land/#/repository/<REPO_ID>)
```

Using the above line in your README file will show `Published on Protocol.Land` badge like this one ![](https://arweave.net/eZp8gOeR8Yl_cyH9jJToaCrt2He1PHr0pR4o-mHbEcY).<br>


# Create a new branch

Create a new branch for a repository using the web UI.

Branching helps create specific scopes for changes like features and fixes until they are ready to merge back into the main repository. They are crucial for minimizing conflicts in collaborative development processes.

Follow these steps to create a new branch in a repository on Protocol.Land:

1. Navigate to the main page of the repository you wish to add the new branch to.
2. Click on the Branch icon located above the list of files.\
   ![](/files/1d4ahEJndOKvcz78yUjl)
3. A modal will appear prompting you to fill the details for your new branch.\
   ![](/files/VNVCkTrvCQt2Rlix9qty)
4. Type in the name for the new branch.
5. Click “Create”.
6. This creates a temporary branch in the repository. It is added on-chain only when files have been added or changed in this branch.


# Update a repository’s general information

Update the name and description of a repository using the web UI.

Updating information of a repository helps contributors and viewers easily understand the latest state of the project.

Follow these steps to update the general information of your repository on Protcol.Land:

1. Navigate to the main page of the repository and select the Settings tab.\
   ![](/files/rYEAVdPuSoJFfgXkXYQJ)
2. Within Settings, select the “General” tab located on the sidebar.\
   ![](/files/TVxk3NxriJWKzhSCyaeq)
3. Type in the new name and/or description for the repository in the provided input fields.\
   ![](/files/1H0XVuGABgIhA0h18j4U)

{% hint style="info" %}
Note: The "Rename" and "Update" buttons are only enabled when the name and description have been modified in the input fields.
{% endhint %}

4. To update the name, click “Rename”.
5. To update the description, click “Update”.
6. Once done, the new details are reflected on the repository page.


# Add contributors to a repository

Add contributors to a repository using the web UI.

Adding contributors to a repository allows for collaboration on projects giving them access to modify and push changes to your repository.

Follow these steps to add a contributor to your repository on Protocol.Land:

{% hint style="info" %}
Note: Only a repository owner can invite contributors.
{% endhint %}

1. Navigate to the main page of the repository and select the Settings tab.\
   ![](/files/rYEAVdPuSoJFfgXkXYQJ)
2. Within Settings, select the “Contributors” tab located on the sidebar.\
   ![](/files/ze2f6f2WGnaCCq8Zmyoo)
3. On the Contributors tab, type in the Arweave address of the contributor to be invited in the provided input field.\
   ![](/files/qaVUWUgOrDpge5lzXw3d)
4. Click “Invite”.
5. The invitation will appear in the “Invited Contributors” list, marked as Invited.
6. Until the invitation is accepted, the Owner can cancel the invitation.\
   ![](/files/z6brqr1BfcmE3qrMUgC4)
7. To accept an invitation:
   1. To a public repository, the invitee must navigate to the Contributors tab within the repository settings and click “Accept” in the “Invited Contributors” list. Upon accepting, their address is added to the list of contributors.\
      ![](/files/Vxd2ZKIwXjp1JfxQdUvW)
   2. To a private, the invitee must navigate to the main page of the repository where they view the invitation and click “Accept”. \
      ![](/files/DHjNc8A4UkiYmiarJFfE)
      1. On acceptance, the status of the invite is updated to “Accepted” and the owner of the repository must grant access to the invited address.\
         ![](/files/m8XVbuzheJjGUve5aHA7)
      2. The owner can grant access to the invitee by heading back to the aforementioned “Invited Contributors” list. Once the owner grants access, the address is added as a contributor.\
         ![](/files/zRYSQN5xZOusHQb3o5Hf)


# Tokenization

Tokenize a repository using the web UI.

Tokenizing a repository would put the repo into lock down mode and launches a repository's token based on selected token configuration. Only way to contribute is by forking the repository.&#x20;

Follow these steps to tokenize your repository on Protocol.Land:

{% hint style="info" %}
Note: Only a repository owner can tokenize their repo.
{% endhint %}

1. Navigate to the main page of the repository and select the Settings tab.\
   ![](/files/rYEAVdPuSoJFfgXkXYQJ)

2. Within Settings, select the “Token” tab located on the sidebar.\
   ![](/files/btIDWvqjcOnKUCLwS7gS)

3. On the Token tab, you have two ways to configure your repo token launch:\
   ![](/files/RpGa9u3b3UpIy7hTz8s3)

4. Generic Token:

   1. Import an existing AO token by simply pasting the AO token process ID in the input field.\
      ![](/files/SPZIBO18v8K3192GYx5o)
   2. Once the token is verified, click on "Save Changes" button.
   3. Once you are ready to tokenize, click the "Tokenize" toggle button on the top of repo page.\
      ![](/files/YuRI3m89rtSYf9D568Zy)
   4. You should see a modal popup showing tokenization status
   5. Once tokenized, your repository should show newly imported AO token badge\
      ![](/files/598CYbuVkBihqQIJlc4o)

5. Bonding Curve Token:

   \
   Use bonding curve token to create market for your repo token within the repository page, allowing people to purchase or sell your project tokens on the bonding curve.<br>

   > :information\_source: A bonding curve is a pricing mechanism used in crypto projects where the price of a token automatically increases or decreases based on how many tokens are bought or sold removing the need for Liquidity pools.&#x20;

   \
   Once your token reaches US$69000 market cap, it automatically transitions to its own [Botega Dex](https://botega.arweave.dev/) Liquidity Pool. To facilitate this, 20% of the token's Max Supply is reserved to pair with the liquidity raised through the bonding curve, ensuring a seamless transition. This integration allows your project's graduated token to be traded in a more open and dynamic market.

   \
   Creating a token using bonding curve is very simple.&#x20;

   1. Select *Bonding Curve Token* in the *Token Settings*. <br>

      <figure><img src="/files/ULi1OS9oyBhYsx9bY0Jm" alt=""><figcaption></figcaption></figure>
   2. Fill out the following details:\
      Token Name: Eg: "Bitcoin"\
      Token Ticker: Eg: "BTC"\
      Token Image: URL of the image or Arweave txid of the image\
      Website/Social Link (Optional): Twitter handle or website of your project
      1. (Optional) If you are interested to configure your tokenomics with advanced settings, click on "Advanced Options" toggle to see following UI:<br>

         <figure><img src="/files/2H3sKn20pRqPiVzT0Wh5" alt=""><figcaption></figcaption></figure>
      2. (Optional) Configure the tokenomics that suits your needs, choosing different curve type or max supply.&#x20;
   3. Thats all you need. Click on "Save Token Settings" button once you have filled all the details\
      If you didn't opt for Advanced Options to select custom tokenomics, your token is going to have 1 Billion as Max Supply by default.
   4. Once you are ready to tokenize, click the "Tokenize" toggle button on the top of repo page.\
      ![](/files/YuRI3m89rtSYf9D568Zy)
   5. You should see a modal popup showing final preview of your token details. Click "Tokenize repository" button once it's ready.\
      ![](/files/sFGixQ9smJaZqcjUyyW5)
   6. While tokenizing, you can see the status of tokenization presented in the UI:\
      ![](/files/bN8EknLH089ogm2561Ej)
   7. Once tokenized, your repository should show newly imported AO token badge and Buy button\
      ![](/files/BlTqwMOLUvnG2VhUoZ1G)
   8. Click on "Buy" button to open trading modal of your token.\
      ![](/files/v6cZ24hzDJGr6asQfBuP)
   9. For default settings, 200M is 20% of your Max supply (1 Billion) which you can see, shows in circulating supply as it is reserved for LP creation. Remaining 80% is for sale on the bonding curve.


# Create a new file

Create and add a new file to a repository using the web UI.

Creating and adding new files to your repository is an integral part of updating your project's content.

Follow these steps to add a file to your repository on Protocol.Land:

1. Navigate to the main page of the repository and click “Add file” located on the top-left corner above the list of files.\
   ![](/files/gZQONuYMv1f19ta8FvfO)
2. Click “Create new file” from the modal you are prompted with.\
   ![](/files/dfgX0D3UW0hLgEgivY6U)
3. You will be redirected to the file creation page.
4. Type in the desired file name along with its extension in the provided input field. You can also provide a path along with the file name like \`folder/filename.ext\` to create folders within the repository.\
   ![](/files/gANbjTUR7ipmj4SWG3Ld)

{% hint style="info" %}
Note: The files and folders are created relative to the file path you click the “Create new file” in. If a folder already exists, it will simply add the file to it based on the provided path.
{% endhint %}

5. Type in your code in the provided code editor.
6. After making the changes, you have the option to “Cancel Changes” or “Commit Changes” to the active branch.\
   ![](/files/MlGRir99qO7NxPG72Q5P)
7. Click “Commit Changes”.
8. A modal will prompt you to add a commit message.\
   ![](/files/MCn6bNIR7VyH7hON1gzG)
9. Type in the desired commit message that summarizes the changes.
10. Preview the estimated cost of committing your changes by hovering over the information icon.
11. Click “Commit changes”.
12. You will be redirected to the main page of the repository, where the updated files list of the active branch will now include the newly created file.


# Add file/ files

Add one or more files or folders to a repository.

### Add one or more files to a repository using the web UI

Follow these steps to upload one or more files to your repository on Protocol.Land using the web UI:

1. Navigate to the main page of the repository and click “Add file” located on the top-left corner above the list of files.\
   ![](/files/gZQONuYMv1f19ta8FvfO)
2. Click “Upload files” from the modal you are prompted with.\
   ![](/files/AGezkbr5aAyuPv7272AG)
3. You will be prompted with another modal for file selection.\
   ![](/files/wIP0r8SzVwgvLZ7XRwuH)
4. Click “Browse Files” and select the desired file/ files or even entire folders.
5. Type in the desired commit message that summarizes the changes.
6. Preview the estimated cost of committing your changes by hovering over the information icon.
7. Click “Upload”.
8. You will be redirected to the main page of the repository, where the files list of the active branch will now include your newly uploaded file(s).

### Add and update files to a repository using the command line

Follow these steps to add and update files to your repository on Protocol.Land using the command line:

{% hint style="info" %}
Note: Ensure you have the [git remote helper](https://www.npmjs.com/package/@protocol.land/git-remote-helper) installed and properly configured to interact with repositories hosted on Protocol.Land using the command line.
{% endhint %}

1. In your local repository, make the desired changes to existing files or add new files to the project.
2. Open your command line.
3. Stage file(s) for commit in your local repository with the following command:

```bash
git add .
```

4. Commit the staged file(s) as follows along with a commit message that summarizes the changes:

```bash
git commit -m “Update files”
```

5. Push your changes from the local repository to Protocol.Land:

```bash
git push origin <your_branch_name>
```

6. The pushed changes will be updated in the files list of the working branch.


# Edit a file

Edit a file in a repository using the web UI.

Editing files directly within your repository on Protocol.Land is a common task that allows for quick updates and iterations.

Follow these steps to edit files within repositories on Procotol.Land:

1. Navigate to the main page of the repository.
2. Click on the file you wish to edit from the file list.
3. You will be redirected to the file page.
4. Click on the edit icon at the top right corner of the file tab.\
   ![](/files/r00bI5PLhhZN7u5ImYyB)
5. You will be redirected to the code editor for the file.
6. Make changes to the code in the provided code editor.
7. The “Preview” tab in the editor shows the updated markdown version for files with the \`.md\` extension. For other file types, it shows a diff view of the code highlighting the changes made.\
   ![](/files/ZvVzRX0g7GlXXLYFQ74y)
8. Once you've made the necessary edits, you have the option to “Cancel Changes” or “Commit Changes” to the active branch.\
   ![](/files/MlGRir99qO7NxPG72Q5P)
9. Click “Commit Changes”.
10. You will be prompted with a modal to add a commit message.\
    ![](/files/MCn6bNIR7VyH7hON1gzG)
11. Type in the desired commit message that summarizes the changes.
12. Preview the estimated cost of committing your changes by hovering over the information icon.
13. Click “Commit changes”.
14. You will be redirected to the file page where you can view the updated file content.


# Create a new pull request

Create a new pull request using the web UI.

Pull requests are integral for collaboration, allowing for the proposal of changes that can be discussed upon, reviewed, refined and merged from one branch to another.

Follow these steps to create a pull request on Procotol.Land:

1. Navigate to the main page of the repository and select the Pull Requests tab.\
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. Click “New pull request”.\
   ![](/files/UpmHYUYRzwlN5Ran4QA2)
3. You will be directed to the pull request creation page.
4. Select the base branch (the one changes are being pulled into) and the head branch (the one with changes to merge). By default, the base branch is set to the active branch.\
   ![](/files/IhTIgWsz7tFdTx68ByJb)
5. ⁠At the bottom of the pull request page you can see the incoming commits from the branch compared with the based branch.
6. Type in the title for the pull request.
7. ⁠Type in the description summarizing the changes for the pull request. Include any pertinent information that will assist in reviewing the changes.
8. ⁠Click “Create Pull request”.\
   ![](/files/zGmyhSgw6OtANFALFZFA)
9. You are redirected to the pull request page where you can see the relevant details.


# Create a new pull request from a fork

Create a new pull request from a forked repository using the web UI.

Creating a pull request from a fork allows you to propose changes from your forked repository to the parent repository.

Follow these steps to create a pull request from a forked repository on Procotol.Land:

1. Navigate to the main page of the forked repository and select the Pull Requests tab.\
   \
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. Click “New pull request”.\
   ![](/files/UpmHYUYRzwlN5Ran4QA2)
3. You will be directed to the pull request creation page.
4. Select the base branch (the one changes are being pulled into) of the parent and the head branch (the one with changes to merge) from your forked copy.\
   ![](/files/vKVodc4NLE8XZe4PIcdA)
5. At the bottom of the pull request page you can see the incoming commits from the branch compared with the based branch.
6. ⁠Type in the title for the pull request.
7. ⁠Type in the description summarizing the changes for the pull request. Include any pertinent information that will assist in reviewing the changes.
8. Click “Create Pull request”.\
   ![](/files/zGmyhSgw6OtANFALFZFA)
9. You are redirected to the pull request page where you can see the relevant details.


# Add reviewers to a pull request

Request a review for a pull request using the web UI.

Adding reviewers and requesting reviews helps ensure the quality and proper functionality of the proposed changes before merging.

Follow these steps to add a reviewer to a pull request on Procotol.Land:

1. Navigate to the Pull Requests tab on the main page of the repository.\
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. By default, the list of open pull requests are displayed.
3. Click on the pull request from the list to which you want to add a reviewer.
4. You will be redirected to the main page of the pull request.
5. On the pull request page, click on the + icon located at the right-hand side of the page.\
   ![](/files/iudPtJz5fBQzbwmpAnzA)
6. ⁠You will be prompted with a modal displaying the list of available reviewers.

{% hint style="info" %}
Note: Only contributors and owners of the repository can be added as reviewers.
{% endhint %}

7. Click on the address of the contributor you wish to add as a reviewer.\
   ![](/files/XCGA7HrwI7RP8diBdJsf)
8. The address of the selected contributor is check-marked within the list.
9. Click “Submit”.
10. The reviewers list on the pull request will update to reflect your addition.\
    ![](/files/Xggt5DJfabSD3Xkiij7l)
11. The pull request timeline on the "Overview" tab is also updated to show the request for review.


# Approve a pull request

Review and approve a pull request using the web UI.

A pull request approval signifies that the proposed changes meet the requirements and are ready to be merged in the base branch/ main codebase.

Follow these steps to approve pull request on Procotol.Land:

1. Navigate to the Pull Requests tab on the main page of the repository.\
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. By default, the list of open pull requests are displayed
3. Click on the pull request you wish to review and approve from the list.
4. You will be redirected to the main page of the pull request.
5. Review the changes by clicking the "Files" tab on the pull request page. This tab will show you the diff of changes. The "Overview" tab displays the complete timeline of the pull request, including comments, checks and the status of the pull request, while the "Commits" tab displays the commit history.\
   ![](/files/AxnEHHvUcHatz65Q0NfR)
6. Once the changes have been reviewed, Click “Approve” located on the right-hand side of the page above the list of reviewers.\
   ![](/files/ubDF94heTcFuRn88QhDG)
7. The pull request timeline on the "Overview" tab is updated with the approval details.


# Comment on a pull request

Add a comment on a pull request using the web UI.

Commenting on pull requests is essential for providing feedback, clarifying doubts and discussing revisions before merging.

Follow these steps to add a comment on a pull request on Protocol.Land:

1. Navigate to the Pull Requests tab on the main page of the repository.\
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. By default, the list of open pull requests are displayed.
3. Click on the pull request you wish to comment on from the list.
4. You will be redirected to the main page of the pull request.
5. Type in your comment in the provided text area towards the bottom of the pull request page.
6. Click “Comment”.\
   ![](/files/tkNaQ1AZ9lNZlo8NlcAf)

{% hint style="info" %}
Note: The "Comment" button is only enabled on typing a comment in the provided text area.
{% endhint %}

7. The pull request timeline on the "Overview" tab is updated with the latest comment.


# Merge a pull request

Merge a pull request using the web UI.

Merging is the final step in collaborating on a pull request, signifying that the proposed changes are accepted. On merging, the changes from the head (proposed) branch are merged into the base branch/ main codebase.

Follow these steps to merge a pull request on Protocol.Land:

1. Navigate to the Pull Requests tab on the main page of the repository.\
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. By default, the list of open pull requests are displayed.
3. Click on the pull request you wish to merge from the list.
4. You will be redirected to the main page of the pull request.
5. Click “Merge pull request” located at the bottom of the pull request timeline on the main page of the pull request.\
   ![](/files/ENqnh8t7rfxLBhEsvCmt)
6. The changes from the compared head branch are then applied to the base branch.
7. The status of the pull request is set to “merged” and it is moved to the list of closed pull requests.
8. The pull request timeline on the "Overview" tab is updated with the details of the merge.


# Close a pull request

Close a pull request using the web UI.

Closing a pull request typically occurs when the proposed changes are no longer needed or if it was decided to not proceed with the merge. Follow these steps to close a pull request on Protocol.Land:

{% hint style="info" %}
Note: Closing a pull request doesn't delete the branch or changes; it simply marks the pull request as closed. This allows you to revisit the branch later if needed.
{% endhint %}

1. Navigate to the Pull Requests tab on the main page of the repository.\
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. By default, the list of open pull requests are displayed.
3. Click on the pull request you wish to close from the list.
4. You will be redirected to the main page of the pull request.
5. Click “Close” located at the bottom of the Pull request timeline on the main page of the pull request.\
   ![](/files/RQ6JMpaW3wiMRFjnIa9h)
6. The status of the pull request is set to closed and it is moved to the list of closed pull requests.
7. The pull request timeline on the "Overview" tab is updated with the status update.


# Reopen a pull request

Reopen a pull request using the web UI.

There might be instances where you need to revisit and possibly merge a previously closed pull request.

Follow these steps to reopen a pull request on Protocol.Land:

1. Navigate to the Pull Requests tab on the main page of the repository.\
   ![](/files/8k3cCDi9mtu2NmF1GFLr)
2. By default, the list of open pull requests are displayed.
3. Select the Closed tab to view the list of closed pull requests located above the list of issues.\
   ![](/files/84x0h3x0JYzf5MWWVHeU)
4. Click on the pull request you wish to reopen from the list.
5. You will be redirected to the main page of the pull request.
6. Click “Reopen” located at the bottom of the pull request timeline on the main page of the pull request.\
   ![](/files/sqn7ImE9ATjgSO05y0Z0)
7. The status of the pull request is set to open and it is moved back to the list of open pull requests.
8. The Pull request timeline on the Overview tab is updated with the latest status update.


# Create a new issue

Create a new issue using the web UI.

Creating an issue helps track tasks, enhancements, bugs and other requests within a project.

Follow these steps to create a new issue in a repository on Protocol.Land:

1. Navigate to the main page of the repository and select the Issues tab.\
   ![](/files/HsP5xgpFIBgOarA7KFAd)
2. Click “New issue”.\
   ![](/files/BKTEhZHhKnz7W45vXfZ6)
3. You will be directed to the issue creation page.
4. Type in the title for the issue.
5. ⁠Type in the description summarizing the necessary information for the issue.
6. Click “Create Issue” located at the bottom of the page.\
   ![](/files/ojp7fmM0EhZ1HUm8IVYO)
7. You are redirected to the issue page where you can see the relevant details.


# Assign an issue

Assign an issue to a contributor using the web UI.

Assigning issues to specific contributors helps ensure that tasks are tracked and handled in a streamlined manner.

Follow these steps to assign an issue to a contributor on Protocol.Land:

{% hint style="info" %}
Note: An issue can only be assigned to contributors or the owner of the repository.
{% endhint %}

1. Navigate to the Issues tab on the main page of the repository.\
   ![](/files/HsP5xgpFIBgOarA7KFAd)
2. By default, the list of open issues are displayed.
3. Click on the issue you wish to assign from the list.
4. You will be redirected to the main page of the issue.
5. Click on the + icon at the right-hand side of the page.\
   ![](/files/NuD6TruRgN8lc99poc4l)
6. A modal will appear displaying a list of contributors and owners.\
   ![](/files/Ck5nU4mtxu4aFxZ5LbSu)
7. Click the address of the assignee of choice.
8. The selected address will be check-marked within the list.
9. Click "Submit".
10. The assignee list updates on successful assignment.\
    ![](/files/g19Hpgfzzx8TMj6KOH19)


# Comment on an issue

Add a comment on an issue using the web UI.

Commenting on issues is essential for providing additional information, feedback, suggestions and updates.

Follow these steps to add a comment on an issue on Protocol.Land:

1. Navigate to the Issues tab on the main page of the repository.\
   ![](/files/HsP5xgpFIBgOarA7KFAd)
2. By default, the list of open issues are displayed.
3. Click on the issue you wish to comment on from the list.
4. You will be redirected to the main page of the issue.
5. Type in your comment in the provided text area towards the bottom of the Issue page.
6. Click “Comment”.\
   ![](/files/tkNaQ1AZ9lNZlo8NlcAf)

{% hint style="info" %}
Note: The "Comment" button is only enabled on typing a comment in the provided text area.
{% endhint %}

7. The issue timeline on the "Overview" tab is updated with the latest comment.


# Close an issue

Close an issue using the web UI.

Closing an issue indicates that the matter has been resolved, deemed irrelevant, or otherwise addressed.

Follow these steps to close an issue on Protocol.Land:

{% hint style="info" %}
Note: Closing an issue doesn't delete it; it simply marks the issue as closed. This allows you to revisit the issue later if needed.
{% endhint %}

1. Navigate to the Issues tab on the main page of the repository.\
   ![](/files/HsP5xgpFIBgOarA7KFAd)
2. By default, the list of open issues are displayed.
3. Click on the issue you wish to close from the list.
4. You will be redirected to the main page of the issue.
5. Click “Close” located at the bottom of the issue timeline on the main page of the issue.\
   ![](/files/bKNOgAo2uZ4n4ottZyim)
6. The status of the issue is set to closed and it is moved to the list of closed issues.
7. The issue timeline on the "Overview" tab is updated with the latest status update.


# Reopen an issue

Reopen an issue using the web UI.

Reopening an issue is useful when a previously resolved problem reemerges, further discussion is needed, or additional work is required.

Follow these steps to reopen an issue on Protocol.Land:

1. Navigate to the Issues tab on the main page of the repository.\
   ![](/files/HsP5xgpFIBgOarA7KFAd)
2. By default, the list of open issues are displayed.
3. Select the Closed tab to view the list of closed issues located above the list of issues.\
   ![](/files/84x0h3x0JYzf5MWWVHeU)
4. Click on the issue you wish to reopen from the list.
5. You will be redirected to the main page of the issue.
6. Click “Reopen” located at the bottom of the issue timeline on the main page of the issue.\
   ![](/files/sqn7ImE9ATjgSO05y0Z0)
7. The status of the issue is set to open and it is moved back to the list of open issues.
8. The issue timeline on the "Overview" tab is updated with the latest status update.


# Create a new bounty

Create a new bounty for an issue using the web UI.

Bounties are incentives you can offer to contributors to resolve issues. They are especially useful in open-source projects to motivate and reward community contributions.

Follow these steps to create a new bounty for an issue on Protocol.Land:

1. Navigate to the main page of the repository and select the Issues tab.\
   ![](/files/HsP5xgpFIBgOarA7KFAd)
2. Select the “Bounties” tab located above the timeline of the issue.\
   ![](/files/UmS4WuIQES5hIsWFoPkv)
3. Click “New bounty”.\
   ![](/files/T5BwujKKU10y7xnz1iCQ)
4. A modal will appear requesting details for the new bounty.\
   ![](/files/TSoNYuD5Dgy9K5FMqUAh)
5. Type in the amount in AR (Arweave tokens) you wish to offer for the bounty.
6. Select the expiration date for the bounty, indicating how long the bounty offer will be available.
7. Click “Add bounty”.
8. The list of open bounties is updated with the details of the newly created bounty.


# Close a bounty

Close a bounty for an issue using the web UI.

Closing a bounty is typically done when the task associated with the bounty has been completed or if you decide to withdraw the bounty offer.

Follow these steps to close a bounty for an issue on Protocol.Land:

{% hint style="info" %}
Note: Only the contributor/ owner that created the bounty can close it.
{% endhint %}

1. Navigate to the main page of the repository and select the Issues tab.\
   ![](/files/HsP5xgpFIBgOarA7KFAd)
2. Select the “Bounties” tab located above the timeline of the issue.\
   ![](/files/UmS4WuIQES5hIsWFoPkv)
3. By default, the list of open bounties are displayed.
4. Click on the bounty you wish to close from the list.
5. You will be prompted with a modal requesting details for closing the bounty.\
   ![](/files/Abl8HjJgP2NenBkyHUCF)
6. You have the option to close the bounty with or without marking it as complete.
7. If you want to mark the bounty as complete, check the "Mark bounty as complete" checkbox. You will need to provide the Payment transaction id verifying the issued reward.
8. Click “Close bounty”.
9. The status of the bounty is set to closed and it is moved to the list of closed bounties.


# Deploy a static page

Deploy a static page on Arweave using the web UI.

Deploying a static page to Arweave allows you to permanently host your web page on the Permaweb.

Follow these steps to deploy a static page from your repository on Protocol.Land:

{% hint style="info" %}
Note: Only the owner of the repository can work with deployments.
{% endhint %}

1. Navigate to the main page of your repository and select the Settings tab.\
   ![](/files/rYEAVdPuSoJFfgXkXYQJ)
2. Within Settings, select the “Deployments” tab located in the sidebar.\
   ![](/files/k5bIihS4s8r7uxWrTiq0)
3. On the Deployments tab, you will be prompted to set the default branch for deployment if this is your first time deploying from the current repository.\
   ![](/files/iEmXYfLZnpoIoaVXaZBq)
4. Choose the branch you wish to deploy as a static page from the provided dropdown.
5. Click “Save”.

{% hint style="info" %}
Note: The "Save" button is only enabled on selecting a branch.
{% endhint %}

6. A "Dragon deploy" button will appear, indicating you're ready to deploy.\
   ![](/files/YAmoePsIYGrrudIkoO5C)
7. Click “Dragon deploy”
8. A modal will appear indicating that the latest commit for the selected branch has not been deployed yet.\
   ![](/files/dGWxqlbhDqN7s5WRsT44)
9. Preview the cost of deploying your static page by hovering over the information icon.
10. Click “Deploy”.
11. On successful deployment, the modal disables the deploy button and provides a link to view your deployment.\
    ![](/files/Eht7fjvCbafrURZx9B3r)
12. The deployment information is also added to the "Deployments" tab on the main page of your repository.


# Assign an ArNS name

Assign a user-friendly Arweave Name System (ArNS) name to a deployment using the web UI.

Arweave Name Service (ArNS) provides user-friendly domain names for Arweave deployments, making your static pages more accessible and easier to remember.

Follow these assign an ArNS name to a deployment in Protocol.Land:

{% hint style="info" %}
Note: Only the owner of the repository can work with deployments.
{% endhint %}

1. Navigate to the main page of your repository and select the Settings tab.\
   ![](/files/rYEAVdPuSoJFfgXkXYQJ)
2. Within Settings, select the “Deployments” tab located in the sidebar.\
   ![](/files/k5bIihS4s8r7uxWrTiq0)
3. On the deployments tab, after you've deployed a static page, the "Setup ArNS" button will appear next to the Deploy button.\
   ![](/files/mqFaCofI3UyN5vU50dPk)
4. Click “Setup ArNS”.
5. A modal will prompt you to either register a new ArNS name or add an existing one to your deployment.

### **Registering a new ArNS name.**

1. If you do not have an ArNS name, you must register one first.\
   ![](/files/lJKjgX5TtzMt1Ozgaz9Z)
2. Type in your desired domain name and click "Search".
3. If your desired name is already registered, the modal will prompt you to choose a different name.
4. If the name is available, the modal displays the estimated fees for registration and the lease duration for the name.\
   ![](/files/HtcHrGQkmpdVK5kh2hf5)
5. Click "Register" to secure your ArNS name.
6. The newly registered ArNS name is automatically assigned to the latest deployment of your repository.

### **Adding an existing ArNS name.**

1. If you already have an ArNS name, you can directly add it to your deployment.\
   ![](/files/khm6yvqvMWIJEE0YpLxU)
2. Type in the ArNS name you'd like to assign to the deployment in the provided input field and click "Search".
3. If your desired name is not already registered by you, the modal will prompt you accordingly.
4. If the name is available, the modal displays the estimated fees for the name to your deployment.\
   ![](/files/HwKslMSJibBgxypLVvyW)
5. Click "Add".
6. The specified ArNS is assigned to the latest deployment of your repository.


# Create a new organization

Create a new organization with your Arweave account using the web UI.

Organizations on Protocol.Land enable collaborative project management by grouping multiple repositories under a shared ownership and access control structure.

Follow these steps to create a new organization:

1. On the landing page of Protocol.Land, navigate to the “Create a new repository” panel, then click Create and switch to Organization tab.\
   ![](/files/TiVDdoAra0XYXNZNPERm)
2. You will be prompted with a modal requesting details for the new organization.\
   ![](/files/ObUXSWSIaL6S5HZKgAm4)
3. Type a name and an optional description for your organization.
4. Click Create.
5. You will be redirected to the repository page of your newly created repository.&#x20;


# Create a new repository

Create a new repository in Organization with your Arweave account using the web UI.

Follow these steps to create a new repository:

1. Head over to any organization that you own or admin of and switch to Repositories tab.\
   ![](/files/4M90x4O97PwUCdeFPNgP)
2. Click on "New Repository" button on the right\
   ![](/files/2N96NjuTaPdvJCjiH72b)
3. You will be prompted with a modal requesting details for the new repository.\
   ![](/files/qgDWJggqtigC3Fkvx0To)
4. ⁠Type a name and an optional description for your repository.
5. ⁠Preview the estimated cost of creating a new repository by hovering over the information icon.
6. Click Create.
7. You will be redirected to the repository page of your newly created repository.
8. Each repository is created with a default README.md file that includes the title of the repository.


# Import a repository from GitHub

Backup a GitHub repository directly to an organization on Protocol.Land.

Backing up your repository to an organization you own on Protocol.Land helps you group your repositories you import from Github with managed access control.

Follow these steps to backup your GitHub repository  to an organization on Protocol.Land:

1. Navigate to your GitHub repository and go to the "Settings" tab.
2. Under "Secrets and variables," select "Actions" then click "New Repository Secret."
3. Add a new secret with "Name" as “WALLET”, paste your Arweave wallet's JWK into the "Secret" field, and click "Add secret."
4. Go to the "Actions" tab of your repository.
5. Click "New workflow" if you have existing actions, or follow the prompt to "Get started with GitHub Actions" if it's your first time.
6. Choose to "Set up a workflow yourself."
7. In the `.yml` file that appears, copy and paste the provided YAML code and commit the changes. This code includes crucial steps, such as checking out all branches and setting up node environments before syncing to Protocol Land.

```yaml
name: Protocol Land Sync
on:
    # Run with every push to 'main' branch:
    push:
        branches:
            - 'main'
    # Run Manually:
    #workflow_dispatch:
jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            - name: 'Checkout repo (default branch)'
              uses: actions/checkout@v3
              with:
                  # fetch all history for all branches:
                  fetch-depth: 0
            - name: 'Checkout all branches'
              run: |
                  default_branch=$(git branch | grep '*' | sed 's/\* //')
                  for abranch in $(git branch -a | grep -v HEAD | grep remotes | sed "s/remotes\/origin\///g"); do git checkout $abranch ; done
                  git checkout $default_branch
                  git branch -a
            - name: 'Setup node 18'
              uses: actions/setup-node@v3
              with:
                  node-version: 18.x
            - name: 'Sync repo to Protocol Land'
              run: npx @protocol.land/sync
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                  REPO_TITLE: ${{ github.event.repository.name }}
                  REPO_DESCRIPTION: ${{ github.event.repository.description }}
                  WALLET: ${{ secrets.WALLET }}
                  ORGANIZATION_NAME: protocol-land ## <- Edit this to Name of your organization
```

8. The code is set to automatically execute with every push to the `main` branch. For manual execution, modify the `on:` section to include `workflow_dispatch:`.
9. If desired, you can adjust the workflow to only sync the main branch by commenting out the 'Checkout all branches' section.
10. Navigate to your organization page on Protocol.Land.
11. Under "Repositories" tab you should now see the imported repo.

### Add published badge to your Github repo

When you sync your GitHub repo with Protocol.Land, proudly display the "Published on Protocol.land" badge in your README.\
\
Use the below template and replace \<REPO\_ID> with your Protocol.Land repo ID:

```markdown
[![protocol.land](https://arweave.net/eZp8gOeR8Yl_cyH9jJToaCrt2He1PHr0pR4o-mHbEcY)](https://protocol.land/#/repository/<REPO_ID>)
```

Using the above line in your README file will show `Published on Protocol.Land` badge like this one ![](https://arweave.net/eZp8gOeR8Yl_cyH9jJToaCrt2He1PHr0pR4o-mHbEcY).<br>


# Add members to organization

Add members to an organization using the web UI.

Adding members to an organization allows for collaboration under a shared ownership and access control structure.

Follow these steps to add a member to your organization on Protocol.Land:

{% hint style="info" %}
Note: Only an organization owner can invite a new member.
{% endhint %}

1. Navigate to the people tab of the organization and click on the "Invite Member" button.\
   ![](/files/nO17ag92VhW3E9NueG1B)
2. A modal will popup asking you to enter the arweave address of the member you wish to invite.\
   ![](/files/veOVYz7xkuCQuZyQqBEH)
3. Fill the address input and select role you want to assign to the new member.
   1. Admin - Can create new repositories and contribute to existing ones
   2. Member - Can only contribute to repositories
4. Click “Invite Member”.
5. The invitation will appear in the “People” tab list, marked as Invited.
6. To accept/reject an invitation:
   1. Head over to organization you were invited to and you will see two options: Accept, Reject.
   2. Click on one of the buttons to confirm your action.


# See List of Organizations you are part of

View all organizations you are part of:

1. Click on the active account icon in the header on Protocol.Land.\
   ![](/files/1iDPdQ6GK6RZe1wxodBS)
2. A dropdown menu will appear with a link to your profile and the option to Logout.\
   ![](/files/C03F5uebSIWxXUWzo0sp)
3. Click "Profile" to navigate to your profile page.
4. On your profile page, switch to Organizations tab
5. You should see a list of organizations you are part of.\
   ![](/files/j3HexOvxyPsQGIWMBGwL)


# Transfer your repo to organization

Transfer repo to your organization using web ui

This feature allows you to take your personal repositories to an organization that you own or are an admin of

Follow these steps to transfer your repository to an organization on Protocol.Land:

1. Head over to your repository page and switch to settings.\
   ![](/files/GV0HjfbbAqkbeYIU5lsB)
2. Under "General" side tab, to the bottom, click on the "Transfer Ownership" button.\
   ![](/files/Tkdas95I9M7Np3ISfaHQ)
3. Enter Address of new user or Organization name or Organization ID you are admin or owner of in the modal box.\
   ![](/files/matfnbbyg1hKwpkKtp4a)
4. Click "Transfer Ownership" button.
5. Page will reload once the operation is successful.<br>


# Customize your profile details

Edit and update your profile details using the web UI.

Personalizing your profile details helps in establishing your identity in the community.

Follow these steps to customize your profile details on Protocol.Land:

1. Click on the active account icon in the header on Protocol.Land.\
   ![](/files/1iDPdQ6GK6RZe1wxodBS)
2. A dropdown menu will appear with a link to your profile and the option to Logout.\
   ![](/files/C03F5uebSIWxXUWzo0sp)
3. Click "Profile" to navigate to your profile page.
4. Once on your profile page, click "Edit details" located on the left-hand side of the page in the details section.\
   ![](/files/Wd7VpXv0zxsKPQOlFpGd)
5. You will be provided with input fields to type in your desired details, such as full name, username and socials  you wish to update.\
   ![](/files/znvcm3oxJwrwWwsfgMnj)
6. Fill in or edit your details as required.
7. Click “Save details” to apply your updates.
8. The details section of your profile will refresh to show your updated information.


# Add a README for your profile

Share about your interests and experience on your profile page.

A README on your profile provides a personal touch, allowing you to introduce yourself, your interests, and your experience to the community.

Follow these steps to add or edit your README on Protocol.Land:

1. Click on the active account icon in the header on Protocol.Land.\
   ![](/files/1iDPdQ6GK6RZe1wxodBS)
2. A dropdown menu will appear with a link to your profile and the option to Logout.\
   ![](/files/C03F5uebSIWxXUWzo0sp)
3. Click "Profile" to navigate to your profile page.
4. On your profile page, Protocol.Land provides a dedicated component to share about yourself, akin to creating a README for your GitHub profile.
5. Click on the Edit icon located at the top right corner of this README component.\
   ![](/files/KB4d0fuZUjCkFrolzmO4)
6. You will be provided with an editor to revise your details.&#x20;
7. Craft your message, introduction, or any other information you wish to share. Utilize the editor's features to format and style your text.
8. Click on the "Preview" tab of the editor to view how your changes would look to others.\
   ![](/files/fMXyPayiCFfkOCtaCdSJ)
9. Once satisfied, click “Save” located at the top right corner of the editor to update the changes.\
   ![](/files/RDKvCX0xE7jKqCKJV2hI)
10. The README section of your profile page will be refreshed with the updated information.


# Explore contribution activity

Explore your development contributions activity.

A visual account of your coding contributions, pull requests, issue interactions, and more, allowing you to easily track and showcase active participation within the community.

Follow these steps to explore your contribution activity on Protocol.Land:

1. Click on the active account icon in the header on Protocol.Land.\
   ![](/files/1iDPdQ6GK6RZe1wxodBS)
2. A dropdown menu will appear, offering a link to your profile and the option to log out.\
   ![](/files/C03F5uebSIWxXUWzo0sp)
3. Select "Profile" to navigate to your profile page.
4. Your contribution activity is displayed below your profile README component on your profile page.\
   ![](/files/GOnjeEzmewaa3zo1vlmq)


