# EverDev

Everdev is a Node.js package with CLI interface that allows to set up developer environment and develop on TVM compatible blockchains (Everscale, Venom, TON, Gosh, etc).

## [Quick Start](https://docs.everos.dev/everdev/guides/quick-start)

**Get quick help in our telegram channel:** [![Channel on Telegram](https://img.shields.io/badge/chat-on%20telegram-9cf.svg)](https://t.me/ever_sdk)

<div><figure><img src="https://1568078343-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCmimRVYKp3FChIIdVQ51%2Fuploads%2Fg8DCzYhXFbskTt0odAR4%2FEverscale%20Logo.png?alt=media&#x26;token=9484b624-6456-47b4-9757-c0fa43f4caa7" alt=""><figcaption></figcaption></figure> <figure><img src="https://1568078343-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCmimRVYKp3FChIIdVQ51%2Fuploads%2FHRDuD6BhTzV4UaOdAbIP%2Fvf-dev-program.png?alt=media&#x26;token=98fe98da-6356-4308-9e7f-de95597a2bcb" alt=""><figcaption></figcaption></figure></div>

[NPM package](https://www.npmjs.com/package/everdev)

### Use-cases

* Easily manage(install, update) all the core tools, such as Solidity/C++ Compilers, Evernode-SE
* Configure networks (including Local Blockchain, Developer Network, Everscale (main) network): add, configure giver contract;
* Manage keys: add, remove
* Work with blockchain from CLI

## Content table

* [EverDev](#everdev)
  * [Quick Start](#quick-start)
    * [Use-cases](#use-cases)
  * [Content table](#content-table)
  * [Installation](#installation)
    * [Prerequisites](#prerequisites)
    * [Using NPM](#using-npm)
    * [Using pre-compiled binaries](#using-pre-compiled-binaries)
    * [Using docker](#using-docker)
    * [Update](#update)
  * [Command Line Interface](#command-line-interface)
    * [General command syntax](#general-command-syntax)
    * [Solidity Compiler](#solidity-compiler)
    * [Solidity Compiler Driver](#solidity-compiler-driver)
    * [C/C++ Compiler](#cc-compiler)
    * [Network Tool](#network-tool)
    * [Signer Tool](#signer-tool)
    * [Contract Management Tool](#contract-management-tool)
    * [Evernode Simple Emulator (local blockchain)](#evernode-simple-emulator-local-blockchain)
    * [Debot Browser](#debot-browser)
    * [TestSuite4](#testsuite4)
  * [Cookbook](#cookbook)
    * [Quick Start](#quick-start-1)
    * [Work with contracts](#work-with-contracts)
    * [Work with DevNet](#work-with-devnet)
    * [Create controller](#create-controller)
    * [View controller info](#view-controller-info)
  * [Troubleshooting](#troubleshooting)
  * [EverDev Extensibility](#everdev-extensibility)

## Installation

### Prerequisites

* [`Node.js`](https://nodejs.org) >= 14.x installed. Required only if you are installing Everdev from NPM. We recommend using [Node version manager](https://github.com/nvm-sh/nvm#install--update-script) to install nodejs and NPM.
* (optional) [`Docker`](https://www.docker.com) >= 19.x installed
* Solidity compiler requires VC++ Runtime on Windows. You can install it from [the latest supported Visual C++ downloads](https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0).

### Using NPM

```shell
npm i -g everdev
```

If you see an EACCESS error when you try to install a package globally on Mac or Linux, [please see this instruction](https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally)

### Using pre-compiled binaries

You can download precompiled binaries for your platform from [the latest release](https://github.com/tonlabs/everdev/releases/). After download you need to create directory if it does not exists.

For linux/macos:

> ```shell
> mkdir -p ~/.everdev/bin
> ```
>
> Then unpack `everdev` from archive into this folder.

For windows:

> ```shell
> md $env:HOMEDRIVE$env:HOMEPATH\.everdev\bin
> ```
>
> Then move downloaded binary as `everdev.exe` into this folder.

To make it possible to run `everdev` from any folder, you need to update the system PATH environment variable.

For linux/macos:

> ```shell
> echo 'export PATH=~/.everdev/bin:$PATH' >> ~/.profile && source ~/.profile
> ```

For windows run PowerShell and execute this line:

> ```powershell
> [System.Environment]::SetEnvironmentVariable("PATH", "$env:HOMEDRIVE$env:HOMEPATH\.everdev\bin;$([System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::User))", [System.EnvironmentVariableTarget]::User)
> ```

*After trying to run `everdev` on macos you can see the error: "everdev" cannot be opened because the developer cannot be verified. Open your computer System Preferences > Security & Privacy > Privacy. Here, you should see an option to click "Allow Anyway" next to the "everdev" application in question.*

### Using docker

Select a base image that provides GLIBC ver. 2.29 or higher if you want to use the Evedev Solidity compiler like ubuntu:20.04:

```
docker run -it --rm ubuntu:20.04
# apt update &&  apt upgrade -y && apt install -y curl
# curl -L https://github.com/tonlabs/everdev/releases/download/1.3.1/everdev-linux.tgz  --output everdev-linux.tgz
# tar xvf everdev-linux.tgz
# mv everdev /usr/local/bin/
```

### Update

```shell
npm r -g everdev
npm i -g everdev
```

## Command Line Interface

Components are downloaded and installed automatically for the target platform upon the first request.

### General command syntax

```shell
everdev <tool> <command> ...args
```

Some tools (network, signer, contract, js) and commands have short aliases. For example instead of using `everdev network list` you can use `everdev n l` and even shorter `everdev nl`.

### [Solidity Compiler](https://docs.everos.dev/everdev/command-line-interface/solidity)

Controller for [Everscale Solidity compiler](https://github.com/tonlabs/TON-Solidity-Compiler).

### [Solidity Compiler Driver](https://docs.everos.dev/everdev/command-line-interface/solidity-compiler-driver)

Controller for [sold - Everscale Solidity compiler driver](https://github.com/tonlabs/TON-Solidity-Compiler/tree/master/sold)

### [C/C++ Compiler](https://docs.everos.dev/everdev/command-line-interface/c)

Controller for [Everscale Clang Compiler](https://github.com/tonlabs/TON-Compiler).

### [Network Tool](https://docs.everos.dev/everdev/command-line-interface/network-tool)

Controller for network management.

### [Signer Tool](https://docs.everos.dev/everdev/command-line-interface/signer-tool)

Controller for keys management.

### [Contract Management Tool](https://docs.everos.dev/everdev/command-line-interface/contract-management)

Controller for working with smart contracts.

### [Evernode Simple Emulator (local blockchain)](https://docs.everos.dev/everdev/command-line-interface/evernode-platform-startup-edition-se)

Controller for [Local Node emulator](https://github.com/tonlabs/evernode-se).

### [Debot Browser](https://docs.everos.dev/everdev/command-line-interface/debrowser)

Controller for DeBot browser.

### [TestSuite4](https://docs.everos.dev/everdev/command-line-interface/testsuite4)

Controller for [TestSuite4](https://github.com/tonlabs/TestSuite4) testing framework.

## Cookbook

### Quick Start

Get started with essential Everscale Development Tools with [Quick Start guide](https://docs.everos.dev/everdev/guides/quick-start).

### Create controller

Find out how to create your own controller for EverDev: [Create controller](https://docs.everos.dev/everdev/guides/creating-controller).

### View controller info

Learn how to view all available controllers information: [View controller info](https://docs.everos.dev/everdev/guides/view-controller-info).

## Troubleshooting

If you encountered any problem try to seek the solution in [Troubleshooting Notes](https://docs.everos.dev/everdev/troubleshooting). If it didn't help - please, ask in our [telegram channel](https://t.me/ever_sdk).

## EverDev Extensibility

EverDev Environment is an integration point for development tools related to Everscale Blockchain.

There are two kind of software connected to EverDev:

* Development tools such as a compilers, networks, debuggers and so on.
* User Interaction services such as an IDE plugins, CLI, GUI applications etc.

Learn more about creating your own controller: [Creating Controller](https://docs.everos.dev/everdev/guides/creating-controller)


---

# Agent Instructions: 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:

```
GET https://docs.everos.dev/everdev/...md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
