> For the complete documentation index, see [llms.txt](https://docs.put.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.put.com/developers/get-started/local-development.md).

# Local development

## Local Development Quickstart

This quickstart guide will demonstrate how to quickly install and setup your local development environment, getting you ready to start developing and deploying PUT programs to the blockchain.&#x20;

## What you will learn

* How to install the PUT CLI locally
* How to setup a localhost PUT cluster/validator
* How to create a PUT wallet for developing
* How to airdrop PUT tokens for your wallet

## Install the PUT CLI

To interact with the PUT clusters from your terminal, install the PUT CLI tool suite on your local system:

```
sh -c "$(curl -sSfL https://release.put.com/stable/install)"
```

## Setup a localhost blockchain cluster

The PUT CLI comes with the test validator built in.&#x20;

This command line tool will allow you to run a full blockchain cluster on your machine.

```
put-test-validator
```

PRO TIP: Run the PUT test validator in a new/separate terminal window that will remain open. The command line program must remain running for your localhost cluster to remain online and ready for action.

Configure your PUT CLI to use your localhost validator for all your future terminal commands:

```
put config set --url localhost
```

At any time, you can view your current PUT CLI configuration settings:

```
put config get
```

## Create a file system wallet

To deploy a program with PUT CLI, you will need a PUT wallet with PUT tokens to pay for the cost of transactions.

Let's create a simple file system wallet for testing:

```
put-keygen new
```

By default, the put-keygen command will create a new file system wallet located at \~/.config/put/id.json. You can manually specify the output file location using the --outfile /path option.

NOTE: If you already have a file system wallet saved at the default location, this command will NOT override it (unless you explicitly force override using the --force flag).

Set your new wallet as default#

With your new file system wallet created, you must tell the PUT CLI to use this wallet to deploy and take ownership of your on chain program:

```
put config set -k ~/.config/put/id.json
```

## Airdrop PUT tokens to your wallet

Once your new wallet is set as the default, you can request a free airdrop of PUT tokens to it:

```
put airdrop 2
```

NOTE: The put airdrop command has a limit of how many PUT tokens can be requested per airdrop for each cluster (localhost, testnet, or devent). If your airdrop transaction fails, lower your airdrop request quantity and try again.

You can check your current wallet's PUT balance any time:

```
put balance
```

## Next steps

See the links below to learn more about writing Rust based PUT programs:

* Create and deploy a PUT Rust program
* Overview of writing PUT programs


---

# 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.put.com/developers/get-started/local-development.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.
