# SingleStore Studio Architecture

> **❗ Important**: Studio is designed to work with MemSQL 6.5 or later and is only supported on Chrome and Firefox browsers at this time.

Studio has a one-to-many relationship with clusters, which provides a number of advantages:
* **Easy upgrades**: Studio can be upgraded in minutes, making it easy to stay up to date with the latest features.
* **Multi-cluster management in one UI**: A single instance of Studio can communicate with all of your SingleStore clusters.
* **Easily scalable**: As multiple Studio instances can communicate with an individual cluster, you can easily scale out Studio by creating new instances to manage user load.

## Directory Layout

## RPM and Debian Package Installation

A package-based Studio installation follows the Linux Standard Base (LSB) layout and creates the following directories and files when installed.

```
/
   etc/
       singlestore/
           singlestoredb-studio.hcl
   var/
       lib/
           singlestoredb-studio/
               studio.hcl
               studio.log
   usr/
       bin/
           singlestoredb-studio

```

## Configuration File

The Studio configuration file is a text file that is responsible for configuring various aspects of Studio. It is read each time that Studio is started and is located in:

```
/etc/singlestore/singlestoredb-studio.hcl
```

The following is an example configuration file.

```
# This is the IP address that Studio will bind to.
host = "0.0.0.0"

# This is the port that Studio will bind to.
port = 8080

# This is the default path to the Studio state file.
statePath = "/var/lib/singlestoredb-studio/studio.hcl"

# This is the default path to the Studio log file.
logPath = "/var/lib/singlestoredb-studio/studio.log"

```

Note that the location of both the Studio state file and log file can be specified in the `singlestoredb-studio.hcl` configuration file.

## State File

The Studio state file is a text file that is used to store the list of clusters known to Studio and is located in:

```
/var/lib/singlestoredb-studio/studio.hcl
```

The following is an example state file.

```
version = 1

cluster "2d76801f-4b4a-4679-82b9-12d0b3cda30a" {
  name        = "my cluster"
  description = "data science cluster"
  hostname    = "85.88.53.151"
  port        = 3306
  profile     = "DEVELOPMENT"
}

```

## Log File

To write the Studio log file to a directory other than the default, the value of the `logPath` variable can be defined in the `singlestoredb-studio.hcl` configuration file. For example:

```
logPath = "/var/log/singlestoredb-studio/studio.log"
```

## Tarball Installation

A tarball-based Studio installation creates the following directories and files when the tarball file is extracted.

```
/path/to/singlestoredb-studio-{VERSION}/
    singlestoredb-studio.hcl
    singlestoredb-studio

```

## Configuration File

The Studio configuration file is a text file that is responsible for configuring various aspects of Studio. It is read each time that Studio is started and is located in:

```
/path/to/singlestoredb-studio-{VERSION}/singlestoredb-studio.hcl
```

The following is an example configuration file.

```
# This is the IP address that Studio will bind to.
host = "0.0.0.0"

# This is the port that Studio will bind to.
port = 8080

# This is the default path to the Studio state file.
statePath = "/path/to/singlestoredb-studio-{VERSION}/state/studio.hcl"

# This is the user-defined path to the Studio log file.
logPath = "/path/to/singlestoredb-studio-{VERSION}/log/studio.log"
```

Note that the location of both the Studio state file and log file can be specified in the `singlestoredb-studio.hcl` configuration file.

## State File

The Studio state file is a text file that is used to store the list of clusters known to Studio. Unlike package-based installations, a Studio state file is not included in the tarball file. After extracting the tarball file, an empty `studio.hcl` file must be created manually. SingleStore recommends creating this file in a subdirectory where the Studio tarball file is extracted. For example:

```
/path/to/singlestoredb-studio-{VERSION}/state/studio.hcl. 
```

The `singlestoredb-studio.hcl` configuration file must then be updated with the path to the state file by adding the `statePath` variable and an associated value. For example:

```
statePath = "/path/to/singlestoredb-studio-{VERSION}/state/studio.hcl"
```

The following is an example state file.

```
version = 1

cluster "2d76801f-4b4a-4679-82b9-12d0b3cda30a" {
  name        = "my cluster"
  description = "data science cluster"
  hostname    = "85.88.53.151"
  port        = 3306
  profile     = "DEVELOPMENT"
}
```

## Log File

Unlike package-based installations, a Studio log file is not included in the tarball file. After extracting the tarball file, an empty log file must be created manually. SingleStore recommends creating this file in a subdirectory where the Studio tarball file is extracted. For example:

```
/path/to/singlestoredb-studio-{VERSION}/log/studio.log
```

The `singlestoredb-studio.hcl` configuration file must then be updated with the path to the log file by adding the `logPath` variable and an associated value. For example:

```
logPath = "/path/to/singlestoredb-studio-{VERSION}/log/studio.log"
```

***

Modified at: April 23, 2024

Source: [/db/v9.1/reference/singlestore-tools-reference/singlestore-studio/singlestore-studio-architecture/](https://docs.singlestore.com/db/v9.1/reference/singlestore-tools-reference/singlestore-studio/singlestore-studio-architecture/)

(An index of the documentation is available at /llms.txt)
