> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streemlined.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Get Streemlined running in 5 minutes

## Step 1: Configuration file

Create an `application.yml` file with your license, Kafka clusters, and databases:

<CodeGroup>
  ```yaml application.yml (Minimal) theme={null}
  license:
    token: <your-license-token>

  clusters:
    my-cluster:
      bootstrap.servers: localhost:9092
  ```

  ```yaml application.yml (Full) theme={null}
  license:
    token: <your-license-token>

  clusters:
    my-cluster:
      bootstrap.servers: localhost:9092
      security.protocol: SASL_PLAINTEXT
      sasl.mechanism: PLAIN
      sasl.jaas.config: | 
        org.apache.kafka.common.security.plain.PlainLoginModule required 
        username="admin" 
        password="secret";
      registry:
        # Full list of available Schema Registry properties
        # https://docs.confluent.io/platform/current/schema-registry/sr-client-configs.html
        schema.registry.url: http://localhost:8081
        basic.auth.credentials.source: USER_INFO 
        basic.auth.user.info: username:password

  databases:
    default: 
      # Full list of available JDBC connection properties
      # https://docs.confluent.io/kafka-connectors/jdbc/current/sink-connector/sink_config_options.html#connection
      connection.url: jdbc:postgresql://localhost:5432/mydb
      connection.user: postgres
      connection.password: secret

  ```
</CodeGroup>

## Step 2: Run

<Tabs>
  <Tab title="Compose">
    Create a `docker-compose.yml` file

    ```yaml docker-compose.yml theme={null}
    services:
      streemlined:
        image: streemlined/streemlined:latest
        ports:
          - "8080:8080"
        volumes:
          - ./application.yml:/home/app/application.yml
    ```

    ```bash command theme={null}
    docker compose up -d
    ```
  </Tab>

  <Tab title="Docker">
    ```bash command theme={null}
    docker run -p 8080:8080 -v ./application.yml:/app/application.yml streemlined/streemlined:latest
    ```
  </Tab>
</Tabs>

Open your browser and navigate to [http://localhost:8080](http://localhost:8080).

You're ready to build your first pipeline!

## Step 3 (optional): Persist pipelines

By default, pipelines are stored inside the container. If the container is removed, your work is lost.
Mount a local directory or use a Docker volume to persist your pipelines across restarts:

<Tabs>
  <Tab title="Local Directory">
    ```yaml docker-compose.yml theme={null}
    services:
      streemlined:
        image: streemlined/streemlined:latest
        ports:
          - "8080:8080"
        volumes:
          - ./application.yml:/home/app/application.yml
          - ./storage:/home/app/storage
    ```
  </Tab>

  <Tab title="Docker Volume">
    ```yaml docker-compose.yml theme={null}
    services:
      streemlined:
        image: streemlined/streemlined:latest
        ports:
          - "8080:8080"
        volumes:
          - ./application.yml:/home/app/application.yml
          - storage:/home/app/storage
    volumes:
      storage:
    ```
  </Tab>
</Tabs>

<Info>
  The default Streemlined image comes pre-packaged with two Sink Connectors:

  * [JDBC Connector for Apache Kafka](https://github.com/Aiven-Open/jdbc-connector-for-apache-kafka) — Transfer data from Kafka topics to relational databases
  * [HTTP Connector for Apache Kafka](https://github.com/Aiven-Open/http-connector-for-apache-kafka) — Send data from Kafka topics to HTTP endpoints

  Need additional connectors? See [Adding Connector Plugins](/connector-plugins) to extend Streemlined with more Kafka Connect connectors.
</Info>

## What's Next?

<CardGroup cols={3}>
  <Card title="Core Concepts" icon="lightbulb" href="/concepts">
    Understand pipelines, nodes, and JSONata
  </Card>

  <Card title="Visual Editor" icon="window" href="/editor">
    Master the pipeline editor
  </Card>

  <Card title="Nodes Reference" icon="diagram-project" href="/nodes">
    Explore all available nodes
  </Card>
</CardGroup>
