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

# Quickstart

> Start MoleSignal, send a log event, and query the event in a few minutes.

This guide starts MoleSignal locally, sends a log event, and queries the event through the authenticated
HTTP API.

## Prerequisites

* **Docker** and **Docker Compose** (the sandbox brings up Postgres + MinIO + MoleSignal).
* About 2 GB of free RAM for the standalone profile.

## Run the sandbox

<Steps>
  <Step title="Clone and start">
    ```bash theme={null}
    git clone https://github.com/molesignal/molesignal
    cd molesignal

    # 1-command sandbox: Postgres + MinIO + MoleSignal standalone
    docker compose -f deploy/docker/docker-compose.yaml --profile standalone up
    ```

    After startup completes:

    * **UI:** [http://localhost:5080](http://localhost:5080)
    * **S3 admin (MinIO):** [http://localhost:9001](http://localhost:9001) — `minioadmin` / `minioadmin`
  </Step>

  <Step title="Log in and get a token">
    Authenticate to obtain a JWT and `org_id`:

    ```bash theme={null}
    curl -X POST http://localhost:5080/api/v1/auth/signin \
      -H 'content-type: application/json' \
      -d '{"email":"admin@example.com","password":"admin"}'
    ```

    The response contains the JWT and `org_id`. Export both values for the next steps:

    ```bash theme={null}
    export MS_JWT="<jwt-from-response>"
    export MS_ORG="<org_id-from-response>"
    ```
  </Step>

  <Step title="Send the first data">
    Native HTTP JSON intake works with `curl`, an app SDK, Vector, or Fluent Bit out of the box.
    Timestamps are microseconds since the Unix epoch.

    ```bash theme={null}
    curl -X POST http://localhost:5080/api/v1/intake/logs/app \
      -H "authorization: Bearer $MS_JWT" \
      -H 'content-type: application/json' \
      -d '[{"_timestamp":1700000000000000,"level":"error","msg":"db pool exhausted","trace_id":"abc123"}]'
    ```
  </Step>

  <Step title="Query the event">
    Query the `app` log stream over the HTTP API:

    ```bash theme={null}
    curl -X POST http://localhost:5080/api/v1/query \
      -H "authorization: Bearer $MS_JWT" \
      -H 'content-type: application/json' \
      -d "{\"org_id\":\"$MS_ORG\",\"language\":\"sql\",
           \"statement\":\"SELECT * FROM app WHERE trace_id = 'abc123'\",
           \"time_range\":{\"start\":0,\"end\":2000000000000000},
           \"stream\":{\"name\":\"app\",\"stream_type\":\"logs\"}}"
    ```

    The result includes `columns`, `rows`, `scanned_rows`, and `took_ms`.
  </Step>
</Steps>

## Next steps

<CardGroup cols={2}>
  <Card title="Data intake from an existing stack" icon="inbox" href="/en-US/intake">
    Connect OpenTelemetry, Prometheus, Loki JSON senders, Filebeat, and cloud sources.
  </Card>

  <Card title="Cross-signal correlation" icon="link" href="/en-US/correlation">
    Connect logs, metrics, traces, profiles, and RUM with shared context.
  </Card>

  <Card title="Deploy for real" icon="server" href="/en-US/deployment">
    Move from the sandbox to a multi-role or Kubernetes deployment.
  </Card>

  <Card title="Configuration" icon="gear" href="/en-US/configuration">
    TOML config and `MS_*` environment overrides.
  </Card>
</CardGroup>
