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

# Welcome to Soul

> A modern scripting language for AI automation and web integration

<img className="block dark:hidden" src="https://mintcdn.com/gantz/qbb5u-fMjRMte-7T/images/hero-light.png?fit=max&auto=format&n=qbb5u-fMjRMte-7T&q=85&s=f99c1b80683cd7b464a5308c478cac1f" alt="Soul Language Logo" width="2064" height="1104" data-path="images/hero-light.png" />

<img className="hidden dark:block" src="https://mintcdn.com/gantz/qbb5u-fMjRMte-7T/SoulMainLogo.png?fit=max&auto=format&n=qbb5u-fMjRMte-7T&q=85&s=6ef5e9c354aca20f0b0a52f26e9976cd" alt="Soul Language Logo" title="" width="1721" height="476" data-path="SoulMainLogo.png" />

## What is Soul?

Soul is a dynamically typed, object-oriented scripting language designed for the modern automation era. Built with Go, it combines familiar syntax with powerful features specifically tailored for AI-powered automation, web scraping, and system integration.

## Why Soul?

<CardGroup cols={3}>
  <Card title="AI-First Design" icon="brain">
    Built-in support for OpenAI, Anthropic, and Gemini models with a unified API
  </Card>

  <Card title="Modern Concurrency" icon="bolt">
    Powerful async/await, channels, and lightweight threads for efficient
    parallel processing
  </Card>

  <Card title="Rich Standard Library" icon="cube">
    Everything you need out-of-the-box: HTTP servers, web scraping, databases,
    and more
  </Card>
</CardGroup>

## Quick Example

### GenAI and Automation Example

```javascript theme={null}
soul genesis() {
    // Fetch and summarize web content with AI
    browser = Robo.createBrowser()
    page = browser.newPage()
    page.navigate("https://news.ycombinator.com")

    title = page.findElement("title").getText()

    ai = GenAI.chat("openai").model("gpt-3.5-turbo")
    response = ai.invoke("Summarize this title: " + title)

    println(response.text)
    browser.close()
}
```

### Concurrent Processing Example

```javascript theme={null}
soul processData(name, value) {
    println("Processing " + name + "...")
    Concurrency.sleep(100)
    return name + " result: " + (value * 2)
}

soul genesis() {
    // Spawn concurrent tasks
    task1 = Concurrency.spawn(processData, "Task A", 10)
    task2 = Concurrency.spawn(processData, "Task B", 20)
    task3 = Concurrency.spawn(processData, "Task C", 30)

    // Wait for all results
    result1 = await task1
    result2 = await task2
    result3 = await task3

    println(result1)
    println(result2)
    println(result3)

    // Use WaitGroup for synchronization
    wg = Concurrency.waitGroup()
    wg.add(2)

    Concurrency.run(soul() {
        println("Background job 1 running")
        Concurrency.sleep(50)
        wg.done()
    })

    Concurrency.run(soul() {
        println("Background job 2 running")
        Concurrency.sleep(75)
        wg.done()
    })

    wg.wait()
    println("All background jobs completed")
}
```

## Get Started

<CardGroup cols={2}>
  <Card title="Installation" icon="download" href="/how-to-install">
    Install Soul and set up your development environment in minutes
  </Card>

  <Card title="Quick Start Guide" icon="rocket" href="/quickstart">
    Write your first Soul program and explore the core features
  </Card>
</CardGroup>

## Learn More

<CardGroup cols={2}>
  <Card title="Language Documentation" icon="book" href="/documents/usage">
    Explore the complete language reference and syntax guide
  </Card>

  <Card title="Jet Framework" icon="server" href="/jet/welcome-to-jet">
    Build web applications with Soul's Express.js-inspired framework
  </Card>
</CardGroup>
