# RoostGPT

# RoostGPT Platform Feature Comparison

## Supported Features Across Deployment Options

<table id="bkmrk-feature-category-web" style="width: 118.095%; height: 804px;"><thead><tr style="height: 46.5938px;"><th style="width: 14.1836%; height: 46.5938px;">**Feature Category**</th><th style="width: 31.5888%; height: 46.5938px;">**Web Interface (UI)**</th><th style="width: 31.8201%; height: 46.5938px;">**Command Line Interface (CLI)**</th><th style="width: 22.5268%; height: 46.5938px;">**IDE Plugin**</th></tr></thead><tbody><tr style="height: 46.5938px;"><td style="width: 14.1836%; height: 46.5938px;">**Workspace Integration**</td><td style="width: 31.5888%; height: 46.5938px;">Not Available</td><td style="width: 31.8201%; height: 46.5938px;">✅ Local workspace trigger supported</td><td style="width: 22.5268%; height: 46.5938px;">✅ Local workspace trigger supported</td></tr><tr style="height: 63.3906px;"><td style="width: 14.1836%; height: 63.3906px;">**Version Control Integration**</td><td style="width: 31.5888%; height: 63.3906px;">✅ Full Git activity support via web interface</td><td style="width: 31.8201%; height: 63.3906px;">✅ Full Git activity support via CLI commands</td><td style="width: 22.5268%; height: 63.3906px;">❌ Limited to local workspace operations</td></tr><tr style="height: 46.5938px;"><td style="width: 14.1836%; height: 46.5938px;">**Notifications**</td><td style="width: 31.5888%; height: 46.5938px;">✅ Real-time notifications when test generation completes</td><td style="width: 31.8201%; height: 46.5938px;">❌ No notification system</td><td style="width: 22.5268%; height: 46.5938px;">❌ No notification system</td></tr><tr style="height: 46.5938px;"><td style="width: 14.1836%; height: 46.5938px;">**License Management**</td><td style="width: 31.5888%; height: 46.5938px;">✅ Integrated license validation in UI</td><td style="width: 31.8201%; height: 46.5938px;">✅ API-based or license file validation</td><td style="width: 22.5268%; height: 46.5938px;">✅ API-based or license file validation</td></tr><tr style="height: 46.5938px;"><td style="width: 14.1836%; height: 46.5938px;">**Event Monitoring**</td><td style="width: 31.5888%; height: 46.5938px;">✅ Webhook support for Git events (PR creation, push, etc.)</td><td style="width: 31.8201%; height: 46.5938px;">❌ No Git event monitoring</td><td style="width: 22.5268%; height: 46.5938px;">❌ No Git event monitoring</td></tr><tr style="height: 46.5938px;"><td style="width: 14.1836%; height: 46.5938px;">**User Management**</td><td style="width: 31.5888%; height: 46.5938px;">✅ Role-based access control with separate admin and user views</td><td style="width: 31.8201%; height: 46.5938px;">⚠️ Individual user basis on local system</td><td style="width: 22.5268%; height: 46.5938px;">⚠️ Individual user basis on local system</td></tr><tr style="height: 63.3906px;"><td style="width: 14.1836%; height: 63.3906px;">**Analytics &amp; Reporting**</td><td style="width: 31.5888%; height: 63.3906px;">✅ Comprehensive dashboard with detailed test generation reports and metrics</td><td style="width: 31.8201%; height: 63.3906px;">❌ No dashboard functionality</td><td style="width: 22.5268%; height: 63.3906px;">⚠️ Basic UI showing added tests only</td></tr><tr style="height: 80.1875px;"><td style="width: 14.1836%; height: 80.1875px;">**Test Execution Environment**</td><td style="width: 31.5888%; height: 80.1875px;">✅ Isolated Docker containers for secure test execution and compilation verification</td><td style="width: 31.8201%; height: 80.1875px;">⚠️ **Local Mode:** Manual dependency management  
 **Docker Mode:** Requires Docker runtime</td><td style="width: 22.5268%; height: 80.1875px;">⚠️ Manual dependency management required</td></tr><tr style="height: 63.3906px;"><td style="width: 14.1836%; height: 63.3906px;">**Ease of Use**</td><td style="width: 31.5888%; height: 63.3906px;">✅ Intuitive web forms with one-click test generation</td><td style="width: 31.8201%; height: 63.3906px;">⚠️ env file configuration or download env from web UI for CLI trigger</td><td style="width: 22.5268%; height: 63.3906px;">✅ Context menu integration with code lens support</td></tr><tr style="height: 63.3906px;"><td style="width: 14.1836%; height: 63.3906px;">**Test Comparison Tools**</td><td style="width: 31.5888%; height: 63.3906px;">✅ Built-in comparison view for multiple test scenarios</td><td style="width: 31.8201%; height: 63.3906px;">❌ No comparison functionality</td><td style="width: 22.5268%; height: 63.3906px;">❌ No comparison functionality</td></tr><tr style="height: 46.5938px;"><td style="width: 14.1836%; height: 46.5938px;">**API Server**</td><td style="width: 31.5888%; height: 46.5938px;">✅ Dedicated API server for programmatic access</td><td style="width: 31.8201%; height: 46.5938px;">❌ No API server</td><td style="width: 22.5268%; height: 46.5938px;">❌ No API server</td></tr><tr style="height: 46.5938px;"><td style="width: 14.1836%; height: 46.5938px;">**History &amp; Audit Trail**</td><td style="width: 31.5888%; height: 46.5938px;">✅ Comprehensive event history and audit logging</td><td style="width: 31.8201%; height: 46.5938px;">⚠️ CLI-based history for current user session</td><td style="width: 22.5268%; height: 46.5938px;">❌ No history management</td></tr><tr><td style="width: 14.1836%;">**Team Sharing**</td><td style="width: 31.5888%;">✅ Centralized credential sharing via connectors and team-wide test configuration distribution</td><td style="width: 31.8201%;">❌ No sharing capabilities</td><td style="width: 22.5268%;">❌ No sharing capabilities</td></tr><tr><td style="width: 14.1836%;">**Database**

**Persistence**

</td><td style="width: 31.5888%;">✅ Test configurations and connectors are stored in a central database</td><td style="width: 31.8201%;">⚠️ No persistence. Configuration is persisted locally in the system.</td><td style="width: 22.5268%;">⚠️ No persistence. Configuration is persisted locally in the system.</td></tr><tr><td style="width: 14.1836%;">**Stand-alone system**

</td><td style="width: 31.5888%;">❌ UI can not be deployed as a stand-alone and will need to be hosted on a server</td><td style="width: 31.8201%;">✅ CLI can be deployed as a stand-alone without any API Server or Hosted Server</td><td style="width: 22.5268%;">✅ Plugin can be deployed as a stand-alone without any API Server or Hosted Server</td></tr><tr><td style="width: 14.1836%;">**Deployment**

</td><td style="width: 31.5888%;">On Cloud and On Prem </td><td style="width: 31.8201%;">On Linux, Windows, MacOS</td><td style="width: 22.5268%;">From VSCode Marketplace and IntelliJ Disk install</td></tr></tbody></table>

## Legend

- ✅ **Full Support:** Feature is fully implemented and available
- ⚠️ **Partial Support:** Feature available with limitations or manual setup required
- ❌ **Not Available:** Feature is not supported in this deployment option

## Deployment Options

### Web Interface (UI)

**Best for:** Teams requiring comprehensive project management, detailed analytics, and centralized administration.

### Command Line Interface (CLI)

**Best for:** Developers preferring terminal-based workflows and automated CI/CD pipeline integration.

### IDE Plugin

**Best for:** Individual developers seeking seamless integration within their development environment.

### Application Programming Interface (API)

**Best for:** Automated CI/CD pipeline integration (limited API are exposed to access the hosted RoostGPT API server).

# Self Hosted RoostGPT - OnPrem

Install RoostGPT on Ubuntu Server

# Ubuntu Server Requirements

- Ubuntu Server 22.04 or higher
- Minimum CPU - 8 cores
- Minimum RAM - 16 GB
- Minimum Root Disk - 50 GB
- Additional Disk - 250 GB (for /var/tmp/Roost mount point)

Ubuntu user should have preferably passwordless sudo access

# Download Roost Deployment Tool

Copy and execute the below bash snippet. The tool will prompt for the needed details and launch RoostGPT stack

```bash
curl -sLO https://github.com/roost-io/roost-support/releases/latest/download/roost-deployment-tool 
chmod +x roost-deployment-tool

```

# Network Configuration and SSL Certificates

##### SSL Certificates to the enterprise domain

Copy SSL Certificates to the Ubuntu Server and make a note of the key and cert file location.

It will have to be mentioned in the config.json

##### Network Configuration

Allow incoming traffic to the below ports

<table border="1" id="bkmrk-protocol-port-source" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>**Protocol**</td><td>**Port**</td><td>**Source IP**</td></tr><tr><td>TCP (HTTPS)</td><td>443</td><td>All IP in the company network</td></tr><tr><td>SSH</td><td>22</td><td>Only to be used by IT Support Staff</td></tr><tr><td>TCP</td><td>60001 - 62120</td><td>  
</td></tr></tbody></table>

# Launch RoostGPT stack

Execute the below command to update the stack

```bash
./roost-deployment-tool create-stack
```

##### To refresh/upgrade Roost version in the stack

```bash
./roost-deployment-tool refresh-stack
```

# Self Hosted RoostGPT - Deploy on AWS using Terraform

To self-host RoostGPT stack, we need the below infrastructure resources. 

MySQL or Postgres Database 
SSL Certificates and a DNS domain
oAuth application related client id, secret and DNS configuration for redirect
Identify an IP CIDR range and a cloud data-center region and availability zone for configuring cloud compute and networking resources 

The below resources will be provisioned using Terraform script

VPC and corresponding public and private subnets and NAT gateway
Ubuntu Compute instances (EC2) and associated storage volumes
Application Load-balancer and target groups


# 1. Getting Started

Roost provides terraform scripts to spin up and configure the RoostGPT platform easily. Below are the steps for deploying Roost on AWS using Terraform

#### High-Level Architecture

Roost Terraform scripts create the below components in the AWS cloud

