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

# Runtime API

> The Agent runtime surface: the Agent base class, the message log, the task scheduler, and durable state.

Everything the Agent SDK adds lives on the `Agent` base class, imported from
`@telnyx/edge-runtime`:

```ts theme={null}
import { Agent } from "@telnyx/edge-runtime";
```

The surface splits into four areas:

| Area                  | Entry points                                                                                       | Reference                                                |
| --------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| The base class itself | type parameters, hooks, reserved methods                                                           | [Agent Class](/docs/agent-sdk/api-reference/agent)       |
| Conversation history  | `this.messages.*`                                                                                  | [Message Log](/docs/agent-sdk/api-reference/message-log) |
| Durable timers        | `this.queue()`, `this.schedule()`, `this.every()`, `this.cancelSchedule()`, `this.listSchedules()` | [Scheduling](/docs/agent-sdk/api-reference/scheduling)   |
| Durable state         | `this.getState()`, `this.setState()`, `this.replaceState()`                                        | [State](/docs/agent-sdk/api-reference/state)             |

Two rules apply across the whole surface:

* **Every member is `protected`** — this is an inside-the-class API, called from your
  own methods. It is not part of the RPC surface your subclass exposes to stubs.
* **`alarm()` is claimed by the SDK.** The task scheduler runs on the actor's single
  alarm slot. Do not override `alarm()` in an `Agent` subclass — schedule a
  [task](/docs/agent-sdk/api-reference/scheduling) instead. (On a plain
  `StatefulActor`, `alarm()` remains yours — see
  [Alarms](/docs/edge-compute/stateful-actors/alarms).)

Everything from `StatefulActor` is still there — `this.ctx`, `this.env`, RPC dispatch,
`fetch()` — see the
[StatefulActor Runtime API](/docs/edge-compute/stateful-actors/api-reference).
