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

# Get Started with Invoke in Under Ten Minutes

> Install the Invoke CLI, deploy a guarded billing agent, make your first SDK call, and verify execution proof — from zero to production-safe tool calls.

This guide takes you from a fresh install to a running agent that calls real tools through Invoke's execution controls. You will install the CLI, authenticate, deploy a project with a guardrail template, call a tool through the TypeScript SDK, and verify the outcome with `invoke demo`.

## Setup

<Steps>
  <Step title="Install the Invoke CLI">
    Install the CLI globally with your preferred package manager.

    <CodeGroup>
      ```bash npm theme={null}
      npm install -g @invoke/cli
      ```

      ```bash npx theme={null}
      npx @invoke/cli
      ```

      ```bash yarn theme={null}
      yarn global add @invoke/cli
      ```

      ```bash pnpm theme={null}
      pnpm add -g @invoke/cli
      ```

      ```bash bun theme={null}
      bun add -g @invoke/cli
      ```
    </CodeGroup>
  </Step>

  <Step title="Authenticate">
    Log in to connect the CLI to your Invoke account. This stores your credentials locally for subsequent commands.

    ```bash theme={null}
    invoke login
    ```
  </Step>

  <Step title="Create and deploy your first agent project">
    Initialize a new project with the `crm-guardrail` template, then deploy it.

    ```bash theme={null}
    invoke init billing-agent --template crm-guardrail
    cd billing-agent
    invoke deploy
    ```
  </Step>

  <Step title="Make your first SDK call">
    ```bash theme={null}
    npm install @invoke/sdk
    ```

    ```typescript theme={null}
    import { Invoke } from "@invoke/sdk"

    const invoke = new Invoke({
      apiKey: process.env.INVOKE_API_KEY!,
    })

    const result = await invoke.call({
      tool: "stripe.charge_customer",
      params: { customer_id: "cust_123", amount: 2400 },
      agentId: "billing-agent",
      idempotencyKey: "charge:cust_123:2400"
    })
    ```
  </Step>

  <Step title="Verify with the demo runner">
    ```bash theme={null}
    invoke demo
    ```
  </Step>
</Steps>

## What just happened

Your agent now routes tool calls through Invoke instead of hitting APIs directly. Every call gets:

* A **commit record** written before the side effect lands
* **Idempotency enforcement** so a lost response does not become a duplicate charge
* **Scope validation** against the policy defined in your deployed project
* **A trace** your team can inspect when something important happens

## Next steps

* Read [How It Works](https://docs.invokehq.run/how-it-works) to understand the full execution loop and the four control primitives
* Review [Tool Safety Classes](https://docs.invokehq.run/concepts/tool-safety-classes) to limit what your agent can call and under what conditions
* Explore [Traces](https://docs.invokehq.run/concepts/traces) to inspect retries, reconciliation decisions, and blocked side effects
