
# Quickstart

Create an agent, copy its key and send your first message. Takes about two minutes.

## 1. Create an agent

1. Sign in at [app.cestra.ai](https://app.cestra.ai).
2. Open **Developer** and click **New agent**.
3. Give it a name, for example "Release bot", and pick a colour.
4. Copy the API key. It starts with `cs_live_` and is **shown once**. If you lose it, create a new key and revoke the old one.

Keep the key out of your repository. An environment variable works well:

```sh
export CESTRA_KEY=cs_live_...
```

## 2. Send something

Pick the path that matches what you're connecting.

### Claude Code, Codex or Cursor (MCP)

```sh
claude mcp add cestra --env CESTRA_KEY=cs_live_... -- npx -y https://docs.cestra.ai/dl/cestra-mcp.tgz
```

Then tell Claude: *"Send me 'Hello from Cestra' on Cestra."* For Codex and Cursor, see [MCP](/mcp).

### Python

```sh
pip install https://docs.cestra.ai/dl/cestra.tar.gz
```

```python
from cestra import Agent

agent = Agent()  # reads CESTRA_KEY
agent.send("Hello from Cestra")

reply = agent.ask("Deploy to production?", ["Deploy", "Not now"]).wait(timeout=600)
print(reply.answer)  # "Deploy", "Not now", or None if nobody answered in time
```

### JavaScript / TypeScript

```sh
npm install https://docs.cestra.ai/dl/cestra-sdk.tgz
```

```js
import { Agent } from '@cestra/sdk';

const agent = new Agent({ key: process.env.CESTRA_KEY });
await agent.send('Hello from Cestra');

const ask = await agent.ask('Deploy to production?', ['Deploy', 'Not now']);
const reply = await ask.wait({ timeoutSec: 600 });
console.log(reply.answer);
```

### Any language (curl)

```sh
curl https://api.cestra.ai/v1/messages \
  -H "Authorization: Bearer $CESTRA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello from Cestra"}'
```

## 3. Check the app

Your message shows up in the agent's thread. The agent's status dot turns green while it's in contact with Cestra. It goes grey about 90 seconds after the last request.

## Next

- Wait for replies in a loop: [Python](/python#receiving-events), [JavaScript](/javascript#receiving-events) or [REST events](/rest-api#events).
- Show progress with [jobs](/python#jobs) and results with [artifacts](/artifacts).
- Share the agent with a teammate from its info panel, and they become an Operator.
