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

# Getting Started

> Install the Anima CLI, provision an agent identity, and send its first email from the terminal — then call the same platform from your code.

# Getting Started

Give an AI agent a real, owned identity — an email inbox, and optionally a phone number — and send its first message, all from the terminal. Anima is hosted; there is nothing to run locally and no infrastructure to stand up. This page takes you from zero to a working agent that can send email.

<Steps>
  <Step title="Install the CLI">
    The `anima` CLI is the fastest way to provision and drive an agent.

    <Tabs>
      <Tab title="npm (recommended)">
        ```bash theme={null}
        npm install -g @anima-labs/cli
        ```

        Bun and pnpm work too: `bun add -g @anima-labs/cli` or `pnpm add -g @anima-labs/cli`. Use this on your development machine, and as a dependency of any Node/TypeScript agent project.
      </Tab>

      <Tab title="Signed Linux binary (containers / CI)">
        For containers, servers, and CI runners, download the signed static binary from [GitHub Releases](https://github.com/anima-labs-ai/cli/releases) (`anima-linux-x64` / `anima-linux-arm64`). Every release is signed with Sigstore keyless signing; verify it before installing:

        ```bash theme={null}
        VERSION="v0.6.5"
        ARCH="$(uname -m | sed 's/x86_64/x64/; s/aarch64/arm64/')"
        BIN="anima-linux-${ARCH}"
        BASE="https://github.com/anima-labs-ai/cli/releases/download/${VERSION}"

        curl -fsSL -O "${BASE}/${BIN}"
        curl -fsSL -O "${BASE}/${BIN}.sigstore.bundle"

        cosign verify-blob \
          --bundle "${BIN}.sigstore.bundle" \
          --certificate-identity-regexp 'https://github.com/anima-labs-ai/cli/\.github/workflows/release\.yml@refs/tags/v.+' \
          --certificate-oidc-issuer https://token.actions.githubusercontent.com \
          "${BIN}"

        install -m 0755 "${BIN}" /usr/local/bin/anima
        ```

        macOS and Windows binaries are not shipped — on those platforms use the npm package. See [Install the Anima CLI](/install) for the full verification chain, the `curl | sh` installer, and Dockerfile examples.
      </Tab>
    </Tabs>

    Confirm it's on your PATH:

    ```bash theme={null}
    anima --version
    ```

    The primary binary is `anima`; `am` is a shorter alias for the same tool.
  </Step>

  <Step title="Onboard">
    Run the guided onboarding:

    ```bash theme={null}
    anima onboard
    ```

    If you're not signed in yet, `anima onboard` starts setup for you. Choosing **Create a fresh agent identity** provisions an organization, an agent, and an email inbox in a single flow, and saves your credentials locally. You'll be asked for two things:

    * **The agent owner's email** — the human who owns this agent. A 6-digit verification code is sent here.
    * **A username for the agent** — this becomes the agent's address, `<username>@agents.useanima.sh`.

    Onboarding then shows your identity and plan tier, offers a couple of optional test-mode demos (no real email is sent), and offers to wire Anima into your AI client over MCP. When it finishes you have a working agent identity with an inbox, its credentials stored in `~/.anima`, and the commands to do everything else.

    <Note>
      Already have an Anima organization and API key? Choose **Configure with an existing API key** instead, or run `anima init --non-interactive --api-key ak_...`.
    </Note>
  </Step>

  <Step title="Verify to unlock sending">
    A brand-new agent starts **unverified**, and an unverified agent may only email its own owner. To unlock sending to anyone, get the 6-digit code from the owner's inbox and submit it:

    ```bash theme={null}
    anima verify <code>
    ```

    On success, the agent is verified and can send to any recipient. You can confirm your identity and tier at any time:

    ```bash theme={null}
    anima auth whoami
    ```
  </Step>

  <Step title="Send the first email">
    Send an email from your agent. Until the agent is verified, send it to the owner's address — that always works and proves the inbox is live end to end. You'll need the agent's ID, which onboarding printed and stored; `anima auth whoami` shows your identity.

    ```bash theme={null}
    anima email send \
      --agent <agent-id> \
      --to you@example.com \
      --subject "Hello from my Anima agent" \
      --body "This email was sent by an AI agent."
    ```

    The command prints the sent message's ID. To watch messages arrive and other events in real time, open the live event stream:

    ```bash theme={null}
    anima tail
    ```
  </Step>

  <Step title="Provision a phone number (optional)">
    On a Starter tier or above, give the same agent a phone number for SMS and voice:

    ```bash theme={null}
    anima phone provision --agent <agent-id> --country US --capabilities sms,voice
    ```

    Then text a number you control:

    ```bash theme={null}
    anima phone send-sms --agent <agent-id> --to +15551234567 --body "Texting from my Anima agent."
    ```

    See [Phone & Voice](/phone) for the full SMS-then-call walkthrough.
  </Step>
</Steps>

## Use it from code

The same platform is available from the official SDKs. Once onboarding has provisioned an agent, use its ID to send from your application. Set `ANIMA_API_KEY` in your environment (the CLI stored your key under `~/.anima`), or pass the key to the client directly.

<Tabs>
  <Tab title="Node.js">
    ```bash theme={null}
    npm install @anima-labs/sdk
    ```

    ```ts theme={null}
    import { Anima } from "@anima-labs/sdk";

    const anima = new Anima({ apiKey: process.env.ANIMA_API_KEY });

    const message = await anima.messages.sendEmail({
      agentId: "agent_...",
      to: ["you@example.com"],
      subject: "Hello from my Anima agent",
      body: "This email was sent by an AI agent.",
    });

    console.log(message.id, message.status);
    ```
  </Tab>

  <Tab title="Python">
    ```bash theme={null}
    pip install anima-labs
    ```

    ```python theme={null}
    import os
    from anima import Anima

    anima = Anima(api_key=os.environ["ANIMA_API_KEY"])

    message = anima.messages.send_email(
        agent_id="agent_...",
        to=["you@example.com"],
        subject="Hello from my Anima agent",
        body="This email was sent by an AI agent.",
    )

    print(message.id, message.status)
    ```
  </Tab>

  <Tab title="Go">
    ```bash theme={null}
    go get github.com/anima-labs-ai/go
    ```

    ```go theme={null}
    package main

    import (
    	"context"
    	"fmt"
    	"log"
    	"os"

    	anima "github.com/anima-labs-ai/go"
    )

    func main() {
    	client := anima.NewClient(os.Getenv("ANIMA_API_KEY"))

    	msg, err := client.Messages.SendEmail(context.Background(), anima.SendEmailParams{
    		AgentID: "agent_...",
    		To:      []string{"you@example.com"},
    		Subject: "Hello from my Anima agent",
    		Body:    "This email was sent by an AI agent.",
    	})
    	if err != nil {
    		log.Fatal(err)
    	}
    	fmt.Println(msg.ID, msg.Status)
    }
    ```
  </Tab>
</Tabs>

The REST API lives at `https://api.useanima.sh/v1` and accepts your key as either a `Bearer` token or an `X-API-Key` header.

## Next steps

<CardGroup cols={2}>
  <Card title="For AI Agents" icon="robot" href="/ai-agents">
    Let your agent set itself up from `skill.md`, and connect the docs and product MCP servers.
  </Card>

  <Card title="Connect your AI client" icon="plug" href="/integrations">
    Wire Anima's tools into Claude Code, Cursor, Claude Desktop, VS Code, and Windsurf.
  </Card>

  <Card title="Quickstart: Vault" icon="lock" href="/quickstart-vault">
    Store credentials your agent can use without exposing raw secrets to the model.
  </Card>

  <Card title="SDKs" icon="code" href="/sdks">
    Typed clients for Node.js, Python, and Go.
  </Card>
</CardGroup>
