# Quickstart

> Install the SDK, write a function, connect a GitHub repo and run your first automation from the web app.

Source: https://callables.app/docs/quickstart

This takes about five minutes. You need Python 3.11 or newer, a GitHub account and a Callables account. [Create one free](https://callables.app/register): new teams get 30 days with no credit card.

## 1. Install the SDK

In your project's virtual environment:

```bash
pip install callables
```

This installs the `callables` package and the `call` command. Keep `callables` out of `requirements.txt`: the platform installs its own matching copy.

## 2. Create a function

Run `call init` in the repo. It creates `automations.py` with an example function, and instructions for coding agents (see [coding agents](https://callables.app/docs/coding-agents)). Or write one yourself:

```python
from typing import Literal

from callables import deploy


@deploy(title="Say hello")
def say_hello(
    name: str,
    tone: Literal["friendly", "formal"] = "friendly",
) -> str:
    """Writes a short greeting."""
    if tone == "formal":
        return f"Good day, **{name}**."
    return f"Hey **{name}**!"
```

Any module in the repo that imports `callables` is scanned for functions, so the file name doesn't matter.

## 3. Check and run it locally

```bash
call check
call say_hello --name Ann --tone formal
call local say_hello -i name=Ann --json
```

`call check` lists every problem a deploy would hit, with a fix for each, and exits with code 1 if the deploy would fail. Every function is also a CLI command, with a flag per input.

## 4. Push the repo to GitHub

Callables deploys a GitHub repo and branch, not a local folder. Commit and push, with `.env` files, keys and data kept out by `.gitignore`.

## 5. Connect the repo

1. In the web app, open **New project**.
2. Install the Callables GitHub App when asked, and give it access to the repo.
3. Pick the repo and branch, then **Connect and deploy**.

The first deploy starts right away and takes a minute or two. You can follow the build log on the project page.

## 6. Run it

Open the function in the web app, fill in the form and click **Run**. The result appears when the run finishes, and the run is saved in its history.

From now on, every push to the branch deploys. If a function declares secrets, set their values on the project page (see [secrets](https://callables.app/docs/secrets)). To let teammates run it, [invite them and share the function](https://callables.app/docs/sharing).

## Next

- [Inputs](https://callables.app/docs/inputs): dropdowns, dates, lists, models and file uploads from type hints.
- [Results](https://callables.app/docs/results): return tables, Markdown or files.
- [Schedules](https://callables.app/docs/schedules): run it every morning without anyone clicking.