[![RoostGPT-architecture-multiple-ec2.jpg](https://docs.roost.ai/uploads/images/gallery/2025-09/scaled-1680-/k9jZ8BgT4Xiu51iq-roostgpt-architecture-multiple-ec2.jpg)](https://docs.roost.ai/uploads/images/gallery/2025-09/k9jZ8BgT4Xiu51iq-roostgpt-architecture-multiple-ec2.jpg)

Interactive diagram at [https://docs.roost.ai/arch](https://docs.roost.ai/arch)

#### Prerequisites 

- User Account with Admin privileges / Policies enabled to run terraform scripts
- region
- route53\_hosted\_zone\_id
- ec2\_ami (for Ubuntu Jammy 22.04)
- enterprise\_dns
- ip\_block\_vpc (VPC CIDR where Roost would be set up)
- okta\_client\_id or appropriate auth provider ( please refer next section)
- company name

#### Download the Terraform scripts

```bash
curl -LO https://github.com/roost-io/roost-support/raw/refs/heads/master/terraform-ec2.zip
```

# New Page



# 2. OAuth Provider Setup

Roost supports various authentication mechanisms as mentioned below

1. Okta
2. Google
3. Microsoft Azure ADFS

## OKTA Auth Client Setup<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

- Sign in to your OKTA account with admin privileges (*If you do not have an existing Okta account, then sign-up at* [Home | Okta Developer](http://developer.okta.com/ "http://developer.okta.com/") )
- From the left navigation menu, go to Applications -&gt; Applications.
- Select Create App Integration → OIDC - OpenID Connect → Web Application, then click Next
- Fill in the suitable **App integration name,** upload the logo.
- Add **Sign-in redirect URIs**
    - https://&lt;DNS\_NAME&gt;/login
- Allow Access to users thru Assignments → Controlled Access 
    - Select the groups of users or Allow access to everyone
- Save and Make a note of the Okta Client ID and the Client Secret (It is needed later in the config below)
- From the left navigation menu, go to Security -&gt; API
- Make a note of **Issuer URI** for default Authorisation Server 
    - something like https://{your\_domain}.okta.com/oauth2/default

## Google Auth Client Setup<button aria-label="Copy link to heading" class="css-779anb"><svg height="24" role="presentation" viewbox="0 0 24 24" width="24"></svg></button>

- [Integrating Google Sign-In into your web app | Google Sign-In for Websites | Google Developers](https://developers.google.com/identity/sign-in/web/sign-in "https://developers.google.com/identity/sign-in/web/sign-in")
- Login to [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials "https://console.cloud.google.com/apis/credentials")
- Create Credentials, Select OAuth Client and Application Type as Web Application
- Add Authorised JavaScript Origin as
    
    
    - https://&lt;DNS\_NAME&gt;
- Add Authorised redirect URIs
    
    
    - https://&lt;DNS\_NAME&gt;/login
    - https://&lt;DNS\_NAME&gt;/api/auth/redirect/google
- Download the JSON
- Make a note of the Google Client ID and the Client Secret (It is needed later in the config below)

## Azure <span data-highlighted="true" data-vc="highlighted-text"><span class="_kqswh2mm"><span class="_5pioz8co _189eyh40 _1il9buyh _19lcevot _d0altlke" data-testid="definition-highlighter">ADFS</span></span></span> Auth Client Setup

`Roost 0Auth2 Setup - Windows Server 2016/2019 - <span data-highlighted="true" data-vc="highlighted-text">ADFS</span> 4.0`

1. Open the **Server Manager** from **Start Menu,** Select **Tools** &gt; **<span data-highlighted="true" data-vc="highlighted-text"><span class="_kqswh2mm"><span class="_5pioz8co _189eyh40 _1il9buyh _19lcevot _d0altlke" data-testid="definition-highlighter">AD</span></span></span> <span data-highlighted="true" data-vc="highlighted-text"><span class="_kqswh2mm"><span class="_5pioz8co _189eyh40 _1il9buyh _19lcevot _d0altlke" data-testid="definition-highlighter">FS</span></span></span> Management**
2. From the **<span data-highlighted="true" data-vc="highlighted-text">AD</span> <span data-highlighted="true" data-vc="highlighted-text">FS</span> Management** screen, go to **<span data-highlighted="true" data-vc="highlighted-text">AD</span> <span data-highlighted="true" data-vc="highlighted-text">FS</span> ➜ Application Groups**
3. Click **Add Application Group** on right panel

1. Fill in a **name** (**Roost**) for the application group
2. Select **Server Application Web browser accessing a web API** and click **Next**
3. Make note of the **Client Identifier** value. This will be the value for the `AZURE_ADFS_CLIENT_ID` variable
4. Fill the **Redirect URI** (<span data-annotation-inline-node="true" data-annotation-mark="true" data-card-url="https://zbio.roost.io/login" data-inline-card="true" data-renderer-start-pos="2296">[https://&lt;DNS\_NAME&gt;/login](https://<DNS_NAME>/login)</span> ) and click Add, then Next
5. Check the **Genrate a shared secret** box
6. Use the **Copy to clipboard** button to retrieve the secret. This will be the value for the `AZURE_ADFS_CLIENT_SECRET` variable. Click **Next**
7. Enter the Web API identifier (Same as RedirectUri - <span data-annotation-inline-node="true" data-annotation-mark="true" data-card-url="https://zbio.roost.io/login" data-inline-card="true" data-renderer-start-pos="2558">[https://&lt;DNS\_NAME&gt;/login](https://<DNS_NAME>/login)</span> ) and click A**dd,** then **Next**
8. On the **Access Control Policy** screen, select a policy, usually **Permit everyone** and click **Next**
9. On the **Configure Application Permissions** screen, select the scope **openid** and click **Next**
10. **Review the settings and click Next**
11. Close the wizard by clicking **Close**. Our application is now registered in <span data-highlighted="true" data-vc="highlighted-text">ADFS</span>.

1. Now, we need to **Configure the Claims** for Application

1. Open the P**roperties** for the application group we just created.
2. Select the **Web application** entry (**Roost - Web API**) and click **Edit**
3. On the **Issuance Transform Rules** tab, click the **Add Rule** button
4. Select **Send <span data-highlighted="true" data-vc="highlighted-text"><span class="_kqswh2mm"><span class="_5pioz8co _189eyh40 _1il9buyh _19lcevot _d0altlke" data-testid="definition-highlighter">LDAP</span></span></span> Attributes as Claims** and click **Next**
5. Give the rule a name (**Roost Claims**) and select **Active Directory** as the attribute store.
6. Now configure the below claims (**<span data-highlighted="true" data-vc="highlighted-text">LDAP</span> Attribute =&gt; Outgoing Claim Type**):

1. E-Mail-Addresses =&gt; E-Mail Address
2. Given-Name =&gt; Given Name
3. Surname =&gt; Surname
4. SAM-Account-Name =&gt; Windows Account Name
5. User-Principal-Name =&gt; UPN

1. Click **Finish** to save the claims
2. You should now see the rule added. Click **OK** a couple of times to save the settings.

1. Now the setup is complete. We set these 3 values as environment variables:

1. `AZURE_ADFS_CLIENT_ISSUER` - Domain of <span data-highlighted="true" data-vc="highlighted-text">ADFS</span> Server ([https://<span data-highlighted="true" data-vc="highlighted-text">adfs</span>.contoso.com](https://adfs.contoso.com/ "https://adfs.contoso.com/"))
2. `AZURE_ADFS_CLIENT_ID` - Client Identifier of server application
3. `AZURE_ADFS_CLIENT_SECRET` - Client Secret we copied to clipboard

If don’t want to use Client Secret, then Add an Native Application and pass `AZURE_ADFS_CLIENT_SECRET` variable as empty

# 3. Database Setup

Roost stores the status of the GPT workflow and other relevant information in Database. Roost supports MySQL, Postgres and Amazon Aurora DB. Any one database is needed for RoostGPT to work.

Below are the steps to setup an RDS in AWS

### Amazon Aurora (MySQL Compatible) OR MySQL

1. Select RDS
2. Choose Create Database
3. Select “Easy Create” for “Amazon Aurora with MYSQL compatibility" or "MySQL"
4. Modify the RDS Security Group to allow TCP port 3306 access to the Control plane Instance security group only
5. Make a note of the writer instance database end-point, user, and password (It is needed later in the config below)

Create a new user with read-write privileges and avoid using an admin login.

```
# Sample command to create a user using MySQL CLI 
# Provide password on prompt 

mysql -h <SQL Host URL> -u <root|master|admin> -p
```

```
CREATE USER 'Roost'@'%' identified WITH mysql_native_password by 'Roost#123'; 
CREATE DATABASE roostio;
GRANT ALL on roostio.* to 'Roost'@'%';

# Execute the Roost Schema file, if available
\. /var/tmp/Roost/db/roost.sql
```

### Amazon Aurora (PostgreSQL Compatible) OR PostgreSQL

1. Select RDS
2. Choose Create Database
3. Select “Easy Create” for “Amazon Aurora with PostgreSQL compatibility" or "PostgreSQL"
4. Modify the RDS Security Group to allow TCP port 5432 access to the Control plane Instance security group only
5. Make a note of the writer instance database end-point, user, and password (It is needed later in the config below)
6. Create a new user with read-write privileges and avoid using an admin login.

```
psql "host=<PG Host URL> user=<admin> dbname=postgres port=5432 sslmode=require"
```

```

CREATE DATABASE roostio;                                  -- creates app database [5]
CREATE USER roost WITH PASSWORD 'Roost#123';              -- creates login role [3]
GRANT ALL PRIVILEGES ON DATABASE roostio TO roost;        -- DB-level grant [4]

-- Connect to the new DB (reconnect as admin or roost), then set schema privileges
\c roostio                                        
GRANT USAGE ON SCHEMA public TO roost;                   
GRANT ALL ON ALL TABLES IN SCHEMA public TO roost;     
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO roost;   
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
  GRANT ALL ON TABLES TO roost;                       
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
  GRANT USAGE ON SEQUENCES TO roost;                   

-- Execute the Roost Schema file, if available
\i /var/tmp/Roost/db/roost.sql  
```

# 4. Terraform variables

Please follow the below steps to modify terraform files to incorporate the

- Copy `terraform.tfvars.original` as `terraform.tfvars`
- Fill in the below details (*sample values are already provided*)   
    ```
    enterprise_dns = "subdomain.domain.com"
    admin_email = "comma separated list of emails"
    enterprise_email_domain = "email-domain.com"
    company = ""
    license_key = ""
    roost_jwt_token = "32-character-secure-long-secret"
    roost_version = "v1.1.17"
    
    az1_suffix = "b"
    az2_suffix = "c"
    certificate_arn = "arn:aws:acm:region:account:certificate/cert-id"
    ec2_ami = "ami-023a307f3d27ea427"
    region = "region"
    ip_block_vpc="172.32.255.192"
    route53_hosted_zone_id = ""
    key_pair = "roost-ssh"
    
    azure_tenant_id = ""
    azure_client_id = ""
    azure_client_secret = ""
    okta_client_id = "your client id"
    okta_client_secret = "your client secret"
    okta_issuer = "https://account.okta.com/oauth2/default"
    
    is_own_mysql = false
    mysql_db_name = "roostio"
    mysql_host = "mysqldb_host_url"
    mysql_password = "Roost#123"
    mysql_port = 3306
    mysql_root_password = "Admin#123"
    mysql_username = "Roost"
    ```

#### Terraform Variable Definitions

<table border="1" id="bkmrk-field-values-descrip" style="border-collapse: collapse; width: 100%; height: 1567.2px;"><colgroup><col style="width: 33.3731%;"></col><col style="width: 51.8254%;"></col><col style="width: 14.9207%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">**Field**

</td><td class="align-center" style="height: 29.7969px;">**Values**</td><td class="align-center" style="height: 29.7969px;">**Description**</td></tr><tr style="height: 29.7969px;"><td style="width: 496pt; height: 29.7969px;">roost\_version</td><td style="height: 29.7969px;"><span class="font7">"v1.1.17"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="width: 496pt; height: 29.7969px;">license\_key</td><td style="height: 29.7969px;"><span class="font7">  
</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px; width: 496pt;" width="661">prefix</td><td style="height: 29.7969px;"><span class="font7">"terraform-gpt"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">region</td><td style="height: 29.7969px;"><span class="font7">"us-west-1"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">az1\_suffix</td><td style="height: 29.7969px;"><span class="font7">"b"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">az2\_suffix </td><td style="height: 29.7969px;"><span class="font7">"c"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">deletion\_protection</td><td style="height: 29.7969px;"><span class="font8">false</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">route53\_hosted\_zone\_id </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 32.5938px;"><td class="xl65" height="21" style="height: 32.5938px;">enterprise\_dns </td><td style="height: 32.5938px;"><span class="font7">"roostgpt.example.com"</span></td><td style="height: 32.5938px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">enterprise\_ssl\_certificate\_path</td><td style="height: 29.7969px;"><span class="font7">"/var/tmp/Roost/certs/server.cer"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">enterprise\_ssl\_certificate\_key\_path</td><td style="height: 29.7969px;"><span class="font7">"/var/tmp/Roost/certs/server.key"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">certificate\_arn</td><td style="height: 29.7969px;"><span class="font7">""</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">ec2\_ami </td><td style="height: 29.7969px;"><span class="font7">"ami-03df6dea56f8aa618"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">key\_pair</td><td style="height: 29.7969px;"><span class="font7">"roost-gpt-keypair"</span></td><td style="height: 29.7969px;"> </td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">generate\_key\_pair </td><td style="height: 29.7969px;"><span class="font9">true</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">device\_name </td><td style="height: 29.7969px;"><span class="font7">"sdh"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">ip\_block\_vpc </td><td style="height: 29.7969px;"><span class="font7">"172.32.255.192"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">instance\_type\_controlplane</td><td style="height: 29.7969px;"><span class="font7">"c5a.2xlarge"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 32.5938px;"><td class="xl65" height="21" style="height: 32.5938px;">instance\_type\_jumphost </td><td style="height: 32.5938px;"><span class="font7">"t3.micro"</span></td><td style="height: 32.5938px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">disk\_roostgpt</td><td style="height: 29.7969px;"><span class="font7">150</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">disk\_jumphost</td><td style="height: 29.7969px;"><span class="font7">150</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">disk\_controlplane</td><td style="height: 29.7969px;"><span class="font7">150</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">google\_client\_id </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">google\_client\_secret </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">github\_client\_id </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">github\_client\_secret </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">linkedin\_client\_id</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">linkedin\_client\_secret</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">azure\_tenant\_id</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">azure\_client\_id</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">azure\_client\_secret</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">okta\_client\_id </td><td style="height: 29.7969px;"><span class="font7">"0oa4bweaxcqn2sfTu5d7"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 32.5938px;"><td class="xl65" height="21" style="height: 32.5938px;">okta\_client\_secret</td><td style="height: 32.5938px;"><span class="font7">"D5oRtWXUWcl9gp1312dVtuSoumU4vrECO4wSsqAO"</span></td><td style="height: 32.5938px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">okta\_issuer </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">roost\_jwt\_token</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">company </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 38.375px;"><td class="xl65" height="21" style="height: 38.375px;">company\_logo</td><td style="height: 38.375px;"><span class="font7">"https://roost.ai/hubfs/logos/Roost.ai-logo-gold.svg"</span></td><td style="height: 38.375px;">  
</td></tr><tr style="height: 30.5938px;"><td class="xl65" height="21" style="height: 30.5938px;">enterprise\_email\_domain </td><td style="height: 30.5938px;"><span class="font7">"example.com"</span></td><td style="height: 30.5938px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">admin\_email </td><td style="height: 29.7969px;"><span class="font7">"admin@email"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">admin\_email\_pass</td><td style="height: 29.7969px;"><span class="font7">""</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">senders\_email </td><td style="height: 29.7969px;"><span class="font7">"sender@email"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">is\_own\_mysql </td><td style="height: 29.7969px;"><span class="font8">false</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">db\_type</td><td style="height: 29.7969px;"><span class="font7">"mysql"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">mysql\_host </td><td style="height: 29.7969px;"><span class="font7">"mysqldb\_host\_url"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">mysql\_password </td><td style="height: 29.7969px;"><span class="font7">"Roost#123"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">mysql\_username </td><td style="height: 29.7969px;"><span class="font7">"Roost"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">mysql\_port </td><td style="height: 29.7969px;"><span class="font9">3306</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">mysql\_db\_name </td><td style="height: 29.7969px;"><span class="font7">"roostio"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">mysql\_root\_password </td><td style="height: 29.7969px;"><span class="font7">"Admin#123"</span></td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">senders\_email\_pass </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td class="xl65" height="21" style="height: 29.7969px;">email\_smtp\_host </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr></tbody></table>

# 5. Upgrading/Maintaining RoostGPT Control-plane

There are multiple options available to refresh or upgrade the RoostGPT stack. The infrastructure engineer can use either of these approaches.

##### a. Using Terraform Script to upgrade RoostGPT version

Update Terraform Variables in ["terraform.tfvars"](https://docs.roost.ai/topics/roostgpt/page/4-terraform-variables) to reflect the appropriate Roost Version

<table border="1" id="bkmrk-field-values-roost_v" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50.0596%;"></col><col style="width: 50.0596%;"></col></colgroup><tbody><tr><td class="align-center">**Field**

</td><td class="align-center">**Values**</td></tr><tr><td>roost\_version

</td><td>v1.1.17</td></tr></tbody></table>

Run below commands:

```bash
terraform apply
```

##### b. Using Terraform Script to refresh control-plane (without any config change)

Run below commands

```bash
terraform apply --replace="null_resource.provision-controlplane-system" --replace="null_resource.provision-roostgpt-server" --replace="null_resource.run-controlplane-services"
```

##### c. Using SSH to control-plane instance

RoostGPT control-plane runs a docker [compose script ](https://docs.roost.ai/topics/trying-roostgpt/page/docker-compose)and the entire offering can be updated using the below given steps.

- SSH Connect to your infrastructure bastion instance as ubuntu user
- Execute the below snippet with the appropriate Roost Version (after replacing v1.1.17)

```bash
ssh cp "ROOST_VER='v1.1.17' /var/tmp/Roost/bin/roost-enterprise.sh -c /var/tmp/Roost/config.json -i roostai"
```

# RoostGPT Command Line Interface (CLI)

Execute RoostGPT from your system as a local binary. The RoostGPT binary allows for unmatched flexibility during test generation, by allowing you to trigger test generation both locally and through git through the use of one simple .env file.Executable is available for MacOS, Windows and Linux. RoostGPT binary is available at https://github.com/roost-io/roost-support/releases

# Download instructions

##### **For Windows**

Download the roostgpt-win.exe from [https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostgpt-win.exe](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostgpt-win.exe)

Add the "roostgpt-win.exe" binary to your PATH environment variable


##### **For Ubuntu and MacOS**

```bash
curl https://raw.githubusercontent.com/roost-io/roost-support/master/roostgpt.sh | sudo bash -
```

# CLI Commands

`roostgpt ` (for mac) &amp; `./roostGPT-win.exe `(for windows)

This command is used to run the RoostGPT CLI on your operating system.

- `-h, --help`: Displays the help message that provides information about the available options and usage.
- `roostgpt version update`: Update roostgpt version.
- `roostgpt config create`: Creates roostgpt configuration file. The configuration file contains environment variables used by RoostGPT application.  
    
    - `--output-dir, -o <path>`: Creates a configuration file in a specific directory. The configuration file contains environment variables used by the RoostGPT application. Default path is pwd.
    - `--name <name>`: Creates the configuration file with specific name. Default name is default.env.

- `roostgpt config update`: Updates the roostgpt configuration file.
    
    
    - `--config, -c <path>`: Specifies the location of the environment configuration file. The configuration file contains environment variables used by the RoostGPT application.
    - `--name <name>`: loads pwd/$name.env. It is ignored if the --file is provided.

- `roostgpt test create`: Triggers the test generation.
    
    
    - `--config,-c <path>`: Path to the configuration file if provided, Default value is pwd/default.env.
    - `--docker,-d`: Generate tests in a docker environment, see [supported features](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features) to see what tool/language versions are supported.
    - `--verbose,-v`: Enable verbose logging(Debug mode).
    - <span class="s1">`--interactive, -i`: Enable interactive mode.  
        </span>
- `roostgpt test improve`: Improve the selected test based on user feedback. 
    - `--docker,-d`: Improve tests in a docker environment, see [supported features](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features) to see what tool/language versions are supported.
    - `--verbose,-v`: Enable verbose logging(Debug mode).
    - <span class="s1">`--interactive, -i`: Enable interactive mode.  
          
        </span>
- `roostgpt test retrigger`: Re-trigger the chosen test from where it left off during its last execution.  
    
    - `--docker,-d`: Re-trigger tests in a docker environment, see [supported features](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features) to see what tool/language versions are supported.
    - `--verbose,-v`: Enable verbose logging(Debug mode).
    - <span class="s1">`--interactive, -i`: Enable interactive mode.</span>
- <span class="s1">roostgpt test support :<span class="Apple-converted-space"> </span>Involve RoostGPT support to improve the selected test.</span>
    
    
    - <span class="s1">`--verbose,-v`: Enable verbose logging(Debug mode).  
          
        </span>
- <span class="s1">roostgpt test execute : Execute the selected test  
    </span>
    
    
    - `--docker,-d`: Re-trigger tests in a docker environment, see [supported features](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features) to see what tool/language versions are supported.
    - `--verbose,-v`: Enable verbose logging(Debug mode).
    - <span class="s1">`--interactive, -i`: Enable interactive mode.</span><span class="s1">  
        </span>
    
    <span class="s1">  
    </span>
- <span class="s1">`roostgpt test view`: View all recent test plans and their triggers  
    </span>
- `roostgpt analysis`: Analyse the existing tests and scenarios and generate a report.
    
    
    - `--config,-c <path>`: Path to the configuration file if provided, Default value is pwd/default.env.
    - `--docker,-d`: Re-trigger tests in a docker environment, see [supported features](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features) to see what tool/language.
    - `--verbose,-v`: Enable verbose logging(Debug mode).

# Instructions for creating .env file

**An easy way to download the .env file is to use [https://app.roost.ai/gptCLIForm](https://app.roost.ai/gptCLIForm)**

The .env file should be in the same folder path as RoostGPT binary.  
Here is what the content of your .env file will look like:

```
# GIT env vars
GIT_TYPE=github                                  # Default is github; Supports [github, gitlab, azure, bitbucket, local]
HOSTED_TYPE=cloud                                # Default is cloud; Supports [cloud, hosted]
GIT_HOSTED_URL=                                  # Required if HOSTED_TYPE=hosted
USE_SSH=false                                    # Optional; Default is false; Supports [true, false]; SSH based auth for Git
LOCAL_PROJECT_PATH=                              # Required if GIT_TYPE is local, Path to your workspace.
SOURCE_GIT_CLONE_URL=                            # Optional; the source repo clone URL
SOURCE_GIT_TOKEN=                                # Required
SOURCE_OWNER_NAME=                               # Required
SOURCE_REPO_NAME=                                # Required
SOURCE_REPO_ID=                                  # Required for GIT_TYPE=gitlab
SOURCE_PROJECT_NAME=                             # Required for GIT_TYPE=azure
SOURCE_PROJECT_ID=                               # Required for GIT_TYPE=bitbucket
SOURCE_BASE_BRANCH=                              # Required
SOURCE_RELATIVE_DIRECTORY=                       # Optional; the relative path of the repository
SAME_TARGET_DETAIL=true                          # Optional; Default true, Supports [true, false]
DESTINATION_GIT_CLONE_URL=                       # Optional; the destination repo clone URL
DESTINATION_GIT_TOKEN=                           # Required if SAME_TARGET_DETAIL=false
DESTINATION_OWNER_NAME=                          # Required if SAME_TARGET_DETAIL=false
DESTINATION_REPO_NAME=                           # Required if SAME_TARGET_DETAIL=false
DESTINATION_REPO_ID=                             # Required if SAME_TARGET_DETAIL=false and GIT_TYPE=gitlab
DESTINATION_PROJECT_NAME=                        # Required for GIT_TYPE=azure
DESTINATION_PROJECT_ID=                          # Required if SAME_TARGET_DETAIL=false and GIT_TYPE=bitbucket
DESTINATION_BASE_BRANCH=                         # Required if SAME_TARGET_DETAIL=false
ENABLE_SECRET_SCANNING_BYPASS=                    # Optional; Default is true; Supports [true, false]

# Open AI env vars
OPENAI_API_MODEL=gpt-4                           # Optional; Default is gpt-4
OPENAI_BASE_URL=                                  # Optional; Default is "https://api.openai.com/v1"
OPENAI_API_KEY=                                  # Required if AI_TYPE=openai

# Vertex AI env vars
VERTEX_FINE_TUNE=false                           # Optional; Default is false, Supports [true, false]
VERTEX_CREDENTIAL_TYPE=                          # Required if AI_TYPE=vertexai; Supports [file, token]
VERTEX_PROJECT_ID=                               # Required if AI_TYPE=vertexai
VERTEX_REGION=                                   # Required if AI_TYPE=vertexai and VERTEX_FINE_TUNE=true
VERTEX_BEARER_TOKEN=                             # Required if AI_TYPE=vertexai and VERTEX_CREDENTIAL_TYPE=token
VERTEX_MODEL=                                    # Required if AI_TYPE=vertexai; Supports [text-bison, code-bison, codechat-bison, text-bison-32k, code-bison-32k, codechat-bison-32k, gemini-pro]
VERTEX_SERVICE_ACCOUNT_KEY=                      # Required if AI_TYPE=vertexai and VERTEX_CREDENTIAL_TYPE=file; path to the service account key file

# Azure Open AI env vars
AZURE_OPENAI_ENDPOINT=                           # Required if AI_TYPE=azure_open_ai
AZURE_DEPLOYMENT_NAME=                           # Required if AI_TYPE=azure_open_ai
AZURE_OPENAI_KEY=                                # Required if AI_TYPE=azure_open_ai
AZURE_OPENAI_VERSION=2024-02-15-preview          # Optional Default is 2024-02-15-preview
AZURE_INFERENCE_AI=                              # Optional; Default is false; Supports [true, false]

# Open source env vars
OPEN_SOURCE_MODEL_ENDPOINT=                      # Required if AI_TYPE=open_source_ai
OPEN_SOURCE_MODEL=                               # Optional; Supports [meta-llama/Llama-2-13b-chat, HuggingFaceH4/starchat-beta]

# Sagemaker model env vars
SAGEMAKER_MODEL_ENDPOINT=                        # Required if AI_TYPE=sagemake_model

# Claude AI env vars
CLAUDE_AI_MODEL=                                 # Required if AI_TYPE=claude_ai
CLAUDE_AI_API_KEY=                               # Required if AI_TYPE=claude_ai

# DBRX AI env vars
DBRX_MODEL_ENDPOINT=                             # Required if AI_TYPE=dbrx
DBRX_AUTH_TOKEN=                                 # Required if AI_TYPE=dbrx
DBRX_MODEL_NAME=                                 # Required if AI_TYPE=dbrx

# AWS Bedrock env vars
AWS_BEDROCK_MODEL=                               # Required if AI_TYPE=AWS_BEDROCK
AWS_DEFAULT_REGION=                              # Required if AI_TYPE=AWS_BEDROCK
AWS_ACCESS_KEY_ID=                               # Optional if AI_TYPE=AWS_BEDROCK
AWS_SECRET_ACCESS_KEY=                           # Optional if AI_TYPE=AWS_BEDROCK
AWS_SESSION_TOKEN=                               # Optional if AI_TYPE=AWS_BEDROCK

# Advanced AI env vars
AI_TEMPERATURE=0.2                               # Optional; Default value is 0.2
USE_ASSISTANT=false                              # Optional; Use Assistant feature in openai. Default:false

# Jira board env vars
JIRA_HOST_NAME=                                  # Required if TEST_TYPE=functional and BOARD_TYPE=jira
JIRA_EMAIL=                                      # Required if TEST_TYPE=functional and BOARD_TYPE=jira
JIRA_TOKEN=                                      # Required if TEST_TYPE=functional and BOARD_TYPE=jira
JIRA_ID=                                         # Optional if TEST_TYPE=functional and BOARD_TYPE=jira

# Azure board env vars
AZURE_ORG=                                       # Required if TEST_TYPE=functional and BOARD_TYPE=azure
AZURE_PROJECT=                                   # Required if TEST_TYPE=functional and BOARD_TYPE=azure
AZURE_TOKEN=                                     # Required if TEST_TYPE=functional and BOARD_TYPE=azure
AZURE_WORK_ITEM_ID=                              # Optional if TEST_TYPE=functional and BOARD_TYPE=azure

# Advanced Jira/Azure board env vars
CREATE_API_SPEC=                                 # Optional; Used for TEST_TYPE=functional
CREATE_EXCEL=                                    # Optional; Default is false; Supports [true, false]
TICKET_INPUT_TYPE=                               # Optional; Default is id; Supports [id, file]
TICKET_FILES=                                    # Required if TICKET_INPUT_TYPE is file, List of comma separated files

# Log env vars
LOG_SOURCE=elks                                  # Optional; Default is elks
LOG_SOURCE_PATH=                                 # Optional; the log file path
LOG_FILE_ENCODING=                               # Optional; the log file encodeing; Default is utf-8
LOG_ELASTICSEARCH_URL=                           # Optional; the Elastic search URL
LOG_ELASTICSEARCH_USER=                          # Optional; the Elastic search user name
LOG_ELASTICSEARCH_TOKEN=                         # Optional; the Elastic search token
LOG_ELASTICSEARCH_API_KEY=                       # Optional; the Elastic search api key

# Behavioural test cases env vars
BEHAVIORAL_TEST_TYPE=                            # Optional; Supports [gherkin]
BEHAVIORAL_TEST_SOURCE=                          # Optional; Supports [file, gitpath, url]
BEHAVIORAL_TEST_FILE_PATH=                       # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath.
BEHAVIORAL_TEST_URL=                             # Optional; URL of the source file if source is url

# API Spec env vars
API_SPEC_TYPE=                                   # Optional; Supports [swagger, postman, raml]
API_SPEC_SOURCE=                                 # Optional; Supports [file, gitpath, url]
API_SPEC_FILE_PATH=                              # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath.
API_SPEC_URL=                                    # Optional; URL of the source file if source is url
API_SPEC_ALIAS=

# Proto Spec env cars
PROTO_SPEC_SOURCE=                               # Optional; Supports [file, gitpath, url, gitrepo]
PROTO_SPEC_FILE_PATH=                            # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath
PROTO_SPEC_URL=                                  # Optional; URL of the source file if source is url

PROTO_SPEC_GIT_REPO_URL=                         # Optional; the proto repo clone URL
PROTO_SPEC_GIT_BRANCH=                           # Required: branch of git repo of proto file
PROTO_SPEC_REPO_NAME=                            # Required; Repo name of proto file
PROTO_SPEC_REPO_ID=                              # Required if GIT_TYPE=gitlab
PROTO_SPEC_PROJECT_NAME=                         # Required for GIT_TYPE=azure
PROTO_SPEC_PROJECT_ID=                           # Required for GIT_TYPE=bitbucket

API_TEST_SERVER_CONFIG=                          # Optional; The api server config

# Cypress test env vars
SCREENSHOTS_SOURCE=                              # Optional; Used for cypress test. Supports [file, gitpath, url]
SCREENSHOTS_URL=                                 # Optional; URL of the source file if source is url
SCREENSHOTS_FILE_PATH=                           # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath

HTTP_VERBS_FOR_TESTING=get,post,put,patch,delete # Optional; Default is "get,post,put,patch,delete", Supports all the combinations of http verbs. The specific http methods to be tested for all APIs. Enter "," seperated values here.
REGEX_HTTP_ENDPOINTS_FOR_TESTING=                # Optional; Regex string that matches to specific endpoints that needs to be tested. If empty, all the endpoints will be tested.

# Application test env vars
APPLICATION_ENTRYPOINT=                          # Required; if you need to generate application tests along with unit tests. This feature is supported only for GPT Turbo models. Use a relative path from the project root.

# License env vars
ROOST_DOMAIN=app.roost.ai                        # Optional; Default is app.roost.ai
ROOST_TOKEN=                                     # Optional; the Roost token or license filepath, default $HOME/.roost/license.ral
TELEMETRY=true                                   # Optional; Default is true, Supports [true, false], send telemetry data to roost, no private information is shared.

# Additional env vars
TEST_NAME=roost-test                             # Optional; Default is roost-test
ROOST_DIR=/var/tmp/Roost/RoostGPT                # Optional; Default is /var/tmp/Roost/RoostGPT
LANGUAGE=java                                    # Optional; Default is java; Supports [java, go, python, csharp, nodejs, cpp]
AI_TYPE=openai                                   # Optional; Default is openai; Supports [openai, vertexai, azure_open_ai, open_source_ai, sagemaker_model, claude_ai, dbrx, bedrock_ai, deepseek_ai]
JAVA_BUILD_TOOL=maven                            # Optional; Default is maven; Supports [maven, gradle]
PACKAGES_TO_SCAN=*                               # Optional; Default is "*"; used for LANGUAGE=java, for generating tests for specific packages; Enter comma seperated values. E.g. "com.demo.sample,"com.example.products"
ITERATION=1                                      # Optional; Set VERIFY_TEST=true to enable iteration; Default value of ITERATION is 1
TIMEOUT=1                                        # Optional; Default is 1 hour
ROOST_USER_INPUT=                                # Optional; The user input will be used to generate tests.
TEST_TYPE=unit                                   # Optional; Default is unit Supports [unit, functional, artillery, integration, api-spec-test, ui-test, functional-source]
BOARD_TYPE=jira                                  # Optional; Default is jira; Supports [jira, azure, none]
MAX_DEPTH=-1                                     # Optional; Default is -1; if MAX_DEPTH is -1, it will traverse all the sub directories else the maximum depth directories to look for
TEST_FRAMEWORK=                                  # Optional; Default is "pytest" for Python, "gotest" for Golang, "JUnit4" for Java, "nunit" for CSharp, "jest" for Node.js, "postman" for Postman test-script. Supports [pytest, unittest] for Python, [gotest] for Golang, [JUnit4, JUnit5] for Java, [nunit] for Csharp, [jest] for Node.js, [postman, artillery, rest-assured, karate, playwright] for [test_type: api-spec-test]
FUNCTIONS_TO_TEST=                               # Optional; List of function names to be tested, separated by comma. Name to be specified as module.[class.]method OR module.function
VERIFY_TEST=false                                # Optional; Default is false, Supports [true, false]
VULNERABILITY_GEN=false                          # Optional; Default is false, Supports [true, false]
CUSTOM_TAGS=                                     # Optional; The tags to be attached to test code, so that the test's can run based on tags
CONSIDER_EXISTING_TEST=false                     # Optional; Default is false, Supports [true, false], used for Java, python, Golang unit test generation, It scans your repository to identify any existing tests for the specified function. If tests are found, it incorporates them into its consideration and generates additional test cases as needed
CREATE_UNIQUE_BRANCH_FOR_REPORT=                 # Optional; Default is false; Supports [true, false]
ONE_TEST_FILE_PER_SOURCEFILE=                    # Optional; valid for LANGUAGE=go , if user want to generate a single test file per source file
GRADING_NOTES=
USER_SCENARIOS=
USE_CACHE=

# UI Test vars
BROWSER_USE_HEADLESS=true                        # Optional; Default is false; Supports [true, false]
URLS_TO_TEST=                                    # Required if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"

# User can provide additional env var starting with "UI_" prefix
UI_LOGIN_TYPE=                                   # Optional; use only if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"
UI_SITE_USERNAME=                                # Optional; use only if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"
UI_SITE_PASSWORD=                                # Optional; use only if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"                                       # 

# Language version env vars, Used when RoostGPT is run in docker mode, visit https://docs.roost.ai/topics/roostgpt/page/cli to check the supported language versions
JAVA_VERSION=17                                  # Optional; Default is 17, Used for TEST_FRAMEWORK "JUnit4, "JUnit5", "karate", "rest-assured"
MAVEN_VERSION=3.8.6                              # Optional; Default is 3.8.6, Used for TEST_FRAMEWORK "JUnit4, "JUnit5", "karate", "rest-assured"
GRADLE_VERSION=8.6                               # Optional; Default is 8.6, Used for TEST_FRAMEWORK "JUnit4, "JUnit5", "karate", "rest-assured"
GO_VERSION=1.19.9                                # Optional; Default is 1.19.9, Used for TEST_FRAMEWORK "gotest"
PYTHON_VERSION=3                                 # Optional; Default is 3, Used for TEST_FRAMEWORK "pytest", "unittest"
DOTNET_VERSION=8                                 # Optional; Default is 8, Used for TEST_FRAMEWORK "nunit"
NODE_VERSION=18.18.0                             # Optional; Default is 18.18.0, Used for TEST_FRAMEWORK "artillery", "postman", "rest-assured", "karate", "jest", "mocha"
KARATE_VERSION=1.5.1                             # Optional; Default is 1.5.1, Used for TEST_FRAMEWORK "karate",
```

**Note:** If a value in your .env file contains the '#' character, enclose the entire value in quotes. This prevents the '#' from being interpreted as the start of a comment.  
Example: SECRET\_KEY="my#secret#key"

# Details about env variables

**Here's a description of each variable:**

##### **\# Git env vars**

- **GIT\_TYPE**  
    Description: Specifies the type of Git repository.  
    Default Value: "github"  
    Supported Values: "github", "gitlab", "azure", "bitbucket", "local"  
    Optional/Required: Optional
- **HOSTED\_TYPE**  
    Description: Indicates where the Git platform is accessible.  
    Default Value: "cloud"  
    Supported Values: "cloud", "hosted"  
    Optional/Required: Optional
- **GIT\_HOSTED\_URL**  
    Description: The URL of the hosted Git platform.  
    Optional/Required: Required if HOSTED\_TYPE is "hosted"
- **USE\_SSH**  
    Description: Specifies whether to use SSH-based authentication for Git.  
    Default Value: "false"  
    Supported Values: "true", "false"  
    Optional/Required: Optional
- **LOCAL\_PROJECT\_PATH**  
    Description: Path to your workspace.  
    Optional/Required: Required if GIT\_TYPE is "local"
- **SOURCE\_GIT\_CLONE\_URL**  
    Description: Clone URL for the source repository.  
    Optional/Required: Optional
- **SOURCE\_GIT\_TOKEN**  
    Description: Token for authenticating the specific source Git repository.  
    Optional/Required: Required
- **SOURCE\_OWNER\_NAME**  
    Description: Name of the source repository owner (Git username).  
    Optional/Required: Required
- **SOURCE\_REPO\_NAME**  
    Description: Name of the source repository.  
    Optional/Required: Required
- **SOURCE\_REPO\_ID**  
    Description: ID of the source repository.  
    Optional/Required: Required if GIT\_TYPE is "gitlab"
- **SOURCE\_PROJECT\_NAME**  
    Description: Name of the source project.  
    Optional/Required: Required if GIT\_TYPE is "azure"
- **SOURCE\_PROJECT\_ID**  
    Description: ID of the source project.  
    Optional/Required: Required if GIT\_TYPE is "bitbucket"
- **SOURCE\_BASE\_BRANCH**  
    Description: Base branch to be tested in the source repository.  
    Optional/Required: Required
- **SOURCE\_RELATIVE\_DIRECTORY**  
    Description: Relative directory path within the source repository.  
    Optional/Required: Optional
- **SAME\_TARGET\_DETAIL**  
    Description: Indicates if the destination Git details are the same as the source Git details.  
    Default Value: "true"  
    Supported Values: "true", "false"  
    Optional/Required: Optional
- **DESTINATION\_GIT\_CLONE\_URL**  
    Description: Clone URL for the destination repository.  
    Optional/Required: Optional
- **DESTINATION\_GIT\_TOKEN**  
    Description: Token for authenticating the specific destination Git repository.  
    Optional/Required: Required if SAME\_TARGET\_DETAIL is "false"
- **DESTINATION\_OWNER\_NAME**  
    Description: Name of the destination repository owner (Git username).  
    Optional/Required: Required if SAME\_TARGET\_DETAIL is "false"
- **DESTINATION\_REPO\_NAME**  
    Description: Name of the destination repository.  
    Optional/Required: Required if SAME\_TARGET\_DETAIL is "false"
- **DESTINATION\_REPO\_ID**  
    Description: ID of the destination repository.  
    Optional/Required: Required if SAME\_TARGET\_DETAIL is "false" and GIT\_TYPE is "gitlab"
- **DESTINATION\_PROJECT\_NAME**  
    Description: Name of the destination project.  
    Optional/Required: Required if SAME\_TARGET\_DETAIL is "false" and GIT\_TYPE is "azure"
- **DESTINATION\_PROJECT\_ID**  
    Description: ID of the destination project.  
    Optional/Required: Required if SAME\_TARGET\_DETAIL is "false" and GIT\_TYPE is "bitbucket"
- **DESTINATION\_BASE\_BRANCH**  
    Description: Base branch in which the test code is to be pushed in the destination repository.  
    Optional/Required: Required if SAME\_TARGET\_DETAIL is "false"

##### **\# Open AI env vars**

<div id="bkmrk-openai_api_modeldesc"><div>- **OPENAI\_API\_MODEL**  
    Description: Specifies the type of the OpenAI API model to be used.  
    Default Value: "gpt-4"  
    Supported Values: "gpt-4", "gpt-3.5-turbo", etc. (Availability of models depends on the OPENAI\_API\_KEY).  
    Optional/Required: Optional

</div><div>- **OPENAI\_API\_KEY**  
    Description: The API key required for accessing the OpenAI API.  
    Optional/Required: Required if AI\_TYPE is "openai"

</div></div>##### **\# AZURE Open AI env vars**

- <div><div>**AZURE\_OPENAI\_ENDPOINT**</div><div>Description: The API endpoint used to access Azure OpenAI services.</div><div>Optional/Required: Required if AI_TYPE is "azure_open_ai"</div><div>  
    </div></div>
- <div>**AZURE\_DEPLOYMENT\_NAME**<div>Description: The name of the Azure OpenAI deployment you wish to use.</div><div>Optional/Required: Required if AI_TYPE is "azure_open_ai"  
      
    </div></div>
- <div>**AZURE\_OPENAI\_KEY**<div>Description: The API key required for authenticating requests to Azure OpenAI.</div><div>Optional/Required: Required if AI_TYPE is "azure_open_ai"</div><div>  
    </div></div>
- <div>**AZURE\_OPENAI\_VERSION**<div>Description: Specifies the version of the Azure OpenAI API to be used.  
    Default Value: "2024-02-15-preview"</div><div>Optional/Required: Optional</div></div>

##### **\#Bedrock AI env vars** 

<div id="bkmrk-vertex_fine_tunedesc"><div>- **AWS\_BEDROCK\_MODEL**  
    Description: Indicates which bedrock model should be used.  
    Optional/Required: Required if AI\_TYPE is "bedrock\_ai"
- **AWS\_DEFAULT\_REGION**  
    Description: The AWS region of the model hosted  
    Optional/Required: Required if AI\_TYPE is "bedrock\_ai"

</div><div>- **AWS\_ACCESS\_KEY\_ID** Description: AWS Access Key ID Credentials  
    Optional/Required: Optional. Can be exported in the environment where Roost Binary will be running

</div><div>- **AWS\_SECRET\_ACCESS\_KEY** Description: AWS Secret Access Key ID Credentials  
    Optional/Required: Optional. Can be exported in the environment where Roost Binary will be running
- **AWS\_SESSION\_TOKEN** Description: AWS Session Token Credentials  
    Optional/Required: Optional. Can be exported in the environment where Roost Binary will be running

</div></div>##### **\# Vertex AI env vars** 

<div id="bkmrk-vertex_fine_tunedesc-1"><div>- **VERTEX\_FINE\_TUNE**  
    Description: Indicates whether fine-tuning is enabled for the model.  
    Default Value: "false"  
    Supported Values: "true", "false"
- **VERTEX\_PROJECT\_ID**  
    Description: The ID of the Vertex project you are working with.  
    Optional/Required: Required if AI\_TYPE is "vertexai"

</div><div>- **VERTEX\_REGION** Description: The region where the Vertex project is located. For example, "us-central1".  
    Optional/Required: Required if AI\_TYPE is "vertexai" and VERTEX\_FINE\_TUNE is "true"

</div><div>- **VERTEX\_BEARER\_TOKEN** Description: The bearer token used for authenticating requests to the Vertex API.  
    Optional/Required: Required if AI\_TYPE is "vertexai"

</div><div>- **VERTEX\_MODEL** Description: The name of the Vertex model to be used.  
    Supported Values: "text-bison", "code-bison"  
    Optional/Required: Required if AI\_TYPE is "vertexai"

</div></div>##### **\# Open Source AI env vars**  


- <div><div>**OPEN\_SOURCE\_MODEL\_ENDPOINT**</div><div>Description: The API endpoint used to access the Open Source AI model.</div><div>Optional/Required: Required if AI_TYPE is "open_source_ai"</div><div>  
    </div></div>
- <div>**OPEN\_SOURCE\_MODEL**<div>Description: The name of the Open Source AI model you wish to use.</div><div>Supported Values: "meta-llama/Llama-2-13b-chat", "HuggingFaceH4/starchat-beta"</div><div>Optional/Required: Optional</div></div>

##### **\# SageMaker Model env vars**

- <div><div>**SAGEMAKER\_MODEL\_ENDPOINT**</div><div>Description: The endpoint where the SageMaker model is hosted.</div><div>Optional/Required: Required if AI_TYPE is "sagemaker_model"</div></div>

##### **\# Claude AI env vars**

- <div><div>**CLAUDE\_AI\_MODEL**</div><div>Description: Specifies the type of Claude AI model to be used.</div><div>Supported Values: "claude-3-opus-20240229", "claude-3-sonnet-20240229", "claude-3-haiku-20240307"</div><div>Optional/Required: Required if AI_TYPE is "claude_ai"</div><div>  
    </div></div>
- <div>**CLAUDE\_AI\_API\_KEY**<div>Description: The API key required for accessing the Claude AI API.</div><div>Optional/Required: Required if AI_TYPE is "claude_ai"</div></div>

##### **\# DBRX AI env vars**

- <div><div>**DBRX\_MODEL\_ENDPOINT**</div><div>Description: The endpoint where the DBRX AI model is hosted.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**DBRX\_AUTH\_TOKEN**<div>Description: The authentication token required for accessing the DBRX model.</div><div>Optional/Required: Required if AI_TYPE is "dbrx"</div><div>  
    </div></div>
- <div>**DBRX\_MODEL\_NAME**<div>Description: The name of the DBRX model you wish to use.</div><div>Optional/Required: Required if AI_TYPE is "dbrx"</div></div>

##### **\# Advanced AI env vars**

- <div><div>**AI\_TEMPERATURE**</div><div>Description: Specifies the temperature setting for AI responses, which influences the creativity and variability of the test generation. A higher value results in more creative and varied outputs, while a lower value produces more deterministic responses.</div><div>Default Value: 0.6</div><div>Supported Values: Any numeric value, typically between 0.0 and 1.0.</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- **USE\_ASSISTANT**<div>Description: Indicates whether to use the Assistant feature in OpenAI.</div><div>Supported Values: "true", "false"</div><div>Optional/Required: Optional</div>

##### **\# Jira board env vars**

- <div><div>**JIRA\_EMAIL**</div><div>Description: The email address associated with your Jira account.</div><div>Optional/Required: Required if TEST_TYPE is "functional" and BOARD_TYPE is "jira"</div><div>  
    </div></div>
- <div>**JIRA\_HOST\_NAME**<div>Description: The hostname of your Jira instance (e.g., jira.company.com).</div><div>Optional/Required: Required if TEST_TYPE is "functional" and BOARD_TYPE is "jira"</div><div>  
    </div></div>
- <div>**JIRA\_PASSWORD**<div>Description: The password for your Jira account.</div><div>Optional/Required: Required if TEST_TYPE is "functional" and BOARD_TYPE is "jira"</div><div>  
    </div></div>
- <div>**JIRA\_ID**<div>Description: The Jira ID associated with your account, often used as a unique identifier.</div><div>Optional/Required: Required if TEST_TYPE is "functional" and BOARD_TYPE is "jira"</div></div>

##### **\# Azure board env vars**

- <div><div>**AZURE\_ORG**</div><div>Description: The organization associated with your Azure DevOps account.</div><div>Optional/Required: Required if TEST_TYPE is "functional" and BOARD_TYPE is "azure"</div></div>
- <div>**AZURE\_TOKEN**<div>Description: The access token for authenticating with Azure DevOps.</div><div>Optional/Required: Required if TEST_TYPE is "functional" and BOARD_TYPE is "azure"</div><div>  
    </div></div>
- <div>**AZURE\_PROJECT**<div>Description: The name of the Azure DevOps project.</div><div>Optional/Required: Required if TEST_TYPE is "functional" and BOARD_TYPE is "azure"</div></div><div>  
    </div>
- <div><div>**AZURE\_WORK\_ITEM\_ID**</div><div>Description: The ID associated with the relevant work item in Azure DevOps.</div></div>


##### **\# Advanced Jira/Azure board env vars**

- <div><div>**CREATE\_API\_SPEC**</div><div>Description: Used for functional test type</div><div>Optional/Required: Required if TEST_TYPE=functional</div></div>

##### **\# Log env vars**

- <div><div>**LOG\_SOURCE**</div><div>Description: Origin from where the logs are generated.</div><div>Default Value: "elks"</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**LOG\_SOURCE\_PATH**<div>Description: Location where the log files are stored.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**LOG\_ELASTICSEARCH\_URL**<div>Description: The URL for the Elasticsearch instance.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**LOG\_ELASTICSEARCH\_USER**<div>Description: Username for accessing Elasticsearch resources.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**LOG\_ELASTICSEARCH\_TOKEN**<div>Description: Authentication token used for accessing Elasticsearch resources.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**LOG\_ELASTICSEARCH\_API\_KEY**<div>Description: API key used to authenticate and authorize access to Elasticsearch APIs.</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- <div><div>**LOG\_FILE\_ENCODING**</div><div>Description: Used to encode the log file, default is utf-8, supports [utf-8, utf-16le].</div><div>Optional/Required: Optional</div></div>

##### **\# Behavioural Test cases env vars** 

- <div><div>**BEHAVIORAL\_TEST\_TYPE**</div><div>Description: Specifies the type of behavioral tests to be used.</div><div>Supported Values: "gherkin"</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**BEHAVIORAL\_TEST\_SOURCE**<div>Description: Specifies the source location for the behavioral test data.</div><div>Supported Values: "file", "gitpath", "url"</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**BEHAVIORAL\_TEST\_FILE\_PATH**<div>Description: Path to the source file if the BEHAVIORAL_TEST_SOURCE is "file" or "gitpath". For "gitpath", this should be a relative path within the repository.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**BEHAVIORAL\_TEST\_URL**<div>Description: The URL of the source file if the BEHAVIORAL_TEST_SOURCE is "url".</div><div>Optional/Required: Optional</div></div>

##### **\# API Spec env vars**

- <div><div>**API\_SPEC\_TYPE**</div><div>Description: Specifies the type of API specification to be used.</div><div>Supported Values: "Swagger", "Postman"</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**API\_SPEC\_SOURCE**<div>Description: Specifies the source location for the API specification data.</div><div>Supported Values: "file", "gitpath", "url"</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**API\_SPEC\_FILE\_PATH**<div>Description: Path to the source file if API_SPEC_SOURCE is "file" or "gitpath". For "gitpath", this should be a relative path within the repository.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**API\_SPEC\_URL**<div>Description: The URL of the source file if API_SPEC_SOURCE is "url".</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- <div><div>**API\_SPEC\_ALIAS:**</div><div>Optional/Required: Optional</div></div>

##### **\# Application test env variables**

- <div><div>**APPLICATION\_ENTRYPOINT**</div><div>Description: Specifies the relative path of the application's entry point from the project root. This is used when application test generation is required in addition to unit tests.</div><div>Supported Values: Any valid relative path to the entry point file or directory within the project. Only supported for GPT-4-turbo models.</div><div>Optional/Required: Optional</div></div>

##### **\# API test env vars**

- <div><div>**HTTP\_VERBS\_FOR\_TESTING**</div><div>Description: Specifies the HTTP methods to be tested for all APIs. This allows you to filter which HTTP verbs (methods) should be included in the tests.</div><div>Default Value: "get,post,put,patch,delete"</div><div>Supported Values: Any combination of HTTP verbs, separated by commas (e.g., "get,post,put,patch,delete").</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**REGEX\_HTTP\_ENDPOINTS\_FOR\_TESTING**<div>Description: A regular expression string used to match specific endpoints that need to be tested. If this variable is left empty, all endpoints will be included in the testing.</div><div>Supported Values: Any valid regex pattern to filter endpoints.</div><div>Optional/Required: Optional</div></div>

##### **\# License env vars**

- <div><div>**ROOST\_DOMAIN**</div><div>Description: Specifies the Roost domain to be used. This defines the base URL for RoostGPT services.</div><div>Default Value: "app.roost.ai"</div><div>Supported Values: Any valid Roost domain URL.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**ROOST\_TOKEN**<div>Description: The authentication token required for accessing RoostGPT CLI. This token is necessary for authenticating and authorizing your requests to RoostGPT.</div><div>Optional/Required: Required</div><div>  
    </div></div>
- <div>**TELEMETRY**<div>Description: Determines whether telemetry data is sent to Roost. Telemetry data helps improve the service but does not include private information.</div><div>Default Value: "true"</div><div>Supported Values: "true", "false"</div><div>Optional/Required: Optional</div></div>

##### **\# Additional vars**

- <div><div>**TEST\_NAME**</div><div>Description: The name assigned to the test.</div><div>Default Value: "roost-test"</div><div>Supported Values: Any valid string.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**ROOST\_DIR**<div>Description: The directory path where RoostGPT files and configurations are stored.</div><div>Default Value: "/var/tmp/Roost/RoostGPT"</div><div>Supported Values: Any valid directory path.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**LANGUAGE**<div>Description: The programming language of the source code to be tested.</div><div>Default Value: "java"</div><div>Supported Values: "java", "go", "python", "csharp", "node.js"</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**AI\_TYPE**<div>Description: Specifies the AI model used for generating tests.</div><div>Default Value: "openai"</div><div>Supported Values: "openai", "vertexai", "open_source_ai", "azure_open_ai", "sagemaker_model", "claude_ai", "dbrx"</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- <div><div>**JAVA\_BUILD\_TOOL**</div><div>Description: Specifies the java build tool for which to generate test.</div><div>Default Value: "maven"</div><div>Supported Values: "maven", "gradle".</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**PACKAGES\_TO\_SCAN**<div>Description: Specifies the packages to be scanned for test generation. Supports single package or comma-separated values.</div><div>Supported Values: Comma-separated list of package names (e.g., "com.example.product" or "com.example.product, com.example.controller").</div><div>Optional/Required: Required for Java</div><div>  
    </div></div>
- <div>**ITERATION**<div>Description: The number of iterations to run and improve the tests.</div><div>Default Value: "1"</div><div>Supported Values: Any positive integer.</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- **TIMEOUT**<div>Description: The duration after which test generation will automatically stop.</div><div>Default Value: "1 hour"</div><div>Supported Values: Any valid duration string (e.g., "30 minutes", "2 hours").</div><div>Optional/Required: Optional</div>
- **TEST\_TYPE**<div>Description: The type of test to generate.</div><div>Default Value: "unit"</div><div>Supported Values: "unit", "functional", "api-spec-test", "integration"</div><div>Optional/Required: Optional</div>
- **TEST\_FRAMEWORK**<div>Description: Specifies the testing framework to be used based on the programming language and test type.</div><div>Supported Values:</div><div>For Python: "pytest", "unittest"</div><div>For Golang: "gotest"</div><div>For Java: "JUnit4", "JUnit5"</div><div>For Csharp: "nunit"</div><div>For Node.js: "jest", "mocha"</div><div>For API spec tests or integration tests: "postman", "artillery", "rest-assured", "karate"</div><div>Optional/Required: Optional</div>
- <div>**TRIGGER\_ID**<div>Description: Unique identifier for triggers. Used to distinguish between multiple triggers.</div><div>Default Value: Epoch timestamp</div><div>Supported Values: Any unique string or timestamp.</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- **BOARD\_TYPE**<div>Description: Specifies the type of board to be used for tracking.</div><div>Default Value: "jira"</div><div>Supported Values: "jira", "azure", "none"</div><div>Optional/Required: Optional</div>
- <div>**MAX\_DEPTH**<div>Description: Maximum depth of directories to search for test files. If set to -1, it will traverse all subdirectories.</div><div>Supported Values: Any non-negative integer or -1.</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**FUNCTIONS\_TO\_TEST**<div>Description: List of function names to be tested, specified as module.[class.]method or module.function.</div><div>Supported Values: Comma-separated list of function names.</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- <div><div>**USE\_CACHE**</div><div><div>Description: Use local cache to generate test.(Only for Developers)</div><div>Default Value: "false"</div><div>Supported Values: "true","false".</div><div>Optional/Required: Optional</div></div><div>  
    </div></div>
- <div>**VERIFY\_TEST**<div>Description: Indicates whether to verify if the generated tests are running correctly.</div><div>Supported Values: "true", "false"</div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**VULNERABILITY\_GEN**<div>Description: Specifies whether to generate a vulnerability report based on the tests.</div><div>Supported Values: "true", "false"</div><div>Optional/Required: Optional</div></div><div>  
    </div>
- <div><div>**CONSIDER\_EXISTING\_TEST**</div></div><div>Description: Used for Java, python, Golang unit test generation, It scans your repository to identify any existing tests for the specified function. If tests are found, it incorporates them into its consideration and generates</div><div>additional test cases as needed.</div>Default Value: "true" <div>Supported Values: "true", "false"</div><div>Optional/Required: Optional</div>
- <div><div><div>**GRADING\_NOTES**</div></div></div><div>Description:Grading notes are audit criteria used to evaluate and improve AI generated response for better accuracy and effectiveness.</div>Default Value: "true" <div>Supported Values: "true", "false"</div><div>Optional/Required: Optional</div>
- <div><div><div>**CUSTOM\_TAGS**</div></div></div><div>Description:The tags to be attached to test code, so that the test's can run based on tags</div><div>Optional/Required: Optional</div>
- **ROOST\_USER\_INPUT**<div>Description: User input to be used for generating tests.</div><div>Supported Values: Any valid input string.</div><div>Optional/Required: Optional  
      
    </div>

##### **\#UI Test env vars** 

- BROWSER\_USE\_HEADLESS  
    <div>Description: To Open the Browser in headless mode when running UI test  
    Supported Values: "true","false"  
    Optional/Required: Optional</div>
- URLS\_TO\_TEST  
    Description: The URL for which RoostGPT need to generate playwright test  
    Supported Values: Any valid website url  
    Optional/Required: Required  
      
    \# User can provide additional env var starting with "UI\_" prefix like UI\_LOGIN\_TYPE,UI\_LOGIN\_EMAIL etc.

#####   


##### **\# Improve Test env vars**

- **FILE\_PATH**<div>Description: Location of the file containing the test if the IMPROVE_TEST variable is set to "true." This file will be used as a basis for improving the generated test.</div><div>Supported Values: Any valid file path.</div><div>Optional/Required: Required if IMPROVE_TEST is set to "true."</div><div>  
    </div>
- <div>**USER\_CONTENT**<div>Description: Content provided by the user to be used for improving the generated test. This content will be incorporated into the improvement process.</div><div>Supported Values: Any valid text or data provided by the user.</div><div>Optional/Required: Required if IMPROVE_TEST is set to "true."  
      
    </div></div>
- <div>**TESTSCRIPT\_ENDPOINT**<div>Description: The endpoint to be improved when the TEST_TYPE is set to "postman." This specifies which API endpoint the Postman test script will target.</div><div>Supported Values: Any valid API endpoint URL.</div><div>Optional/Required: Required if TEST_TYPE is set to "postman."</div></div>

##### **\# Language version env vars**  


- <div>**JAVA\_VERSION**</div><div>Description: Specifies the version of Java to be used when the TEST_FRAMEWORK is "JUnit4", "JUnit5", "karate", or "rest-assured".</div><div>Default Value: "17"</div><div>[Supported Values](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features)</div><div>Optional/Required: Optional</div><div>  
    </div>
- **MAVEN\_VERSION**<div>Description: Specifies the version of Maven to be used for Java projects when the TEST_FRAMEWORK is "JUnit4", "JUnit5", "karate", or "rest-assured".  
    Default Value: "3.8.6"  
    </div><div>[Supported Values](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features)</div><div>Optional/Required: Optional</div><div>  
    </div>
- **GRADLE\_VERSION**<div>Description: Specifies the version of Gradle to be used for Java projects when the TEST_FRAMEWORK is "JUnit4", "JUnit5", "karate", or "rest-assured".  
    Default Value: "8.6"  
    </div><div>[Supported Values](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features)</div><div>Optional/Required: Optional</div><div>  
    </div>
- <div>**GO\_VERSION**<div>Description: Specifies the version of Go to be used when the TEST_FRAMEWORK is "gotest".  
    Default Value: "1.19.9"  
    [Supported Values](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features)  
    </div><div>Optional/Required: Optional</div><div>  
    </div></div>
- **PYTHON\_VERSION**<div>Description: Specifies the version of Python to be used when the TEST_FRAMEWORK is "pytest" or "unittest".  
    Default Value: "3"  
    </div><div>[Supported Values](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features)</div><div>Optional/Required: Optional</div><div>  
    </div>
- <div>**DOTNET\_VERSION**<div>Description: Specifies the version of .NET to be used when the TEST_FRAMEWORK is "nunit".  
    Default Value: "8"  
    [Supported Values](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features)  
    </div><div>Optional/Required: Optional</div><div>  
    </div></div>
- <div>**NODE\_VERSION**<div>Description: Specifies the version of Node.js to be used when the TEST_FRAMEWORK is "artillery", "postman", "rest-assured", "karate", "jest", or "mocha".  
    Default Value: "18.18.0"  
    </div><div>[Supported Values](https://docs.roost.ai/topics/trying-roostgpt/page/supported-features)</div><div>Optional/Required: Optional</div></div>

# VS Code Extension

The Roost GPT VS code extension allows you to generate tests for your code using RoostGPT with just a click, straight from your VS Code workspace.

### Download:

##### [https://marketplace.visualstudio.com/items?itemName=RoostGPT.roostgpt](https://marketplace.visualstudio.com/items?itemName=RoostGPT.roostgpt)

### Installation:

To use the RoostGPT VS Code extension, you must have VS Code ready and installed in your system, as well as any dependencies that are required to run your code, as RoostGPT will often run its generated test code to improve it.

You can download and install VS Code for your Operating system [here.](https://code.visualstudio.com/download)

After VS Code is Successfully installed in your system, you can go ahead and download the Roost GPT VS Code extension from the VS Code marketplace, just simply search for Roost GPT in the extension store. Alternatively, you can download and install the VS code extension from [here.](https://marketplace.visualstudio.com/items?itemName=RoostGPT.roostgpt)

Once the extension is installed, you are ready to generate tests for your code.

### Configuration:

Once the extension has been successfully installed in your system, you can then proceed with configuring the extension to start generating tests. This involves providing information that is required for test generation.  
To configure the extension to use it, simply open the extension settings for Roost GPT, you can search for it in the extension store, or you can find it in the list of your installed extensions.

You can then set up the required values according to your workspace and needs. Following are the required fields which will be required for you to set no matter what:

### Required Fields

<div id="bkmrk-roost-token%3A-you-can">- Roost Token: you can get your roost token from my profile page in [app.roost.ai](https://app.roost.ai/ "https://app.roost.ai"). If you don't have a Roost token, you can sign up for a free trial and try out RoostGPT for free, using your organization email from [here](https://app.roost.ai/tryRoostAI "https://app.roost.ai/tryRoostAI").
- Roost Domain: Enter the Domain in which the provided roost token is active, the default value is app.roost.ai.
- Timeout: Set the timeout for test generation (in hours), default value is 1.
- Language: Select the language your workspace/source code is written in, currently supports Java, Python, Go, NodeJS, C# and C++.
- Board Type: Select the type of scrum/kanban board, Required for functional tests. set as none other test types, supports none, jira and Azure boards. default value is none.
- Iterations: Set the number of iterations for test generation, If you provide an iteration value greater than 0 then it will run the generated test cases and pass the error that occurred(if any) to the ai model then update the test case inside the same file and run again till the number of times of iteration and stop if it ran successfully in between. The default value is 1.
- Telemetry: Set as False if you do not want to send telemetry data to roost. The default value is true.
- Generative AI model: Select which model to use for test code generation, which supports OpenAI, Google Vertex, Azure Open AI, <span class="pl-token">Claude</span> <span class="pl-token">AI</span>, DeepSeek, AWS Bedrock, and DBRX Hosted Models including OpenSource Hosted Models (LLAMA2 and starchat).
- ProvideInput: Set as true if you want to provide your own input before test generation, you will be prompted for input before the test generation begins. The default value is false.
- MaxDepth: This is used to specify how deep into the workspace the extension will traverse to scan for files to generate tests for. default value is traverse to all subdirectories.
- EnvFile: This can be used to provide the path to an env file, which will provide RoostGPT with env file with user environment variables which will be taken into account in the test generation progress. You can keep this field empty.
- AI model Details:
    
    
    - If the Generative AI model is Open AI: 
        - OpenAI API Key: Provide your OpenAI API key if you plan on using an OpenAI as the generative AI model to generate your test cases.
        - OpenAI API model: Provide the AI model the provided API key has access to, supports gpt-4o, gpt-4, gpt-3.5-turbo.
    - If the Generative AI model is Google Vertex: 
        - Vertex Bearer Token: Provide your vertex Bearer Token if you plan to use Google Vertex as the generative AI model to generate your test cases.
        - Vertex Project ID: Provide the ID of your Google vertex project.
        - Vertex Region: Enter the region where your vertex region is present
        - Vertex Model: Select the Vertex model to be used for code generation; supports text-bison, code-bison, and codechat-bison. Default value is text-bison.
    - <span class="pl-token">If</span> <span class="pl-token">Generative</span> <span class="pl-token">AI</span> model is Claude AI: 
        - AI model: <span class="pl-token">Select</span> <span class="pl-token">the</span> <span class="pl-token">AI</span> <span class="pl-token">model</span> <span class="pl-token">to</span> be used from the dropdown menu.
        - <span class="pl-token">API</span> <span class="pl-token">Key</span>: <span class="pl-token">Provide</span> <span class="pl-token">your</span> Claude AI API <span class="pl-token">key</span>.
    - If the Generative AI model is Azure Open AI: 
        - API Key: Provide the API Key for your Azure Open AI model.
        - API Endpoint: Provide the API Endpoint where your Azure Open AI model is hosted.
        - Deployment Name: Enter the Deployment Name for your Azure Open AI API model.
    - If the Generative AI model is Open Source: 
        - Open Source Model Endpoint: provide the endpoint for the open source model if you plan on using one of the roost provided open source models, you need to provide it in the format 'http://MODEL\_IP:5000/generate' where MODEL\_IP is the IP address for the instance where you have the model's container running.
        - Open Source AI model: Select the AI model to be used for test generation, supports meta-llama/Llama-2-13b-chat, and HuggingFaceH4/starchat-beta. The default value is meta-llama/Llama-2-13b-chat.

</div>### Advanced Fields (optional):

- Optional fields are available to use the LLM effectively like 
    - advanced.UseAssistant can be set to True for gpt turbo models,
    - AiTemperature can be set to values other than default (0.2) to control the test quality,
- VerifyTest can be set to a boolean value True. Default value is False,
- UseDocker can be set to True to generate the tests inside a docker. This will require Docker Engine server to be accessible locally.

### Test Generation:

Once your extension configuration is complete, you can then start using the VS Code extension to generate tests for your workspace. To generate tests, simply right-click on a file in your Explorer menu and select the type of test you want to generate from the context menu that shows up. Note that each test type has some requirements to start test generation.  
The test types currently supported are as follows:

- Unit Tests.
- API Tests.
- Functional Tests.
- Integration.

## Test Requirements

Following are the Required Fields, and other instructions for test generation according to each supported test type:

- Unit Tests: To generate Unit tests, just simply select the directory your file is present in, right-click on a file and select unit test generation, and then select the test framework you want to use from the popup. It will generate unit tests for all the files present in that file's parent directory. No extra fields other than the above-mentioned required fields are needed for unit test generation. Make sure that the language set in the extension settings matches the language your source code is in.
    
    
    - <div><div>If you want the tests to be generated for only a few specified functions and not for the entire codebase, then provide the function names for which you want the tests to be generated in the FunctionsToTest input box in the advanced section of the extension settings in a comma separated fashion (e.g. Func1, Func2,...). This will ensure that tests are generated only for the specified functions.</div></div>
    - <div><div>For Java unit tests, please make sure to trigger the test execution from a valid module that contains a valid pom.xml, or generate tests for the entire project if pom.xml is present in the workspace folder.</div></div>
    - For React Unit tests, you need to use GPT-4 turbo model and set use assistant as true in the advanced section of the vs-code extension settings.
- API Tests: To generate API tests, you need to right-click on Postman collection json or swagger API spec file and then select the Generate API tests. If you choose any file other than your API spec file, the test generation will fail. Then you need to select the test framework to be used for test generation (artillery, postman, or rest-assured) from the provided popup. No extra fields other than the above-mentioned required fields are needed for API Tests. For API tests, you can also filter out which HTTP verbs(such as post, get, etc.) will be tested by changing the HttpFilters setting from the advanced section. Please note that if you select postman as the test framework you will need newman cli installed in your system in order to run generated tests from the RoostGPT extension, you can install newman cli by using the command: npm install -g newman.
    
    
    - <div><div>If you want to generate API tests for some specific HTTP verbs (get, post, put, patch, delete, etc.) then you can select which specific verbs need to be tested in the advanced section of the extension settings under the HTTP filters attribute.</div></div>
    - <div><div>If you want to generate API tests for some specific API endpoints matching a given regex pattern, you can set the regex pattern in the advanced tab of the extension settings under the HTTP endpoints for testing attribute.</div></div>
    - <span class="pl-token">For</span> <span class="pl-token">karate</span> <span class="pl-token">and</span> <span class="pl-token">rest</span>-<span class="pl-token">assured</span> <span class="pl-token">tests</span>, make sure that the Test generation is triggered from within a valid java/maven repo, i.e. put the api spec file in the java repo and put <span class="pl-token">start</span> <span class="pl-token">the</span> test generation from <span class="pl-token">there</span>.
- Integration Tests: When generating Integration tests, you need to right-click on your Postman collection json or swagger API spec file and then select the Integration Tests option. If you choose any file other than your API spec file, the test generation will fail, after selecting the option, then need to select the test framework to be used for test generation (artillery, postman, or rest-assured), then you need to select the type of your gherkin template you can either select file and browse to your gherkin template file or you can choose URL and provide the URL to your Gherkin template. No extra fields other than the above-mentioned required fields are needed for Integration Tests. Please note that if you select Postman as the test framework you will need newman cli installed in your system to run generated tests from the RoostGPT extension, you can install newman cli by using the command: npm install -g newman. <span class="pl-token">For</span> <span class="pl-token">karate</span> <span class="pl-token">and</span> <span class="pl-token">rest</span>-<span class="pl-token">assured</span> <span class="pl-token">tests</span>, make sure that the Test generation is triggered from within a valid java/maven repo, i.e. put the api spec file in the java repo and put <span class="pl-token">start</span> <span class="pl-token">the</span> test generation from <span class="pl-token">there</span>.

- Functional tests: To generate functional tests, you need to select your board type to be either JIRA or Azure and Then the Below details are also required: 
    - If the Board Type is Jira: 
        - Jira Email.
        - Jira Token.
        - Jira Hostname.
    - If the Board Type is Azure: 
        - Azure Org.
        - Azure Token.
        - Azure Project.

## Improve and Analyze Generated Tests

After the test generation process is complete, a side panel will open, showing you all the generated test files, you can select the file you want to view by using the dropdown provided, if you want you can also edit the files in the panel itself and save your changes using the provided save button.  
If you want to run the generated tests, you can do so from the provided run button in the side panel, doing so will run the selected test file. NOTE that you will need to have all the dependencies required for running the tests installed in your local system for test generation to take place. and for artillery tests, after you click the run button, you will be prompted to enter the target URL for the tests, if you want to provide a target URL, please provide so in the input box, and then you will be asked if you want to upload a .env file to provide environment variables, if yes then you can upload the env file for the same.  
If you are not satisfied with the generated tests and want some improvements or changes in the test, then at the bottom of the side panel, you will find a feedback prompt, enter the feedback prompt that you want to give to the AI model and then click the improve button, this will trigger the test improvement.

# RoostGPT Infrastructure

This section details the RoostGPT resources required

# RoostGPT Resources for Whitelisting

### Terraform Resources Provisioned in AWS

<table border="1" id="bkmrk-resource-name-servic" style="border-collapse: collapse; width: 100%; height: 297.969px;"><colgroup><col style="width: 43.1466%;"></col><col style="width: 56.8534%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Resource Name**</td><td style="height: 29.7969px;">**Description**

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_key\_pair</td><td style="height: 29.7969px;">AWS EC2 keypair to SSH

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_eip</td><td style="height: 29.7969px;">An elastic ip to be used by NAT Gateway for public subnet

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_ami</td><td style="height: 29.7969px;">Ubuntu based AMI id - region specific

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_vpc</td><td style="height: 29.7969px;">VPC

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_availability\_zones</td><td style="height: 29.7969px;">AZ preferred

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_internet\_gateway</td><td style="height: 29.7969px;">IG for VPC to communicate with internet e.g. apt update

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_subnet</td><td style="height: 29.7969px;">private and public subnets

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_security\_group</td><td style="height: 29.7969px;">SG for bastion, backend and frontend service of RoostGPT

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">aws\_lb\_target\_group</td><td style="height: 29.7969px;">Target group for loadbalancer

</td></tr><tr><td>aws\_route\_table</td><td>Route Table entries for inbound and outbound traffic

</td></tr><tr><td>aws\_instance</td><td>Instances to deploy RoostGPT frontend and backend services

</td></tr><tr><td>aws\_route\_table\_association</td><td>To allow network traffic for instance to instance communication

</td></tr><tr><td>null\_resource</td><td>To deploy and run RoostGPT installer scripts on instance

</td></tr></tbody></table>

### Docker Images (hub.docker.com)

<table border="1" id="bkmrk-image-name-source-%2F-" style="border-collapse: collapse; width: 100%; height: 268.172px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Image Name**</td><td style="height: 29.7969px;">**Tag**</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">zbio/roostai\_mysql\_db</td><td style="height: 29.7969px;">v1.1.17</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">zbio/roost-nginx</td><td style="height: 29.7969px;">latest</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">zbio/roost-app</td><td style="height: 29.7969px;">v1.1.17</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">zbio/roostai-server</td><td style="height: 29.7969px;">v1.1.17</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">zbio/roostgpt-go</td><td style="height: 29.7969px;">v1.1.17</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">zbio/roostgpt</td><td style="height: 29.7969px;">v1.1.17</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">zbio/roostgpt-ui</td><td style="height: 29.7969px;">v1.1.17</td></tr><tr><td>zbio/roost-proxy</td><td>v1.1.17</td></tr></tbody></table>

### RoostGPT scripts or executables from 

[https://github.com/roost-io/roost-support/releases/tag/v1.1.17](https://github.com/roost-io/roost-support/releases/tag/v1.1.17)

<table border="1" id="bkmrk-name-link-source-roo" style="border-collapse: collapse; width: 100%; height: 29.7969px;"><colgroup><col style="width: 50.0596%;"></col><col style="width: 50.0596%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Name**</td><td>**Purpose**</td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">roost.sh</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roost.sh)</td><td><span class="Truncate-text text-bold" data-view-component="true">Deployment script for Hosted stack</span></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">roost-enterprise.sh</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roost-enterprise.sh)</td><td><span class="Truncate-text text-bold" data-view-component="true">Controller script for Hosted stack</span></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">main-config.json</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/main-config.json)</td><td><span class="Truncate-text text-bold" data-view-component="true">Configuration Template for Hosted stack</span></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">aiServer.sh</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/aiServer.sh)</td><td><span class="Truncate-text text-bold" data-view-component="true">Internal scripts for Hosted stack</span></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">aiServer.gz</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/aiServer.gz)</td><td><span class="Truncate-text text-bold" data-view-component="true">Internal daemon executable for Hosted stack</span></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">releaseServer.sh</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/releaseServer.sh)</td><td><span class="Truncate-text text-bold" data-view-component="true">Internal scripts for Hosted stack</span></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">releaseServer.gz</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/releaseServer.gz)</td><td><span class="Truncate-text text-bold" data-view-component="true">Internal daemon executable for Hosted stack</span></td></tr><tr><td>[<span class="Truncate-text text-bold" data-view-component="true">roost.sql</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roost.sql)</td><td><span class="Truncate-text text-bold" data-view-component="true">SQL template for Database (Hosted stack)</span></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">roostcertgen.gz</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostcertgen.gz)</td><td><span class="Truncate-text text-bold" data-view-component="true">Self signed certificate generation (Hosted stack)</span></td></tr><tr><td><div class="d-flex flex-justify-start flex-items-center col-12 col-lg-6" data-view-component="true">[ <span class="Truncate-text text-bold" data-view-component="true">roost-deployment-tool</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roost-deployment-tool)</div></td><td><div class="d-flex flex-justify-start flex-items-center col-12 col-lg-6" data-view-component="true"><span class="Truncate-text text-bold" data-view-component="true">Installer for On-Prem, single Ubuntu server hosted stack</span></div></td></tr><tr><td>[ <span class="Truncate-text text-bold" data-view-component="true">roostgpt-1.0.15.vsix</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostgpt-1.0.15.vsix)</td><td><span class="Truncate-text text-bold" data-view-component="true">VS Code Plugin</span></td></tr></tbody></table>

<table border="1" id="bkmrk-windows-linux-macos-" style="border-collapse: collapse; width: 100%; height: 487.563px;"><colgroup><col style="width: 12.0381%;"></col><col style="width: 28.8409%;"></col><col style="width: 27.6549%;"></col><col style="width: 31.5852%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">**Windows**</td><td style="height: 29.7969px;">**Linux**</td><td style="height: 29.7969px;">**MacOS**</td></tr><tr style="height: 35.3984px;"><td style="height: 35.3984px;">**CLI**</td><td style="height: 35.3984px;"><span class="Truncate-text text-bold" data-view-component="true">[ roostgpt-win.exe ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostgpt-win.exe)</span></td><td style="height: 35.3984px;"><span class="Truncate-text text-bold" data-view-component="true">[ roostgpt-linux ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostgpt-linux)</span></td><td style="height: 35.3984px;"><div class="d-flex flex-justify-start flex-items-center col-12 col-lg-6" data-view-component="true">[<span class="Truncate-text text-bold" data-view-component="true">roostgpt-macos</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostgpt-macos)</div></td></tr><tr style="height: 62.5938px;"><td style="height: 62.5938px;">**UI Test**</td><td style="height: 62.5938px;"><span class="Truncate-text text-bold" data-view-component="true">[ RoostUITestGenerator-win.exe ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostUITestGenerator-win.exe)</span></td><td style="height: 62.5938px;"><span class="Truncate-text text-bold" data-view-component="true">[RoostUITestGenerator-linux](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostUITestGenerator-linux)</span></td><td style="height: 62.5938px;">[<span class="Truncate-text text-bold" data-view-component="true">RoostUITestGenerator-macos-amd</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostUITestGenerator-macos-amd)

[ <span class="Truncate-text text-bold" data-view-component="true">RoostUITestGenerator-macos-arm</span>](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostUITestGenerator-macos-arm)

<div class="d-flex flex-justify-start flex-items-center col-12 col-lg-6" data-view-component="true"><span class="Truncate-text text-bold" data-view-component="true">  
</span></div></td></tr><tr style="height: 35.3984px;"><td style="height: 35.3984px;">**Java**</td><td style="height: 35.3984px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostJavaASTParser.jar</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostJavaASTParser.jar)</td><td style="height: 35.3984px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostJavaASTParser.jar</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostJavaASTParser.jar)</td><td style="height: 35.3984px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostJavaASTParser.jar</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostJavaASTParser.jar)</td></tr><tr style="height: 57.7969px;"><td style="height: 57.7969px;">**Python**</td><td style="height: 57.7969px;">[<span class="Truncate-text text-bold" data-view-component="true">RoostPythonASTParser-win.exe</span>](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostPythonASTParser-win.exe)</td><td style="height: 57.7969px;"><span class="Truncate-text text-bold" data-view-component="true">[RoostPythonASTParser-linux](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostPythonASTParser-linux)</span></td><td style="height: 57.7969px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostPythonASTParser-mac</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostPythonASTParser-mac)</td></tr><tr style="height: 57.7969px;"><td style="height: 57.7969px;">**CSharp**</td><td style="height: 57.7969px;">[RoostCSharpASTParser-win.exe ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostCSharpASTParser-win.exe)</td><td style="height: 57.7969px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostCSharpASTParser-linux</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostCSharpASTParser-linux)</td><td style="height: 57.7969px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostCSharpASTParser-macos</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostCSharpASTParser-macos)</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">**Golang**</td><td style="height: 46.5938px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostGolangASTParser-win.exe</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostGolangASTParser-win.exe)</td><td style="height: 46.5938px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostGolangASTParser-linux</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostGolangASTParser-linux)</td><td style="height: 46.5938px;">[ <span class="Truncate-text text-bold" data-view-component="true">RoostGolangASTParser-macos</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostGolangASTParser-macos)</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;"> </td><td style="height: 29.7969px;"> </td><td style="height: 29.7969px;"> </td><td style="height: 29.7969px;"> </td></tr><tr style="height: 57.7969px;"><td style="height: 57.7969px;">**Javascript**</td><td style="height: 57.7969px;"><span class="Truncate-text text-bold" data-view-component="true">[ RoostJavascriptASTParser-win.exe ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostJavascriptASTParser-win.exe)</span></td><td style="height: 57.7969px;"><span class="Truncate-text text-bold" data-view-component="true">[ RoostJavascriptASTParser-linux ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostJavascriptASTParser-linux)</span></td><td style="height: 57.7969px;"><div class="d-flex flex-justify-start flex-items-center col-12 col-lg-6" data-view-component="true">[ <span class="Truncate-text text-bold" data-view-component="true">RoostJavascriptASTParser-macos</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/RoostJavascriptASTParser-macos)</div><span class="Truncate-text text-bold" data-view-component="true">  
</span>

</td></tr><tr style="height: 74.5938px;"><td style="height: 74.5938px;">**API (Karate Test)**</td><td style="height: 74.5938px;">[ <span class="Truncate-text text-bold" data-view-component="true">karate-1.4.1.jar</span> ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/karate-1.4.1.jar)

<span class="Truncate-text text-bold" data-view-component="true">[karate-1.5.1.jar ](https://github.com/roost-io/roost-support/releases/download/v1.1.17/karate-1.5.1.jar)</span>

</td><td style="height: 74.5938px;">[<span class="Truncate-text text-bold" data-view-component="true">karate-1.4.1.jar</span>](https://github.com/roost-io/roost-support/releases/download/v1.1.17/karate-1.4.1.jar)

<span class="Truncate-text text-bold" data-view-component="true">[karate-1.5.1.jar](https://github.com/roost-io/roost-support/releases/download/v1.1.17/karate-1.5.1.jar)</span>

</td><td style="height: 74.5938px;">[<span class="Truncate-text text-bold" data-view-component="true">karate-1.4.1.jar</span>](https://github.com/roost-io/roost-support/releases/download/v1.1.17/karate-1.4.1.jar)

<span class="Truncate-text text-bold" data-view-component="true">[karate-1.5.1.jar](https://github.com/roost-io/roost-support/releases/download/v1.1.17/karate-1.5.1.jar)</span>

<div class="d-flex flex-justify-start flex-items-center col-12 col-lg-6" data-view-component="true"><span class="Truncate-text text-bold" data-view-component="true">  
</span></div></td></tr></tbody></table>

# RoostGPT Database for Hosted Server

RoostGPT solution requires a RDBMS to

- Store test configurations
- RoostGPT connector information
- User and Team information

For POC or limited trials, RoostGPT can also use a containerised database. However, it has limitations related to

\- Enterprise-grade reliability and security  
\- Advanced feature set and integrations  
\- Professional support and SLA guarantees  
\- Automated maintenance and updates

# Database Hosting Type Comparison

## Docker Container vs Cloud Hosted MySQL

<table id="bkmrk-aspect-docker-contai"><thead><tr><th>**Aspect**</th><th>**Docker Container (with Container MySQL)**</th><th>**Cloud Hosted MySQL**</th></tr></thead><tbody><tr><td>**Deployment Complexity**</td><td>✅ **Simple** - Single command deployment with docker-compose</td><td>⚠️ **Moderate** - Requires cloud service configuration and network setup</td></tr><tr><td>**Setup Time**</td><td>✅ **Minutes** - Quick spin-up for immediate use</td><td>⚠️ **Hours** - Initial cloud provisioning and configuration</td></tr><tr><td>**Target Use Case**</td><td>✅ **Ideal for POCs, demos, and development environments**</td><td>✅ **Production environments and enterprise deployments**</td></tr><tr><td>**Scalability**</td><td>❌ **Limited** - Constrained by single host resources</td><td>✅ **High** - Auto-scaling capabilities and horizontal expansion</td></tr><tr><td>**Data Persistence**</td><td>⚠️ **Moderate** - Dependent on volume configuration and host reliability</td><td>✅ **Robust** - Built-in backup, replication, and disaster recovery</td></tr><tr><td>**Performance**</td><td>⚠️ **Variable** - Limited by host machine specifications</td><td>✅ **Optimized** - Dedicated resources with performance tuning options</td></tr><tr><td>**Maintenance Overhead**</td><td>❌ **High** - Manual updates, backups, and monitoring required</td><td>✅ **Low** - Managed service with automated maintenance</td></tr><tr><td>**Cost Structure**</td><td>✅ **Low** - Only infrastructure costs for hosting</td><td>❌ **Higher** - Cloud service fees plus data transfer costs</td></tr><tr><td>**Security**</td><td>⚠️ **Basic** - Relies on host security and manual configuration</td><td>✅ **Enterprise-grade** - Built-in encryption, access controls, and compliance</td></tr><tr><td>**High Availability**</td><td>❌ **Single point of failure** - No built-in redundancy</td><td>✅ **Multi-zone redundancy** - Automatic failover capabilities</td></tr><tr><td>**Monitoring &amp; Alerting**</td><td>❌ **Manual setup required** - Custom monitoring implementation needed</td><td>✅ **Built-in** - Comprehensive metrics and alerting out-of-the-box</td></tr><tr><td>**Backup &amp; Recovery**</td><td>⚠️ **Manual process** - Requires custom backup scripts and procedures</td><td>✅ **Automated** - Point-in-time recovery and scheduled backups</td></tr><tr><td>**Feature Set**</td><td>⚠️ **Standard** - Core RoostGPT functionality</td><td>✅ **Enhanced** - Advanced analytics, extended integrations, premium features</td></tr><tr><td>**Team Collaboration**</td><td>⚠️ **Limited** - Single instance access</td><td>✅ **Full** - Multi-tenant support with role-based access</td></tr><tr><td>**Compliance &amp; Auditing**</td><td>❌ **Manual** - Custom implementation required</td><td>✅ **Built-in** - Audit logs and compliance reporting</td></tr></tbody></table>

## Deployment Recommendations

### 🐳 Docker Container Deployment

**Recommended for:**

- **Proof of Concepts (POCs)** and initial evaluations
- **Development and testing environments**
- **Small teams** with limited infrastructure requirements
- **Quick demonstrations** and pilot projects
- **Budget-conscious** deployments

**Key Benefits:**

- Rapid deployment and setup
- Self-contained environment
- Minimal external dependencies
- Cost-effective for small-scale usage

### ☁️ Cloud Hosted MySQL Deployment

**Recommended for:**

- **Production environments** with business-critical workloads
- **Enterprise deployments** requiring high availability
- **Large teams** needing advanced collaboration features
- **Scalable solutions** with growing user bases
- **Compliance-sensitive** environments

**Key Benefits:**

- Enterprise-grade reliability and security
- Advanced feature set and integrations
- Professional support and SLA guarantees
- Automated maintenance and updates

## Migration Path

Organizations typically start with **Docker Container** deployment for evaluation and POC phases, then migrate to **Cloud Hosted MySQL** for production deployment as their usage scales and requirements mature.

### Typical Evolution:

1. **POC Phase**: Docker Container for quick evaluation
2. **Development**: Docker Container for development teams
3. **Staging**: Cloud Hosted MySQL for pre-production testing
4. **Production**: Cloud Hosted MySQL for live workloads