---
audience: engineers
summary: Five steps from zero to a running ScaiCore flow.
title: Quickstart
path: quickstart
status: published
---

This walks you from an empty directory to a running flow in five steps. By the end you'll have compiled and executed a minimal `.scaicore` source file and seen its output on the console.

## 1. Install

ScaiCore requires Python 3.12 or newer. Install from the wheel the platform team published:

```bash
pip install scaicore
```

The package installs a `scaicore` command on your `PATH`.

## 2. Write a minimal flow

Save the following as `greet.scaicore`. It declares a Core named `HelloWorld` with a single flow that returns a greeting:

```scaicore
@core HelloWorld {
    version = "1.0.0"
    instance = :stateless
}

@flow greet(name: string): string {
    @rigid {
        return "Hello, ${name}!"
    }
}
```

## 3. Check it

`scaicore check` runs the full compile pipeline without writing any output. It's the fastest way to confirm your source is well-formed:

```bash
scaicore check greet.scaicore
```

You should see `✓ HelloWorld v1.0.0 — all checks passed (1 flow)`. If anything is wrong, the compiler prints an `E0xx`-coded diagnostic with a source location — see [troubleshooting/compile-errors](./troubleshooting/compile-errors).

## 4. Run a flow

`scaicore run` compiles in-memory and executes a named flow. Inputs are passed as JSON via `--input`:

```bash
scaicore run greet.scaicore --flow greet --input '{"name": "Ada"}'
```

## 5. Inspect the output

You should see:

```
  Compiling greet.scaicore...
  Running HelloWorld:greet...
  Completed in 0.001s
  Output: "Hello, Ada!"
```

That's it. From here:

- Add a [`@flexible` block](./reference/cli#run) to call an LLM — you'll need a configured model provider.
- Compile to a deployable bundle with `scaicore compile -o build/hello.scaicore-ir`.
- Embed the runtime in a host application (Python) — see the runtime reference.
