# What is Flow: visual automation and IoT with FlowStreams

> Flow is the Total.js app that runs FlowStreams, visual diagrams of components connected by messages, for automation, integrations and IoT, with an editor in the browser and an API to manage the streams.

Framework: flow
Product: Flow (flow@11.1)
Language: en
Content-SHA256: 1ddb2721c518c5b27cf8e863b76ab7569f9d38fc87393080eab8ca5f52cb57c4
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

**Flow** (`totaljs/flow`, version 11.1 at the time of writing) is the main application of the Total.js family for visual programming. You draw a diagram in the browser: every box is a **component**, the lines between them carry **messages**, and the diagram is a **FlowStream**. Flow keeps many FlowStreams, runs each one, and gives you the editor, the monitoring and an API to manage them.

It is a Total.js 5 application, MIT licensed, and it needs **no database**: everything lives in two folders of the application (see [install and first start](/en/flow/install-and-first-start/)).

## What you get

- **A visual editor** in the browser (the route `/designer/`) with a library of components, the readme of each component, a console, the variables of the stream and dark mode.
- **Many independent FlowStreams** in one installation, each with a name, icon, color, group, author, version and notes. By default each stream runs in its **own Node.js process** (`flowstream_worker: fork` in the `config` file), so a stream that fails does not take the others with it, and Flow restarts it.
- **Components as plain files.** A component is one HTML file with a Node.js part, its settings form and its design (see [write a component](/en/flow/write-a-component/)). The official catalogue is the repository [`flowstreamcomponents`](/en/flow/the-components-repository/).
- **Ways in for the outside world**: a stream can publish HTTP routes under its own `proxypath`, receive calls on `/notify/{id}/`, and talk over WebSocket.
- **Import and export** of a stream as one JSON file, pause, restart, statistics and a backup of the database of streams.
- **Sign-in** with a generated login and password, or through [OpenPlatform](/en/openplatform/what-is-openplatform/) when you install Flow as one of its apps, with the permissions *Create Flows* and *Remove Flows*.
- **Extensions**: HTML files that you copy to a folder to extend the editor.

## Where it fits

Flow is the tool to connect things without writing a server: read a sensor, call an API every minute, transform a message, store it, send an alert, answer an HTTP request. Because the runtime is the FlowStream of Total.js 5, the same engine can also be embedded in your own application; Flow is the complete application around it.

## The family

Flow has relatives in other repositories of `github.com/totaljs`: [`lesscode`](https://github.com/totaljs/lesscode), [`flowstreamdesigner`](https://github.com/totaljs/flowstreamdesigner), [`flowdesigneroffline`](https://github.com/totaljs/flowdesigneroffline), [`flowdesigner`](https://github.com/totaljs/flowdesigner) and others. They exist as separate projects; this section documents the application `flow` and its components only.

## Next

1. [Install and first start](/en/flow/install-and-first-start/)
2. [Manage FlowStreams with the API](/en/flow/manage-flowstreams-with-the-api/)
3. [Settings and files](/en/flow/settings-and-files/)
4. [Write a component](/en/flow/write-a-component/)
5. [The components repository](/en/flow/the-components-repository/)
