# Synnax concepts

> Learn the parts of Synnax, how they connect, and the words the docs use.

This page explains the parts of Synnax and how they connect. It also defines the words that the rest of the docs use. The examples come from the [sample project](https://docs.synnaxlabs.com/reference/get-started/sample-project), a simulated tank in Synnax Desktop that a sequence fills with nitrogen and then vents.

## How Synnax fits together

Data moves from left to right, and commands move from right to left. The Driver reads your devices and sends the values to the Core. The Core stores the values and streams them to the Console and to scripts. When you click a valve on a schematic, the command goes back through the Core and the Driver to the device.

* **Synnax Desktop** runs the Console, the Core, and the Driver together in one app on your computer. The client libraries cannot connect to Desktop.
* **Synnax Enterprise** runs the Core on your team’s servers. Many Consoles, Drivers, and scripts connect to the same Core, and each person logs in as a user.

To compare the two, see [Synnax editions](https://docs.synnaxlabs.com/reference/get-started/editions).

## Parts of Synnax

### Core

The Synnax Core stores your data and streams it live to everything that connects to it. It also stores your channels, ranges, projects, and Arc automations.

In Synnax Desktop, the Core starts when you open the app.

### Console

The Synnax Console is the app where you do your work. You use it to set up hardware, build plots and schematics, operate your system, and review past tests.

In the sample project, the Console shows the Tank schematic and the Tank pressure line plot.

### Driver

The [Synnax Driver](https://docs.synnaxlabs.com/reference/hardware) connects Synnax to your hardware. It runs your tasks and your Arc automations close to the hardware.

Synnax Desktop includes a Driver. Synnax Enterprise can run a Driver on each computer that has hardware connected.

### Arc

[Arc](https://docs.synnaxlabs.com/reference/control/arc) is the Synnax language for automation. An Arc automation reacts when channel values change, and moves through stages such as pressurize, hold, and vent.

In the sample project, the Press sequence fills the tank to 300 psi, waits 10 seconds, then vents the tank.

### Client libraries

The [Python and TypeScript client libraries](https://docs.synnaxlabs.com/reference/client) read, write, and stream data from your own scripts and apps.

For example, a Python script reads the data of a test run into a pandas DataFrame.

## Words the docs use

### Channel

A [channel](https://docs.synnaxlabs.com/reference/channels) is a named stream of values from one source, such as a sensor or a valve command. Synnax stores each value and streams it live.

In the sample project, `sample_tank_pt` holds the tank pressure, and `sample_press_vlv_cmd` holds the commands to the press valve.

### Device

A device is a piece of hardware that the Driver connects to, such as an NI chassis, a LabJack, or a Modbus server. See the [supported hardware](https://docs.synnaxlabs.com/reference/hardware).

The sample project has no devices. The Tank simulator Arc automation writes the tank pressure instead.

### Task

A [task](https://docs.synnaxlabs.com/reference/hardware/tasks) reads data from a device into channels, or writes commands from channels to a device. The Driver runs each task in the background.

For example, an NI analog read task reads a pressure transducer into a channel.

### Range

A [range](https://docs.synnaxlabs.com/reference/ranges) is a named time interval that marks an event, such as one test run. A range covers the data of every channel in its interval.

For example, mark each tank pressurization as a range, then plot two ranges together to compare them.

### Project

A [project](https://docs.synnaxlabs.com/reference/visualize/projects) holds your plots, schematics, tables, and logs. The Console always works inside a project.

The sample project is a project that holds the Tank schematic and the Tank pressure line plot.

### Line plot

A [line plot](https://docs.synnaxlabs.com/reference/visualize/line-plots) graphs one or more channels over time. It shows live data as it arrives, or data from the past.

In the sample project, the Tank pressure line plot shows `sample_tank_pt`.

### Schematic

A [schematic](https://docs.synnaxlabs.com/reference/visualize/schematics) is a diagram of your system. It shows live values, and its valves and buttons send commands.

In the sample project, the Tank schematic shows the tank pressure and has Start and Abort buttons.

### Control authority

When more than one writer sends commands to a channel, [control authority](https://docs.synnaxlabs.com/reference/control/authority) decides which writer has control. An authority goes from 0 to 255, and the highest authority wins.

In the sample project, the Press sequence runs at authority 100 and the Tank schematic at 1. To take a valve from the sequence, an operator clicks its control chip, which writes at 255.

### Status

A [status](https://docs.synnaxlabs.com/reference/alarms/statuses) is a named record of a condition, such as “Tank pressure”. The Console shows a notification each time a status changes.

For example, an Arc automation sets a warning status when the tank pressure passes a limit.
