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

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# Start manually

> Create, deploy, and run your first Automate.ax automation.

This first automation uses an HTTP trigger so you can deploy and test it without connecting an external account.

## Create the project

Start in an empty directory and sign in to Automate.ax:

```bash theme={null}
mkdir hello-automate
cd hello-automate
bunx automate.ax login
```

Initialize the Automate.ax project:

```bash theme={null}
bunx automate.ax init
```

Follow the prompts to choose an organization and name the project. Automate.ax adds the package, configuration, and an example automation.

## Write the automation

Open `automations/example.automation.ts` and replace it with:

```ts automations/example.automation.ts theme={null}
import { automation, onHttpRequest, respondToHttpRequest, t } from "automate.ax"

export default automation("Confirm an HTTP request", () => {
  const request = onHttpRequest()

  respondToHttpRequest({
    body: t`Automate.ax received ${request.method} ${request.path}.`,
    requestId: request.requestId,
  })
})
```

* [`automation`](/concepts/automations) gives the automation a name.
* [`onHttpRequest`](/reference/triggers/on-http-request) creates the web endpoint that starts it.
* [`respondToHttpRequest`](/reference/actions/respond-to-http-request) sends a response back to the caller.
* [`t`](/reference/runtime/signal-operators#t) builds a string from values that arrive when the automation runs.

The request arrives as a [signal](/concepts/signals). Passing `request.requestId` addresses the response to that exact request and makes Automate.ax wait for it automatically.

## Deploy it

Typecheck the project:

```bash theme={null}
bunx tsc --noEmit
```

Deploy the project:

```bash theme={null}
bunx automate.ax deploy
```

Automate.ax publishes the automation and prints its HTTP trigger URL. It also saves the deployment details in `.automate/deployment.md`.

## Run it

Read the HTTP trigger URL from the deployment manifest and call it:

```bash theme={null}
curl "$(grep -m1 '^https://automate.ax/x/' .automate/deployment.md)"
```

You receive a response like:

```text wrap theme={null}
Automate.ax received GET /.
```

## Connect integrations

* Browse the **Integrations** section in Reference, or open [Slack](/reference/integrations/slack/index), [Google Sheets](/reference/integrations/google-sheets/index), or [Linear](/reference/integrations/linear/index) directly.
* [Use multiple accounts from the same service](/guides/use-multiple-accounts) when a project needs separate identities.
* [Call an external API](/guides/call-an-external-api) when packaged actions don't cover the operation.
