> ## Documentation Index
> Fetch the complete documentation index at: https://helix-digitalocean.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting Started

> Install, configure, and set up the Helix CLI v2 for your development workflow

<Warning>
  **Prerequisites**: - **Rust** version **1.88.0** or higher - **Docker
  Desktop** (for local development) - **Git** (for first-time Helix source
  cache) - If using the cloud, you will need the CLIs for deployment targets
  (**AWS CLI**, **Fly CLI**)
</Warning>

<Steps>
  <Step title="Quick Install">
    Use the official installer script to automatically download and set up the Helix CLI:

    ```bash theme={null}
    curl -sSL https://install.helix-db.com | bash
    ```

    <Note>
      If you already have the Helix CLI installed, you can update it with `helix update`, you can migrate your project with `helix migrate`.

      See the [Migration Guide](/documentation/cli-v2/migration) for more information.
    </Note>
  </Step>

  <Step title="Create project">
    ```bash theme={null}
    helix init
    ```
  </Step>

  <Step title="Create schema and queries">
    Inside the schema.hx file, create your schema.

    ```js theme={null}
    N::User {
      INDEX name: String,
      email: String,
      created_at: Date DEFAULT NOW
    }
    ```

    Inside the queries.hx file, create your queries.

    ```js theme={null}
    QUERY createUser(name: String, email: String) =>
      user <- AddN<User>({name: name, email: email})
      RETURN user

    QUERY getUser(name: String) =>
      user <- N<User>({name: name})
      RETURN user
    ```
  </Step>

  <Step title="Build and deploy">
    ```bash theme={null}
    helix push dev 
    ```
  </Step>

  <Step title="Test connection">
    **Create a user**

    ```bash theme={null}
    curl -X POST http://localhost:6969/createUser -H 'Content-Type: application/json' -d '{"name": "John Doe", "email": "john.doe@example.com"}'
    ```

    **Get a user**

    ```bash theme={null}
    curl -X POST http://localhost:6969/getUser -H 'Content-Type: application/json' -d '{"name": "John Doe"}'
    ```
  </Step>
</Steps>

You now have a working HelixDB instance running locally with docker! You can now start building your application on top of it.

## Best Practices

<AccordionGroup>
  <Accordion title="Development Best Practices">
    * Always run `helix check` before deploying
    * Use descriptive instance names
    * Keep development and production configurations separate
    * Regularly clean up unused resources with `helix prune`
    * Version control your `helix.toml` file
  </Accordion>

  <Accordion title="Production Best Practices">
    * Use `build_mode = "release"` for production
    * Configure appropriate vector parameters for your data scale
    * Enable monitoring and logging
    * Set up automated backups
    * Test migrations in staging first
  </Accordion>

  <Accordion title="Security Best Practices">
    * Never commit credentials to version control
    * Use environment variables for sensitive data
    * Regularly rotate API keys
    * Keep CLI updated with `helix update`
    * Use private instances for production data
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Troubleshooting" icon="wrench" href="/documentation/cli-v2/troubleshooting">
    Solutions to common issues
  </Card>

  <Card title="Configuration Guide" icon="gear" href="/documentation/cli-v2/configuration">
    Advanced configuration options
  </Card>
</CardGroup>
