Metadata-Version: 2.4
Name: everpod-ai
Version: 0.1.0
Summary: Official Python SDK for the Everpod API.
Author-email: Everpod <support@everpod.ai>
License-Expression: MIT
Project-URL: Homepage, https://everpod.ai
Project-URL: Documentation, https://everpod.ai/docs/api
Project-URL: Repository, https://github.com/everpod-ai/sdk-python
Project-URL: Issues, https://github.com/everpod-ai/sdk-python/issues
Keywords: everpod,ai-agents,agent-hosting,openclaw,mcp,sdk
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Everpod SDK for Python

The official Python client for the [Everpod API](https://everpod.ai/docs/api).

Everpod runs an AI agent on a pod: a private, always-on cloud computer of its own. A key lets an agent or an app you trust see your pods and start a new one for you, which you then pay for on everpod.ai. It can't pay, change or cancel a plan, delete anything, or open your agent's control panel.

If you are connecting an agent such as Claude Code or Codex, you do not need this library: point it at Everpod's MCP server, as the [API reference](https://everpod.ai/docs/api) shows.

## Install

```
pip install everpod-ai
```

Python 3.9 or later. No dependencies.

## Use

To make a key, open [everpod.ai/account/keys](https://everpod.ai/account/keys) and sign in with your email address and the code we send you. If you have no account yet, signing in makes one. Give the key to the library from an environment variable.

```python
import os

from everpod_ai import Everpod

everpod = Everpod(os.environ["EVERPOD_API_KEY"])

# Start a pod under the name you want for its agent. Nothing is charged:
# the pod stays unpaid until you open pay_url in a browser and pay there.
pod = everpod.start_pod("Otto")
print(pod["status"], pod["pay_url"])

# The pods on your account, oldest first.
pods = everpod.list_pods()

# One pod by its id: how to check whether it has been paid for, and whether it is ready.
same = everpod.get_pod(pod["id"])
```

While your account has an unpaid pod, starting another returns that same pod, renamed if the name differs.

A pod's fields and what each status means are in the [API reference](https://everpod.ai/docs/api).

## When a request is refused

A refusal raises an `EverpodError`. Its `message` is the API's own sentence, which says what happened and what to do next; `code` and `status` are the refusal's.

```python
from everpod_ai import EverpodError

try:
    everpod.get_pod(pod_id)
except EverpodError as error:
    print(error.code, error.status, error.message)
```

## Questions

[support@everpod.ai](mailto:support@everpod.ai)

## License

MIT
